diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RErrorHandling.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RErrorHandling.java index 5b78bfd0da8f665ad8d75373985864007a377ff5..fd95e657f4337607f7886cb8b8635c29516d3793 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RErrorHandling.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RErrorHandling.java @@ -767,7 +767,7 @@ public class RErrorHandling { // (is 74 a given percentage of console width?) if (preamble.length() + 1 + message.length() >= 74) { // +1 is for the extra space following the colon - return preamble + " \n " + message; + return preamble + "\n " + message; } else { return preamble + " " + message; } diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/Utils.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/Utils.java index 5dc6ed526481acc3228f4795854c88f5fa73af48..7f887376309f6383d770b73bcbbbeab0277b5438 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/Utils.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/Utils.java @@ -475,7 +475,17 @@ public final class Utils { // Truffle/R system has started return null; } - return RArguments.unwrap(frameInstance.getFrame(FrameAccess.MATERIALIZE)); + Frame frame = RArguments.unwrap(frameInstance.getFrame(FrameAccess.MATERIALIZE)); + if (!RArguments.isRFrame(frame)) { + return Truffle.getRuntime().iterateFrames(new FrameInstanceVisitor<Frame>() { + @Override + public Frame visitFrame(FrameInstance instance) { + Frame current = RArguments.unwrap(instance.getFrame(FrameAccess.MATERIALIZE)); + return RArguments.isRFrame(current) ? current : null; + } + }); + } + return frame; } private static final class TracebackVisitor implements FrameInstanceVisitor<Frame> { diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test index fa331b0089c5f671ce54f0bc0945df6b229f5505..30c1a0d1c39f8ba678bccc83e0e4ce225be1cecf 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test @@ -642,11 +642,11 @@ Error: no slot of name "foo" for this object of class "classRepresentation" #{ getClass("ClassUnionRepresentation")@virtual } [1] FALSE -##com.oracle.truffle.r.test.S4.TestS4.testSlotAccess#Ignored.ImplementationError# +##com.oracle.truffle.r.test.S4.TestS4.testSlotAccess#Ignored.SideEffects# #{ setClass("foo", contains="numeric"); x<-new("foo"); res<-slot(x, ".Data"); removeClass("foo"); res } numeric(0) -##com.oracle.truffle.r.test.S4.TestS4.testSlotAccess#Ignored.ImplementationError# +##com.oracle.truffle.r.test.S4.TestS4.testSlotAccess#Ignored.SideEffects# #{ setClass("foo", contains="numeric"); x<-new("foo"); res<-x@.Data; removeClass("foo"); res } numeric(0) @@ -1269,7 +1269,7 @@ $vectors NULL -##com.oracle.truffle.r.test.builtins.TestBuiltin_La.testLa4#Ignored.Unimplemented# +##com.oracle.truffle.r.test.builtins.TestBuiltin_La.testLa4# #argv <- list('S', structure(c(1, 0, 0, 0, 0, 1.4142135623731, 0, 0, 0, 0, 1.73205080756888, 0, 0, 0, 0, 2), .Dim = c(4L, 4L), Dimnames = list(character(0), character(0))), c(2, 1.73205080756888, 1.4142135623731, 1), structure(c(0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0), .Dim = c(4L, 4L)), structure(c(0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0), .Dim = c(4L, 4L))); .Internal(La_svd(argv[[1]], argv[[2]], argv[[3]], argv[[4]], argv[[5]])) $d [1] 2.000000 1.732051 1.414214 1.000000 @@ -1327,7 +1327,7 @@ $vt #argv <- list(structure(c(1, 1, 3, 3), .Dim = c(2L, 2L)), 'O'); .Internal(La_dgecon(argv[[1]], argv[[2]])) [1] 0 -##com.oracle.truffle.r.test.builtins.TestBuiltin_La.testLa8#Ignored.Unimplemented# +##com.oracle.truffle.r.test.builtins.TestBuiltin_La.testLa8# #argv <- list('N', structure(c(-4, 0, 0, 0, 0, 0, 0, -406.725, 41.7955066364795, 0, 0, 0, 0, 0, -1550.79375, 381.717151319926, 49.8228991342168, 0, 0, 0, 0, -1277.325, 224.617432123818, -31.1858918860748, -282.060212912726, 0, 0, 0, -1042.675, 125.261805546114, -29.9849484767744, 164.425554254677, -170.353263600129, 0, 0, -469.696, 26.3795103523805, 4.19691803785862, -3.18974110831568, 0.0462484557378925, 1.46320172717486, 0, -7818, 18.2758880432689, 1.77525956575195, -1.45298766739792, -0.449176219307484, -0.281900648530911, -0.669305080560524), .Dim = c(7L, 7L), .Dimnames = list(c('1947', '1948', '1949', '1950', '1951', '1952', '1953'), c('(Intercept)', 'GNP.deflator', 'GNP', 'Unemployed', 'Armed.Forces', 'Population', 'Year'))), c(8164.12940108939, 457.24498274114, 324.584423503013, 134.312174464868, 4.95553195929945, 1.41954832076337, 0.000342370904183799), structure(0, .Dim = c(1L, 1L)), structure(0, .Dim = c(1L, 1L))); .Internal(La_svd(argv[[1]], argv[[2]], argv[[3]], argv[[4]], argv[[5]])) $d [1] 8.164129e+03 4.572450e+02 3.245844e+02 1.343122e+02 4.955532e+00 @@ -7417,7 +7417,7 @@ In matrix(1:4, 3, 2) : [2,] 3 4 [3,] 5 6 -##com.oracle.truffle.r.test.builtins.TestBuiltin_asmatrix.testMatrix#Ignored.ReferenceError# +##com.oracle.truffle.r.test.builtins.TestBuiltin_asmatrix.testMatrix# #{ matrix(1i,10,10) } [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 0+1i 0+1i 0+1i 0+1i 0+1i 0+1i 0+1i 0+1i 0+1i 0+1i @@ -7503,7 +7503,7 @@ In matrix(c(1, 2, 3, 4), 3, 2) : [9,] 0+ 1i 0+ 1i 0+ 1i 0+ 1i 0+ 1i 0+ 1i 0+ 1i 0+ 1i 0+ 1i 0+ 1i [10,] 0+100i 0+100i 0+100i 0+100i 0+100i 0+100i 0+100i 0+100i 0+100i 0+100i -##com.oracle.truffle.r.test.builtins.TestBuiltin_asmatrix.testMatrix#Ignored.ReferenceError# +##com.oracle.truffle.r.test.builtins.TestBuiltin_asmatrix.testMatrix# #{ matrix(c(1i,NA),10,10) } [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 0+1i 0+1i 0+1i 0+1i 0+1i 0+1i 0+1i 0+1i 0+1i 0+1i @@ -22762,7 +22762,7 @@ FALSE #argv <- list(c(0.00508571428571428, 0.876285714285715), structure(1L, class = c('terminal', 'connection')), 69); .Internal(dput(argv[[1]], argv[[2]], argv[[3]])) c(0.00508571428571428, 0.876285714285715) -##com.oracle.truffle.r.test.builtins.TestBuiltin_dqr.testdqrcf#Ignored.OutputFormatting# +##com.oracle.truffle.r.test.builtins.TestBuiltin_dqr.testdqrcf# #.Fortran(.F_dqrcf, 1, 1L, 1L, 1, 1, 1L, 1, 1L) [[1]] [1] 1 @@ -24901,6 +24901,89 @@ NULL Warning message: In formals(argv[[1]]) : argument is not a function +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#.Internal(format(.GlobalEnv,FALSE,NA,0,0,3,TRUE,NA,'.')) +[1] "<environment: R_GlobalEnv>" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(1.1, scientific=-10) +[1] "1.1e+00" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(1.1, scientific=FALSE) +[1] "1.1" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(1.1, scientific=TRUE) +[1] "1.1e+00" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(1.1, scientific=c(-10, 1)) +Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, : + invalid 'scientific' argument + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(1.1, scientific=c(TRUE, FALSE)) +Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, : + invalid 'scientific' argument + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(1.6000085, digits=7) +[1] "1.600008" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(1.6001095, digits=7) +[1] "1.60011" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(1.60085, digits=5) +[1] "1.6009" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat#Ignored.OutputFormatting# +#format(1.6011095, digits=7) +[1] "1.601109" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(4.125e-04, digits=3) +[1] "0.000412" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(4.135e-04, digits=3) +[1] "0.000414" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(7) +[1] "7" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(7.42) +[1] "7.42" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(9.999999995, digits=10) +[1] "9.999999995" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(9.999999999995, digits=13); format(9.999999999995, digits=11) +[1] "9.999999999995" +[1] "10" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(c(7,42)) +[1] " 7" "42" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(c(7.42,42.7)) +[1] " 7.42" "42.70" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(c(7.42,42.7,NA)) +[1] " 7.42" "42.70" " NA" + +##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testFormat# +#format(c(9.99951, 13.1), digits=4) +[1] "10.0" "13.1" + ##com.oracle.truffle.r.test.builtins.TestBuiltin_format.testformat1#Output.IgnoreErrorMessage# #argv <- list(structure(c(0, 72.7, 56.4, 72.7, 0, 63.3, 56.4, 63.3, 0), .Dim = c(3L, 3L), .Dimnames = list(c('Girth', 'Height', 'Volume'), c('Girth', 'Height', 'Volume'))), FALSE, 7L, 0L, NULL, 3L, TRUE, NA, "."); .Internal(format(argv[[1]], argv[[2]], argv[[3]], argv[[4]], argv[[5]], argv[[6]], argv[[7]], argv[[8]], argv[[9]], , argv[[9]])) Error in .Internal(format(argv[[1]], argv[[2]], argv[[3]], argv[[4]], : @@ -69312,6 +69395,11 @@ In sum(argv[[1]]) : integer overflow - use sum(as.numeric(.)) #sum( ); [1] 0 +##com.oracle.truffle.r.test.builtins.TestBuiltin_summary.testSummary# +#summary(c(1.601,1.616)) + Min. 1st Qu. Median Mean 3rd Qu. Max. + 1.601 1.605 1.609 1.609 1.612 1.616 + ##com.oracle.truffle.r.test.builtins.TestBuiltin_summary.testsummary1#Ignored.OutputFormatting# #argv <- structure(list(object = structure(c(4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 3L, 4L, 3L, 4L, 4L, 4L, 4L, 2L, 4L, 3L, 4L, 4L, 4L, 2L), .Dim = c(6L, 4L), .Dimnames = structure(list(c('25-34', '35-44', '45-54', '55-64', '65-74', '75+'), c('0-39g/day', '40-79', '80-119', '120+')), .Names = c('', '')), class = 'table')), .Names = 'object');do.call('summary', argv) Number of cases in table: 88 @@ -74127,6 +74215,14 @@ In f() : foo Warning message: In f() : foo +##com.oracle.truffle.r.test.builtins.TestBuiltin_warning.testwarning# +#options(warn=1); f <- function() warning('foo'); f() +Warning in f() : foo + +##com.oracle.truffle.r.test.builtins.TestBuiltin_warning.testwarning# +#options(warn=1); f <- function() warning('foo'); f2 <- function() f(); f2() +Warning in f() : foo + ##com.oracle.truffle.r.test.builtins.TestBuiltin_warning.testwarning# #warning('foo') Warning message: diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_warning.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_warning.java index 32105348fa57130763f66c036128cdf7a7b1df13..bfdb68d4c6605342b937132948869c7d43c28705 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_warning.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_warning.java @@ -4,7 +4,7 @@ * http://www.gnu.org/licenses/gpl-2.0.html * * Copyright (c) 2014, Purdue University - * Copyright (c) 2014, 2016, Oracle and/or its affiliates + * Copyright (c) 2014, 2017, Oracle and/or its affiliates * * All rights reserved. */ @@ -22,6 +22,8 @@ public class TestBuiltin_warning extends TestBase { public void testwarning() { assertEval("warning('foo')"); assertEval("f <- function() warning('foo'); f()"); + assertEval("options(warn=1); f <- function() warning('foo'); f()"); assertEval("f <- function() warning('foo'); f2 <- function() f(); f2()"); + assertEval("options(warn=1); f <- function() warning('foo'); f2 <- function() f(); f2()"); } }