Skip to content

Commit bcc3ae5

Browse files
authored
Compact evaluated aesthetics (#2600)
Fixes #2599
1 parent 9f9b21a commit bcc3ae5

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

R/scale-type.R

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
find_scale <- function(aes, x, env) {
1+
find_scale <- function(aes, x, env = parent.frame()) {
2+
if (is.null(x)) {
3+
return(NULL)
4+
}
5+
26
type <- scale_type(x)
37
candidates <- paste("scale", aes, type, sep = "_")
48

R/scales-.r

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ scales_add_defaults <- function(scales, data, aesthetics, env) {
9797
if (is.null(new_aesthetics)) return()
9898

9999
datacols <- lapply(aesthetics[new_aesthetics], rlang::eval_tidy, data = data)
100+
datacols <- compact(datacols)
100101

101102
for (aes in names(datacols)) {
102103
scales$add(find_scale(aes, datacols[[aes]], env))

tests/testthat/test-scale-type.R

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
context("test-scale-type.R")
2+
3+
test_that("no scale for NULL aesthetic", {
4+
expect_equal(find_scale("colour", NULL), NULL)
5+
})
6+
7+
test_that("message + continuous for unknown type", {
8+
x <- structure(1:10, class = "ggplot2_foo")
9+
10+
expect_message(scale <- find_scale("colour", x), "ggplot2_foo")
11+
expect_s3_class(scale, "ScaleContinuous")
12+
})

0 commit comments

Comments
 (0)