From ed00ee815ece6718311c5c44c1642a0e372457bc Mon Sep 17 00:00:00 2001 From: eutwt <11261404+eutwt@users.noreply.github.com> Date: Thu, 31 Mar 2022 21:16:37 -0400 Subject: [PATCH 1/3] add name of input for `abort` --- R/case_when.R | 9 +++++++-- tests/testthat/test-case-when.R | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/R/case_when.R b/R/case_when.R index 4c86c84f8c..c029b17109 100644 --- a/R/case_when.R +++ b/R/case_when.R @@ -171,10 +171,15 @@ case_when <- function(...) { replaced <- rep(FALSE, m) for (i in seq_len(n)) { - out <- replace_with(out, query[[i]] & !replaced, value[[i]], NULL, error_call = error_call) + out <- replace_with( + out, + query[[i]] & !replaced, + value[[i]], + name = fmt_calls(pair$rhs[i]), + error_call = error_call + ) replaced <- replaced | (query[[i]] & !is.na(query[[i]])) } - out } diff --git a/tests/testthat/test-case-when.R b/tests/testthat/test-case-when.R index 904855a7a4..457eb290fa 100644 --- a/tests/testthat/test-case-when.R +++ b/tests/testthat/test-case-when.R @@ -208,6 +208,10 @@ test_that("case_when() give meaningful errors", { (expect_error( case_when(~1:2) )) + + (expect_error( + case_when(c(TRUE, FALSE) ~ c(3, 4), TRUE ~ c('a', 'b')) + )) }) }) From 5c9441b1748a78c7c629932a7f047b379d37370b Mon Sep 17 00:00:00 2001 From: eutwt <11261404+eutwt@users.noreply.github.com> Date: Thu, 31 Mar 2022 21:55:26 -0400 Subject: [PATCH 2/3] add back mistakenly removed blank line --- R/case_when.R | 1 + 1 file changed, 1 insertion(+) diff --git a/R/case_when.R b/R/case_when.R index c029b17109..67451a8b32 100644 --- a/R/case_when.R +++ b/R/case_when.R @@ -180,6 +180,7 @@ case_when <- function(...) { ) replaced <- replaced | (query[[i]] & !is.na(query[[i]])) } + out } From ec44cc003de6584297e1fa32786968ff85a6090d Mon Sep 17 00:00:00 2001 From: eutwt <11261404+eutwt@users.noreply.github.com> Date: Fri, 15 Apr 2022 14:21:17 -0400 Subject: [PATCH 3/3] Use correct RHS Co-Authored-By: Eric Newkirk <55846615+ericnewkirk@users.noreply.github.com> --- R/case_when.R | 2 +- tests/testthat/test-case-when.R | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/case_when.R b/R/case_when.R index 67451a8b32..7a8633b585 100644 --- a/R/case_when.R +++ b/R/case_when.R @@ -175,7 +175,7 @@ case_when <- function(...) { out, query[[i]] & !replaced, value[[i]], - name = fmt_calls(pair$rhs[i]), + name = fmt_calls(quos_pairs[[i]]$rhs[2]), error_call = error_call ) replaced <- replaced | (query[[i]] & !is.na(query[[i]])) diff --git a/tests/testthat/test-case-when.R b/tests/testthat/test-case-when.R index 457eb290fa..e1b995670a 100644 --- a/tests/testthat/test-case-when.R +++ b/tests/testthat/test-case-when.R @@ -210,7 +210,7 @@ test_that("case_when() give meaningful errors", { )) (expect_error( - case_when(c(TRUE, FALSE) ~ c(3, 4), TRUE ~ c('a', 'b')) + case_when(c(TRUE, FALSE) ~ c(3, 4), TRUE ~ c('a', 'b'), TRUE ~ c(5, 6)) )) })