From c04bca6789aa948dde9d13c53fbd6297bb5ad054 Mon Sep 17 00:00:00 2001 From: Maximilian Muecke Date: Fri, 13 Mar 2026 20:10:01 +0100 Subject: [PATCH] fix: reject Date and POSIXt in is_class_numeric --- src/helper.c | 2 +- tests/testthat/test_checkNumber.R | 2 ++ tests/testthat/test_checkNumeric.R | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/helper.c b/src/helper.c index b350958d..a36b7eb6 100644 --- a/src/helper.c +++ b/src/helper.c @@ -110,7 +110,7 @@ Rboolean is_class_integer(SEXP x) { return isInteger(x); } Rboolean is_class_integerish(SEXP x) { return isIntegerish(x, INTEGERISH_DEFAULT_TOL, TRUE); } Rboolean is_class_numeric(SEXP x) { switch(TYPEOF(x)) { - case REALSXP: return TRUE; + case REALSXP: return !(inherits(x, "Date") || inherits(x, "POSIXt")); case INTSXP: return !inherits(x, "factor"); } return FALSE; diff --git a/tests/testthat/test_checkNumber.R b/tests/testthat/test_checkNumber.R index 1c7d5264..cd457108 100644 --- a/tests/testthat/test_checkNumber.R +++ b/tests/testthat/test_checkNumber.R @@ -11,6 +11,8 @@ test_that("checkNumber", { expect_false(testNumber(TRUE)) expect_false(testNumber(FALSE)) + expect_false(testNumber(as.Date("2000-01-01"))) + expect_false(testNumber(as.POSIXct("2000-01-01"))) expect_true(testNumber(1L)) expect_true(testNumber(1.)) expect_false(testNumber(NA)) diff --git a/tests/testthat/test_checkNumeric.R b/tests/testthat/test_checkNumeric.R index 63f2893b..2e0e8e49 100644 --- a/tests/testthat/test_checkNumeric.R +++ b/tests/testthat/test_checkNumeric.R @@ -10,6 +10,8 @@ test_that("checkNumeric", { expect_false(testNumeric(NULL)) expect_false(testNumeric(TRUE)) expect_false(testNumeric(FALSE)) + expect_false(testNumeric(as.Date("2000-01-01"))) + expect_false(testNumeric(as.POSIXct("2000-01-01"))) expect_true(testNumeric(NA_character_)) expect_true(testNumeric(NA_real_)) expect_true(testNumeric(NaN))