Rev 54719 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
library(compiler)#### Test code for constant folding##makeCenv <- compiler:::makeCenvcheckConst <- compiler:::checkConstconstantFoldSym <- compiler:::constantFoldSymconstantFold <- compiler:::constantFold## using a global environmentce <- makeCenv(.GlobalEnv)stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 3)),checkConst(base::pi)))stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 2)),NULL))stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 1)),NULL))stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 0)),NULL))stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 3, env = ce)),checkConst(1 + 2)))stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 2, env = ce)),checkConst(1 + 2)))stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 1, env = ce)),NULL))stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 0, env = ce)),NULL))stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 3, env = ce)),checkConst(sqrt(2))))stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 2, env = ce)),NULL))stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 1, env = ce)),NULL))stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 0, env = ce)),NULL))## using a namespace environmentce <- makeCenv(getNamespace("stats"))stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 3)),list(value = base::pi)))stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 2)),list(value = base::pi)))stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 1)),checkConst(base::pi)))stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 0)),NULL))stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 3, env = ce)),checkConst(1 + 2)))stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 2, env = ce)),checkConst(1 + 2)))stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 1, env = ce)),checkConst(1 + 2)))stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 0, env = ce)),NULL))stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 3, env = ce)),checkConst(sqrt(2))))stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 2, env = ce)),checkConst(sqrt(2))))stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 1, env = ce)),checkConst(sqrt(2))))stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 0, env = ce)),NULL))