From b5b15392096d4b8f2aebfa89615f56aa7fe15283 Mon Sep 17 00:00:00 2001 From: Sebastian Fischer Date: Wed, 20 May 2026 08:12:23 +0200 Subject: [PATCH] fix(pad): padding value must be 0-dimensional --- R/op-pad.R | 8 ++++++++ tests/testthat/_snaps/op-pad.md | 11 +++++++++++ tests/testthat/test-op-pad.R | 8 ++++++++ 3 files changed, 27 insertions(+) diff --git a/R/op-pad.R b/R/op-pad.R index b6182098..06df4e9f 100644 --- a/R/op-pad.R +++ b/R/op-pad.R @@ -14,6 +14,14 @@ infer_types_pad <- function( ) { assert_vts_are_tensors(operand, padding_value) + # (I2): padding_value must be a 0-dimensional tensor. + if (length(shape(padding_value)) != 0L) { + cli_abort(c( + "{.arg padding_value} must be a 0-dimensional tensor.", + x = "Got shape {shapevec_repr(shape(padding_value))}." + )) + } + # (C1) assert_vts_have_same_dtype(operand, padding_value) diff --git a/tests/testthat/_snaps/op-pad.md b/tests/testthat/_snaps/op-pad.md index 92a7d37d..4f5787b5 100644 --- a/tests/testthat/_snaps/op-pad.md +++ b/tests/testthat/_snaps/op-pad.md @@ -34,3 +34,14 @@ ! edge_padding_low must have length equal to operand rank x length(edge_padding_low): 1, operand_rank: 2 +--- + + Code + infer_types_pad(operand, padding_value, edge_padding_low = cnst(low, "i64", + length(low)), edge_padding_high = cnst(high, "i64", length(high)), + interior_padding = cnst(interior, "i64", length(interior))) + Condition + Error in `infer_types_pad()`: + ! `padding_value` must be a 0-dimensional tensor. + x Got shape (2). + diff --git a/tests/testthat/test-op-pad.R b/tests/testthat/test-op-pad.R index 55a06078..fe6947ef 100644 --- a/tests/testthat/test-op-pad.R +++ b/tests/testthat/test-op-pad.R @@ -85,4 +85,12 @@ test_that("errors", { ) # (C2) wrong length check(vt("f32", c(2L, 3L)), vt("f32", integer()), c(0L), c(0L, 0L), c(0L, 0L)) + # (I2) padding_value must be a 0-dimensional tensor + check( + vt("f32", c(2L, 3L)), + vt("f32", 2L), + c(0L, 0L), + c(0L, 0L), + c(0L, 0L) + ) })