blob: 6afab9c2ce8d5e87008a4ac0cb11d2fbcf7c850b [file] [log] [blame]
## Check that R_Visible is being set properly.
library(compiler)
vcheck <- function(expr)
stopifnot(withVisible(eval(compile(substitute(expr))))$visible)
asfoo <- function(x) structure(x, class = "foo")
xfoo <- asfoo(1)
## FastMath1
vcheck(sqrt(invisible(2)))
vcheck(exp(invisible(2)))
vcheck(sqrt(invisible(2L)))
vcheck(exp(invisible(2L)))
vcheck(sqrt(invisible(xfoo)))
vcheck(exp(invisible(xfoo)))
## FastUnary
vcheck(+ invisible(2))
vcheck(- invisible(2))
vcheck(+ invisible(2L))
vcheck(- invisible(2L))
vcheck(+ invisible(xfoo))
vcheck(- invisible(xfoo))
## FastBinary
vcheck(1 + invisible(2))
vcheck(1 - invisible(2))
vcheck(3 * invisible(2))
vcheck(1 / invisible(2))
vcheck(3 ^ invisible(2))
vcheck(1 + invisible(2L))
vcheck(1L + invisible(2))
vcheck(1 + invisible(xfoo))
## FastRelop2
vcheck(1 == invisible(2))
vcheck(1 != invisible(2))
vcheck(1 < invisible(2))
vcheck(1 <= invisible(2))
vcheck(1 >= invisible(2))
vcheck(1 > invisible(2))
vcheck(1 > invisible(2L))
vcheck(1L > invisible(2L))
vcheck(1 > invisible(xfoo))
## Builtin2
vcheck(1 & invisible(2))
vcheck(0 | invisible(2))
vcheck(0 | invisible(2L))
vcheck(0L | invisible(2L))
vcheck(0 | invisible(xfoo))
## Builtin1
vcheck(! invisible(2))
vcheck(! invisible(2L))
vcheck(! invisible(xfoo))
## DO_VECSUBSET
vcheck(1[invisible(1)])
vcheck(xfoo[invisible(1)])
## MATSUBSET_PTR
vcheck(matrix(1)[1, invisible(1)])
vcheck(asfoo(matrix(1))[1, invisible(1)])
## SUBSET_N_PTR
vcheck(array(1, c(1, 1, 1))[1, 1, invisible(1)])
vcheck(asfoo(array(1, c(1, 1, 1)))[1, 1, invisible(1)])
## DO_DFLTDISPATCH
vcheck(invisible(1)[])
vcheck(matrix(1)[,invisible(1)])
## not sure how to trigger [[ issue
vcheck(c(invisible(2)))
vcheck(xfoo[])
## DOLLAR
vcheck(invisible(list(x = 1))$x)
`$.foo` <- function(x, y) invisible(x)
vcheck(xfoo$bar)
## ISINTEGER
vcheck(is.integer(invisible(1)))
vcheck(is.integer(invisible(xfoo)))
## DO_ISTYPE
vcheck(is.logical(invisible(1)))
vcheck(is.double(invisible(1)))
vcheck(is.complex(invisible(1)))
vcheck(is.character(invisible(1)))
vcheck(is.symbol(invisible(1)))
## DO_ISTEST
vcheck(is.null(invisible(1)))
vcheck(is.object(invisible(1)))
vcheck(is.numeric(invisible(1)))
## &&, ||
vcheck(invisible(TRUE) || FALSE)
vcheck(FALSE || invisible(FALSE))
vcheck(invisible(FALSE) && FALSE)
vcheck(TRUE && invisible(TRUE))
## LOG, LOGBASE, MATH1
vcheck(log(invisible(2)))
vcheck(log(2, invisible(2)))
vcheck(log(invisible(xfoo)))
vcheck(log(xfoo, invisible(2)))
vcheck(sin(invisible(2)))
vcheck(cos(invisible(2)))
## DOTCALL
## COLON, SEQLEN, SEQALONG
vcheck(1 : invisible(2))
vcheck(1 : invisible(xfoo))
vcheck(seq_len(invisible(2)))
vcheck(seq_len(invisible(xfoo)))
vcheck(seq_along(invisible(1)))
vcheck(seq_along(invisible(xfoo)))