diff --git a/NEWS.md b/NEWS.md index 638640f..47590a3 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,8 @@ # lobstr (development version) +* `ref()` lists all contents of environments even those with names beginning + with `.` (@krlmlr, #53). + * `obj_size()` and `sxp()` now support non-nil terminated pairlists. * `obj_sizes()` no longer returns NA for objects larger than 2^31 bytes (#45) diff --git a/R/ref.R b/R/ref.R index 9d7b34f..be743ac 100644 --- a/R/ref.R +++ b/R/ref.R @@ -60,7 +60,7 @@ ref_tree <- function(x, character = FALSE, seen = child_env(emptyenv()), layout if (is.list(x)) { subtrees <- lapply(x, ref_tree, layout = layout, seen = seen, character = character) } else if (is.environment(x)) { - subtrees <- lapply(as.list(x), ref_tree, layout = layout, seen = seen, character = character) + subtrees <- lapply(as.list(x, all.names = TRUE), ref_tree, layout = layout, seen = seen, character = character) } else if (is.character(x)) { subtrees <- ref_tree_chr(x, layout = layout, seen = seen) } diff --git a/tests/testthat/_snaps/ref.md b/tests/testthat/_snaps/ref.md index 24d6dbd..ce1e7af 100644 --- a/tests/testthat/_snaps/ref.md +++ b/tests/testthat/_snaps/ref.md @@ -33,6 +33,15 @@ ├─b = [2:0x002] └─c = [1:0x001] +# environment shows objects beginning with . + + Code + e <- env(. = 1:10) + ref(e) + Output + █ [1:0x001] + └─. = [2:0x002] + # can display ref to global string pool on request Code diff --git a/tests/testthat/test-ref.R b/tests/testthat/test-ref.R index 878e7d9..4ac976c 100644 --- a/tests/testthat/test-ref.R +++ b/tests/testthat/test-ref.R @@ -28,6 +28,17 @@ test_that("basic environment display", { }) }) +test_that("environment shows objects beginning with .", { + skip_on_os("windows") + + test_addr_reset() + expect_snapshot({ + e <- env(. = 1:10) + ref(e) + }) +}) + + test_that("can display ref to global string pool on request", { skip_on_os("windows")