From 1fd263b6d108fed0acb56591cca5cba34bf9e8a0 Mon Sep 17 00:00:00 2001
From: Lukas Stadler <lukas.stadler@oracle.com>
Date: Thu, 17 Nov 2016 17:15:49 +0100
Subject: [PATCH] =?UTF-8?q?add=20tests=20for=20=E2=80=9Cunserialize?=
 =?UTF-8?q?=E2=80=9D,=20enable=20passing=20tests?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../truffle/r/test/ExpectedTestOutput.test    | 367 +++++++++++++++---
 .../r/test/builtins/TestBuiltin_args.java     |   2 +-
 .../test/builtins/TestBuiltin_asfunction.java |   4 +-
 .../builtins/TestBuiltin_bitwiseShiftL.java   |   3 +-
 .../r/test/builtins/TestBuiltin_deparse.java  |   8 +-
 .../r/test/builtins/TestBuiltin_digamma.java  |   2 +-
 .../r/test/builtins/TestBuiltin_dim.java      |   2 +-
 .../r/test/builtins/TestBuiltin_lgamma.java   |   2 +-
 .../r/test/builtins/TestBuiltin_max.java      |   2 +-
 .../r/test/builtins/TestBuiltin_min.java      |   2 +-
 .../r/test/builtins/TestBuiltin_signif.java   |   2 +-
 .../builtins/TestBuiltin_unserialize.java     |  59 ++-
 .../library/base/TestSimpleSequences.java     |   7 +-
 .../test/library/base/TestSimpleVectors.java  |  52 +--
 14 files changed, 407 insertions(+), 107 deletions(-)

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 ad7bb48663..14842593f1 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
@@ -9540,7 +9540,7 @@ In bitwShiftL(c(1, 2, 3, 4), c("a")) : NAs introduced by coercion
 #{ bitwShiftL(c(25,57,66), c(10,20,30,40,50,60)) }
 [1]    25600 59768832       NA       NA       NA       NA
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_bitwiseShiftL.testBitwiseFunctions#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_bitwiseShiftL.testBitwiseFunctions#
 #{ bitwShiftL(c(3+3i), c(3,2,4)) }
 Error in bitwShiftL(c(3 + (0+3i)), c(3, 2, 4)) :
   unimplemented type 'complex' in 'bitShiftL'
@@ -15844,11 +15844,11 @@ Error in print(x, y) :
 #deparse(quote(cat(-17)))
 [1] "cat(-17)"
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_deparse.testDeparse#Ignored.OutputFormatting#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_deparse.testDeparse#
 #deparse(quote(cat(-199.1234-5i)))
 [1] "cat(-199.1234 - (0+5i))"
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_deparse.testDeparse#Ignored.OutputFormatting#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_deparse.testDeparse#
 #deparse(quote(cat(-5i)))
 [1] "cat(-(0+5i))"
 
@@ -15920,7 +15920,7 @@ Error in print(x, y) :
 #deparse(quote(cat(17)))
 [1] "cat(17)"
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_deparse.testDeparse#Ignored.OutputFormatting#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_deparse.testDeparse#
 #deparse(quote(cat(199.1234-5i)))
 [1] "cat(199.1234 - (0+5i))"
 
@@ -17227,7 +17227,7 @@ $foo
 #{ digamma(1) }
 [1] -0.5772157
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_digamma.testDiGamma#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_digamma.testDiGamma#
 #{ digamma(1+1i) }
 Error in digamma(1 + (0+1i)) : unimplemented complex function
 
@@ -17444,7 +17444,7 @@ Error in dim(x) <- integer() : length-0 dimension vector is invalid
 #{ x<-1:12; dim(x)<-c(12); x }
  [1]  1  2  3  4  5  6  7  8  9 10 11 12
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_dim.testDimensions#Output.IgnoreWarningContext#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_dim.testDimensions#
 #{ x<-1:12; dim(x)<-c(12+10i); x }
  [1]  1  2  3  4  5  6  7  8  9 10 11 12
 Warning message:
@@ -24924,7 +24924,7 @@ FALSE FALSE
 #argv <- list(structure(list(Topic = c('myTst-package', 'foo-class', 'myTst', 'show,foo-method', 'show,foo-method', 'show-methods'), File = c('myTst-package', 'foo-class', 'myTst-package', 'foo-class', 'show-methods', 'show-methods')), .Names = c('Topic', 'File'), row.names = c(3L, 1L, 4L, 2L, 6L, 5L), class = 'data.frame'));is.matrix(argv[[1]]);
 [1] FALSE
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_isna.testIsNA#Ignored.Unimplemented#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_isna.testIsNA#
 #is.na(data.frame(col1=1:5, col2=c(NA, 1, NA, 2, NA)))
       col1  col2
 [1,] FALSE  TRUE
@@ -25040,7 +25040,7 @@ FALSE
 [445]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
 [457] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_isna.testisna13#Ignored.Unknown#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_isna.testisna13#
 #argv <- list(structure(list(VAR1 = c(1, 2, 3, 4, 5), VAR3 = c(1, 1, 1, 1, NA)), .Names = c('VAR1', 'VAR3'), class = 'data.frame', row.names = c(NA, -5L)));is.na(argv[[1]]);
       VAR1  VAR3
 [1,] FALSE FALSE
@@ -25409,7 +25409,7 @@ logical(0)
 #argv <- list(complex(real = 3, imaginary = -Inf));do.call('is.null', argv)
 [1] FALSE
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_isnull.testisnull16#Ignored.Unknown#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_isnull.testisnull16#
 #argv <- list(function(file = ifelse(onefile, 'Rplots.pdf', 'Rplot%03d.pdf'),     width, height, onefile, family, title, fonts, version, paper,     encoding, bg, fg, pointsize, pagecentre, colormodel, useDingbats,     useKerning, fillOddEven, compress) { invisible() });do.call('is.null', argv)
 [1] FALSE
 
@@ -26849,7 +26849,7 @@ Error in lengths(quote(a)) : 'x' must be a list or atomic vector
 #{ x <- 1 ; levels(x)<-4.5; levels(x);}
 [1] 4.5
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_levels.testLevels#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_levels.testLevels#Output.IgnoreErrorContext#
 #{ x <- 1 ; levels(x)<-NULL; levels(notx)}
 Error in levels(notx) : object 'notx' not found
 
@@ -27244,7 +27244,7 @@ Levels: age1824 age2534 age3544 age4554 age5564 age6599
 #{ lgamma(1) }
 [1] 0
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_lgamma.testLgamma#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_lgamma.testLgamma#
 #{ lgamma(1+1i) }
 Error in lgamma(1 + (0+1i)) : unimplemented complex function
 
@@ -30949,7 +30949,7 @@ In max() : no non-missing arguments to max; returning -Inf
 #{ max(2L, 4L) }
 [1] 4
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_max.testMaximum#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_max.testMaximum#
 #{ max(42+42i, 7+7i) }
 Error in max(42 + (0+42i), 7 + (0+7i)) :
   invalid 'type' (complex) of argument
@@ -31644,7 +31644,7 @@ In min() : no non-missing arguments to min; returning Inf
 #{ min(2L, 4L) }
 [1] 2
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_min.testMinimum#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_min.testMinimum#
 #{ min(42+42i, 7+7i) }
 Error in min(42 + (0+42i), 7 + (0+7i)) :
   invalid 'type' (complex) of argument
@@ -39789,7 +39789,7 @@ V             0.0cwt 0.2cwt 0.4cwt 0.6cwt
 #argv <- list(NULL, NULL, TRUE, NULL, NULL, FALSE, NULL, TRUE, TRUE); .Internal(print.default(argv[[1]], argv[[2]], argv[[3]], argv[[4]], argv[[5]], argv[[6]], argv[[7]], argv[[8]], argv[[9]]))
 NULL
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_printdefault.testprintdefault18#Ignored.OutputFormatting#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_printdefault.testprintdefault18#
 #argv <- list(quote(breaks ~ (wool + tension) - tension), NULL, TRUE, NULL, NULL, FALSE, NULL, TRUE, TRUE); .Internal(print.default(argv[[1]], argv[[2]], argv[[3]], argv[[4]], argv[[5]], argv[[6]], argv[[7]], argv[[8]], argv[[9]]))
 breaks ~ (wool + tension) - tension
 
@@ -44823,14 +44823,14 @@ Error in seq.int(argv[[1]], argv[[2]], argv[[3]]) :
  [1] 58 0a 00 00 00 02 00 03 03 02 00 02 03 00 00 00 00 10 00 00 00 01 00 04 00
 [26] 09 00 00 00 03 62 61 7a
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_serialize.testserialize#Ignored.ImplementationError#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_serialize.testserialize#
 #options(keep.source=FALSE); serialize(quote((a %asdf% b)), connection=NULL)
  [1] 58 0a 00 00 00 02 00 03 03 02 00 02 03 00 00 00 00 06 00 00 00 01 00 04 00
 [26] 09 00 00 00 01 28 00 00 00 02 00 00 00 06 00 00 00 01 00 04 00 09 00 00 00
 [51] 06 25 61 73 64 66 25 00 00 00 02 00 00 00 01 00 04 00 09 00 00 00 01 61 00
 [76] 00 00 02 00 00 00 01 00 04 00 09 00 00 00 01 62 00 00 00 fe 00 00 00 fe
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_serialize.testserialize#Ignored.ImplementationError#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_serialize.testserialize#
 #options(keep.source=FALSE); serialize(quote((a+b)), connection=NULL)
  [1] 58 0a 00 00 00 02 00 03 03 02 00 02 03 00 00 00 00 06 00 00 00 01 00 04 00
 [26] 09 00 00 00 01 28 00 00 00 02 00 00 00 06 00 00 00 01 00 04 00 09 00 00 00
@@ -44939,7 +44939,7 @@ Error in seq.int(argv[[1]], argv[[2]], argv[[3]]) :
  [76] 00 10 00 00 00 01 00 04 00 09 00 00 00 03 66 6f 6f 00 00 00 02 00 00 00 01
 [101] 00 04 00 09 00 00 00 01 78 00 00 00 fe 00 00 00 02 00 00 00 fe 00 00 00 fe
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_serialize.testserialize#Ignored.ImplementationError#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_serialize.testserialize#
 #options(keep.source=FALSE); serialize(quote(function(x) { `+`(`(`("BAR"), x) }), connection=NULL)
   [1] 58 0a 00 00 00 02 00 03 03 02 00 02 03 00 00 00 00 06 00 00 00 01 00 04 00
  [26] 09 00 00 00 08 66 75 6e 63 74 69 6f 6e 00 00 00 02 00 00 04 02 00 00 00 01
@@ -45717,7 +45717,7 @@ Error in signif(42.1234, "2") :
 #{ signif(42.1234, 1:2) }
 [1] 40 42
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_signif.testSignif#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_signif.testSignif#
 #{ signif(42.1234, 42+7i) }
 Error in signif(42.1234, 42 + (0+7i)) :
   non-numeric argument to mathematical function
@@ -53853,10 +53853,263 @@ Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
 [1] 123
 [1] 123
 
-##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testserializeAndUnserializeClosure#Ignored.OutputFormatting#
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testserializeAndUnserializeClosure#Output.IgnoreWhitespace#
 #unserialize(serialize(function (x) { x }, NULL))
 function (x) { x }
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote("bar"), connection=NULL))
+[1] "bar"
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote('asdf'), connection=NULL))
+[1] "asdf"
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote('baz'), connection=NULL))
+[1] "baz"
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote((a %asdf% b)), connection=NULL))
+(a %asdf% b)
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote((a+b)), connection=NULL))
+(a + b)
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(111+11), connection=NULL))
+111 + 11
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(111+8i), connection=NULL))
+111 + (0+8i)
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(111L), connection=NULL))
+[1] 111
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(FALSE), connection=NULL))
+[1] FALSE
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(NA_character_ + NA_complex_ + NA_integer_ + NA_real_), connection=NULL))
+NA_character_ + (NA_complex_) + NA_integer_ + NA_real_
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(NA_character_), connection=NULL))
+[1] NA
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(NA_complex_), connection=NULL))
+[1] NA
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(NA_integer_), connection=NULL))
+[1] NA
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(NA_real_), connection=NULL))
+[1] NA
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(TRUE), connection=NULL))
+[1] TRUE
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.IgnoreWhitespace#
+#options(keep.source=FALSE); unserialize(serialize(quote(a(b(c(d(function (e, ...) { f(g)$h.i}))))), connection=NULL))
+a(b(c(d(function(e, ...) {
+    f(g)$h.i
+}))))
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(a+b), connection=NULL))
+a + b
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(f(g)$h.i), connection=NULL))
+f(g)$h.i
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(foo(a,b,c)), connection=NULL))
+foo(a, b, c)
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.IgnoreWhitespace#
+#options(keep.source=FALSE); unserialize(serialize(quote(function() new("foo", x)), connection=NULL))
+function() new("foo", x)
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(function(x) { `+`(`(`("BAR"), x) }), connection=NULL))
+function(x) {
+    ("BAR") + x
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.IgnoreWhitespace#
+#options(keep.source=FALSE); unserialize(serialize(quote(function(x) { new("BAR", x) }), connection=NULL))
+function(x) {
+    new("BAR", x)
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.IgnoreWhitespace#
+#options(keep.source=FALSE); unserialize(serialize(quote(function(x, ...) { new("BAR", x) }), connection=NULL))
+function(x, ...) {
+    new("BAR", x)
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.IgnoreWhitespace#
+#options(keep.source=FALSE); unserialize(serialize(quote(function(x,y) { TRUE }), connection=NULL))
+function(x, y) {
+    TRUE
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.IgnoreWhitespace#
+#options(keep.source=FALSE); unserialize(serialize(quote(function(x,y) { new("BAR", x) }), connection=NULL))
+function(x, y) {
+    new("BAR", x)
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.IgnoreWhitespace#
+#options(keep.source=FALSE); unserialize(serialize(quote(function(x,y,...) { 1 }), connection=NULL))
+function(x, y, ...) {
+    1
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.IgnoreWhitespace#
+#options(keep.source=FALSE); unserialize(serialize(quote(function(x,y=1,...) { NA }), connection=NULL))
+function(x, y = 1, ...) {
+    NA
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Ignored.OutputFormatting#
+#options(keep.source=FALSE); unserialize(serialize(quote(function(x={1 + a},y,...) { !!NA }), connection=NULL))
+function(x = {
+    1 + a
+}, y, ...) {
+    !(!NA)
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(function(x={1 + a},y,...) { !1+5i }), connection=NULL))
+function(x = {
+    1 + a
+}, y, ...) {
+    !1 + (0+5i)
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(function(x={1 + a},y,...) { NA }), connection=NULL))
+function(x = {
+    1 + a
+}, y, ...) {
+    NA
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(function(x={1 + a},y=c(1,2,3),z="foo",...) { !1+5i }), connection=NULL))
+function(x = {
+    1 + a
+}, y = c(1, 2, 3), z = "foo", ...) {
+    !1 + (0+5i)
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(if (a * 2 < 199) b + foo(x,y,foo=z+1,bar=)), connection=NULL))
+if (a * 2 < 199) b + foo(x, y, foo = z + 1, bar = )
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(if (a) b else c), connection=NULL))
+if (a) b else c
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(if (a) {b} else {c}), connection=NULL))
+if (a) {
+    b
+} else {
+    c
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(if ({a}) {b} else {c}), connection=NULL))
+if ({
+    a
+}) {
+    b
+} else {
+    c
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.IgnoreWhitespace#
+#options(keep.source=FALSE); unserialize(serialize(quote(repeat {b; if (c) next else break}), connection=NULL))
+repeat {
+    b
+    if (c)
+        next
+    else break
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(while (a) b), connection=NULL))
+while (a) b
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote(x), connection=NULL))
+x
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); unserialize(serialize(quote({ foo(a,b,c) }), connection=NULL))
+{
+    foo(a, b, c)
+}
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#options(keep.source=FALSE); val <- defaultPrototype(); unserialize(serialize(val, connection=NULL))
+<S4 Type Object>
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.ContainsReferences#
+#options(keep.source=FALSE); val <- list(enclos = new.env(hash=FALSE)); unserialize(serialize(val, connection=NULL))
+$enclos
+<environment: 0x7fa93ab11ab0>
+
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.ContainsReferences#
+#options(keep.source=FALSE); val <- new.env(hash=FALSE); unserialize(serialize(val, connection=NULL))
+<environment: 0x7fc0c88c78a8>
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.ContainsReferences#
+#options(keep.source=FALSE); val <- new.env(hash=FALSE); val$a <- 'foo'; unserialize(serialize(val, connection=NULL))
+<environment: 0x7fc5914a1ad8>
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.ContainsReferences#
+#options(keep.source=FALSE); val <- new.env(hash=FALSE); val$b <- 123; unserialize(serialize(val, connection=NULL))
+<environment: 0x7fe9532eb830>
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.ContainsReferences#
+#options(keep.source=FALSE); val <- new.env(hash=FALSE); val$c <- 1233L; unserialize(serialize(val, connection=NULL))
+<environment: 0x7ff64a5862d8>
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.ContainsReferences#
+#options(keep.source=FALSE); val <- new.env(hash=FALSE); val$d <- TRUE; unserialize(serialize(val, connection=NULL))
+<environment: 0x7fcac6388ad8>
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.ContainsReferences#
+#options(keep.source=FALSE); val <- new.env(hash=FALSE); val$e <- 5+9i; unserialize(serialize(val, connection=NULL))
+<environment: 0x7f80c3679d50>
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#Output.ContainsReferences#
+#options(keep.source=FALSE); val <- new.env(hash=FALSE); val$f <- NA; unserialize(serialize(val, connection=NULL))
+<environment: 0x7fa9028d50d8>
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_unserialize.testunserialize#
+#setClass('foo', slots = c(x='numeric', y='numeric')); t1 <- new('foo', x=4, y=c(77,88)); options(keep.source=FALSE); unserialize(serialize(t1, connection=NULL))
+An object of class "foo"
+Slot "x":
+[1] 4
+
+Slot "y":
+[1] 77 88
+
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_utf8ToInt.testutf8ToInt1#Ignored.Unknown#
 #argv <- list('lasy'); .Internal(utf8ToInt(argv[[1]]))
 [1] 108  97 115 121
@@ -55696,7 +55949,7 @@ $x
 #{ f <- function() { stop("hello","world") } ; f() }
 Error in f() : helloworld
 
-##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#Ignored.Unknown#
+##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#
 #{ eigen(10, only.values=FALSE) }
 $values
 [1] 10
@@ -55706,17 +55959,17 @@ $vectors
 [1,]    1
 
 
-##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#Ignored.Unknown#
+##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#
 #{ r <- eigen(matrix(c(1,2,2,3), nrow=2), only.values=FALSE); round( r$values, digits=5 ) }
 [1]  4.23607 -0.23607
 
-##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#Ignored.Unknown#
+##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#
 #{ r <- eigen(matrix(c(1,2,2,3), nrow=2), only.values=FALSE); round( r$vectors, digits=5 ) }
         [,1]     [,2]
 [1,] 0.52573 -0.85065
 [2,] 0.85065  0.52573
 
-##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#Ignored.Unknown#
+##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#
 #{ r <- eigen(matrix(c(1,2,3,4), nrow=2), only.values=FALSE); round( r$values, digits=5 ) }
 [1]  5.37228 -0.37228
 
@@ -55726,21 +55979,21 @@ $vectors
 [1,] -0.56577 -0.90938
 [2,] -0.82456  0.41597
 
-##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#Ignored.Unknown#
+##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#
 #{ r <- eigen(matrix(c(3,-2,4,-1), nrow=2), only.values=FALSE); round( r$values, digits=5 ) }
 [1] 1+2i 1-2i
 
-##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#Ignored.Unknown#
+##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#
 #{ r <- eigen(matrix(c(3,-2,4,-1), nrow=2), only.values=FALSE); round( r$vectors, digits=5 ) }
                   [,1]              [,2]
 [1,]  0.81650+0.00000i  0.81650+0.00000i
 [2,] -0.40825+0.40825i -0.40825-0.40825i
 
-##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#Ignored.Unknown#
+##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#
 #{ r <- eigen(matrix(rep(1,4), nrow=2), only.values=FALSE) ; round( r$values, digits=5 ) }
 [1] 2 0
 
-##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#Ignored.Unknown#
+##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testEigen#
 #{ r <- eigen(matrix(rep(1,4), nrow=2), only.values=FALSE) ; round( r$vectors, digits=5 ) }
         [,1]     [,2]
 [1,] 0.70711 -0.70711
@@ -56114,7 +56367,7 @@ Levels: Control Treat
 #{ sub <- function(x,y) { x - y }; sub(10,5) }
 [1] 5
 
-##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testParen#Ignored.Unknown#
+##com.oracle.truffle.r.test.builtins.TestMiscBuiltins.testParen#
 #{ a = array(1,c(3,3,3)); (a[1,2,3] = 3) }
 [1] 3
 
@@ -63442,7 +63695,7 @@ $dimnames[[3]]
 
 
 
-##com.oracle.truffle.r.test.library.base.TestSimpleAttributes.testBuiltinPropagationIgnore#Ignored.Unknown#
+##com.oracle.truffle.r.test.library.base.TestSimpleAttributes.testBuiltinPropagationIgnore#
 #{ m <- matrix(c(1,1,1,1), nrow=2) ; attr(m,"a") <- 1 ;  r <- eigen(m) ; r$vectors <- round(r$vectors, digits=5) ; r  }
 $values
 [1] 2 0
@@ -67789,7 +68042,7 @@ NULL
 #{ (0-5):(0-9) }
 [1] -5 -6 -7 -8 -9
 
-##com.oracle.truffle.r.test.library.base.TestSimpleSequences.testSequenceConstruction#Output.IgnoreWarningContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleSequences.testSequenceConstruction#
 #{ (1:3):(1:3) }
 [1] 1
 Warning messages:
@@ -67798,7 +68051,7 @@ Warning messages:
 2: In (1:3):(1:3) :
   numerical expression has 3 elements: only the first used
 
-##com.oracle.truffle.r.test.library.base.TestSimpleSequences.testSequenceConstruction#Output.IgnoreWarningContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleSequences.testSequenceConstruction#
 #{ (1:3):3 }
 [1] 1 2 3
 Warning message:
@@ -99435,23 +99688,23 @@ Error in x[[1 + (0+1i), 1]] <- c(7, 42) :
 #{ x<-c(1,2,3,4); dim(x)<-c(2,2); x[[1+1i, 1]]<-integer() }
 Error in x[[1 + (0+1i), 1]] <- integer() : replacement has length zero
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-c(1,2,3,4); x[1+1i]<-NULL }
 Error in x[1 + (0+1i)] <- NULL : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-c(1,2,3,4); x[1+1i]<-c(1) }
 Error in x[1 + (0+1i)] <- c(1) : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-c(1,2,3,4); x[1+1i]<-c(1,2) }
 Error in x[1 + (0+1i)] <- c(1, 2) : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-c(1,2,3,4); x[1+1i]<-c(1,2,3) }
 Error in x[1 + (0+1i)] <- c(1, 2, 3) : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-c(1,2,3,4); x[1+1i]<-integer() }
 Error in x[1 + (0+1i)] <- integer() : invalid subscript type 'complex'
 
@@ -99460,7 +99713,7 @@ Error in x[1 + (0+1i)] <- integer() : invalid subscript type 'complex'
 Error in x[[1 + (0+1i)]] <- NULL :
   more elements supplied than there are to replace
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-c(1,2,3,4); x[[1+1i]]<-c(1) }
 Error in x[[1 + (0+1i)]] <- c(1) : invalid subscript type 'complex'
 
@@ -99518,43 +99771,43 @@ Error in `[[<-`(`*tmp*`, 1 + (0+1i), 1, value = c(7, 42)) :
 Error in `[[<-`(`*tmp*`, 1 + (0+1i), 1, value = integer(0)) :
   invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-list(1,2,3,4); x[1+1i]<-NULL }
 Error in x[1 + (0+1i)] <- NULL : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-list(1,2,3,4); x[1+1i]<-c(1) }
 Error in x[1 + (0+1i)] <- c(1) : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-list(1,2,3,4); x[1+1i]<-c(1,2) }
 Error in x[1 + (0+1i)] <- c(1, 2) : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-list(1,2,3,4); x[1+1i]<-c(1,2,3) }
 Error in x[1 + (0+1i)] <- c(1, 2, 3) : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-list(1,2,3,4); x[1+1i]<-integer() }
 Error in x[1 + (0+1i)] <- integer() : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-list(1,2,3,4); x[[1+1i]]<-NULL }
 Error in x[[1 + (0+1i)]] <- NULL : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-list(1,2,3,4); x[[1+1i]]<-c(1) }
 Error in x[[1 + (0+1i)]] <- c(1) : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-list(1,2,3,4); x[[1+1i]]<-c(1,2) }
 Error in x[[1 + (0+1i)]] <- c(1, 2) : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-list(1,2,3,4); x[[1+1i]]<-c(1,2,3) }
 Error in x[[1 + (0+1i)]] <- c(1, 2, 3) : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testComplexIndex#
 #{ x<-list(1,2,3,4); x[[1+1i]]<-integer() }
 Error in x[[1 + (0+1i)]] <- integer() : invalid subscript type 'complex'
 
@@ -102906,7 +103159,7 @@ Error in x[[NA]] <- NULL :
 #{ x<-1:2; dim(x)<-c(1,2); u<-2+2i; x[[u, u]] }
 Error in x[[u, u]] : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testMoreVectorsOther#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testMoreVectorsOther#
 #{ x<-1:2; dim(x)<-c(1,2); x[2+2i, 2+2i] }
 Error in x[2 + (0+2i), 2 + (0+2i)] : invalid subscript type 'complex'
 
@@ -103103,7 +103356,7 @@ Error in `[[<-`(`*tmp*`, c(0, 1, 1), value = c(42, 43)) :
 Error in x[[c(0, 42 + (0+7i))]] <- c(42, 43) :
   invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testMoreVectorsOther#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testMoreVectorsOther#
 #{ x<-1:4; dim(x)<-c(2,2); x[[c(1+1i)]]<-c(42); x }
 Error in x[[c(1 + (0+1i))]] <- c(42) : invalid subscript type 'complex'
 
@@ -103262,16 +103515,16 @@ In x[c(0, 1)] <- c(42, 43) :
 [1,]   43    3
 [2,]    2    4
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testMoreVectorsOther#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testMoreVectorsOther#
 #{ x<-1:4; dim(x)<-c(2,2); x[c(0,42+7i)]<-c(42,43); x }
 Error in x[c(0, 42 + (0+7i))] <- c(42, 43) :
   invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testMoreVectorsOther#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testMoreVectorsOther#
 #{ x<-1:4; dim(x)<-c(2,2); x[c(1+1i)]<-c(42); x }
 Error in x[c(1 + (0+1i))] <- c(42) : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testMoreVectorsOther#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testMoreVectorsOther#
 #{ x<-1:4; dim(x)<-c(2,2); x[c(1+1i)]<-c(42,43); x }
 Error in x[c(1 + (0+1i))] <- c(42, 43) : invalid subscript type 'complex'
 
@@ -103279,7 +103532,7 @@ Error in x[c(1 + (0+1i))] <- c(42, 43) : invalid subscript type 'complex'
 #{ x<-1:4; dim(x)<-c(2,2); x[c(1+1i)]<-integer(); x }
 Error in x[c(1 + (0+1i))] <- integer() : invalid subscript type 'complex'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testMoreVectorsOther#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testMoreVectorsOther#
 #{ x<-1:4; dim(x)<-c(2,2); x[c(1+1i,42+7i,3+3i)]<-c(42,43); x }
 Error in x[c(1 + (0+1i), 42 + (0+7i), 3 + (0+3i))] <- c(42, 43) :
   invalid subscript type 'complex'
@@ -108502,7 +108755,7 @@ Error in x[[list(-0, -1)]] :
 #{ x <- 1:2; x[[list(0)]] }
 Error in x[[list(0)]] : invalid subscript type 'list'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testVectorIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testVectorIndex#
 #{ x <- 1:3; x[function(){3}] }
 Error in x[function() { : invalid subscript type 'closure'
 
@@ -108667,7 +108920,7 @@ Error in x[[i]] : invalid subscript type 'complex'
 #{ x <- list(a=1,b=1:3) ; f <- function(i) { x[[i]] } ; f(c(2,2)) ; x <- f ; f(2+3i) }
 Error in x[[i]] : object of type 'closure' is not subsettable
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testVectorIndex#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testVectorIndex#
 #{ x <- list(a=1,b=1:3) ; x[[2+3i]] }
 Error in x[[2 + (0+3i)]] : invalid subscript type 'complex'
 
@@ -108997,7 +109250,7 @@ Error in b[c(3, 2)] <- 2 :
 [1] 2
 
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testVectorUpdate#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testVectorUpdate#
 #{ b <- as.raw(1:5) ; b[c(TRUE,FALSE,TRUE)] <- c(1+2i,3+4i) ; b }
 Error in b[c(TRUE, FALSE, TRUE)] <- c(1 + (0+2i), 3 + (0+4i)) :
   incompatible types (from complex to raw) in subassignment type fix
@@ -109115,7 +109368,7 @@ Error in b[c(TRUE, FALSE, FALSE)] <- NULL : replacement has length zero
 [1] 1+2i
 
 
-##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testVectorUpdate#Output.IgnoreErrorContext#
+##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testVectorUpdate#
 #{ b <- c(1,2,5) ; b[c(TRUE,NA,TRUE)] <- list(TRUE,1+2i) ; b }
 Error in b[c(TRUE, NA, TRUE)] <- list(TRUE, 1 + (0+2i)) :
   NAs are not allowed in subscripted assignments
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_args.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_args.java
index ede905ba63..1303d70f84 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_args.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_args.java
@@ -47,6 +47,6 @@ public class TestBuiltin_args extends TestBase {
         assertEval("{ f <- function(a) {}; fa <- args(f); }");
         assertEval("{ f <- function(a, b) {}; fa <- args(f); }");
         assertEval("{ sa <- args(sum); }");
-        assertEval("{  f <- function(x=1, y) x + y; args(f); }");
+        assertEval(Output.IgnoreWhitespace, "{  f <- function(x=1, y) x + y; args(f); }");
     }
 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asfunction.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asfunction.java
index b0432a40b7..95b6ce40cd 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asfunction.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asfunction.java
@@ -30,8 +30,8 @@ public class TestBuiltin_asfunction extends TestBase {
 
     @Test
     public void testasfunction() {
-        assertEval("as.function(c(alist(a=1+14, b=foo(x),c=), quote(a+foo(c)*b)))");
-        assertEval("f <- function() a+foo(c)*b; as.function(c(alist(a=1+14, b=foo(x),c=), body(f)))");
+        assertEval(Output.IgnoreWhitespace, "as.function(c(alist(a=1+14, b=foo(x),c=), quote(a+foo(c)*b)))");
+        assertEval(Output.IgnoreWhitespace, "f <- function() a+foo(c)*b; as.function(c(alist(a=1+14, b=foo(x),c=), body(f)))");
         assertEval("foo <- function(x) x*2; as.function(c(alist(a=1+14, b=foo(x),c=), quote(a+foo(c)*b)))(c=3,b=1)");
         assertEval("foo <- function(x) x*2; f <- function() a+foo(c)*b; as.function(c(alist(a=1+14, b=foo(x),c=), body(f)))(c=3,b=1)");
         assertEval("{ as.function(alist(42))() }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bitwiseShiftL.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bitwiseShiftL.java
index 6e33441b3b..480abb2984 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bitwiseShiftL.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bitwiseShiftL.java
@@ -31,8 +31,7 @@ public class TestBuiltin_bitwiseShiftL extends TestBase {
 
         assertEval("{ bitwShiftL(TRUE, c(TRUE, FALSE)) }");
 
-        // Error message mismatch
-        assertEval(Output.IgnoreErrorContext, "{ bitwShiftL(c(3+3i), c(3,2,4)) }");
+        assertEval("{ bitwShiftL(c(3+3i), c(3,2,4)) }");
         // Warning message mismatch
         assertEval(Output.IgnoreWarningContext, "{ bitwShiftL(c(3,2,4), c(3+3i)) }");
         // No warning message printed for NAs produced by coercion
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_deparse.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_deparse.java
index f1581fdeeb..071f3a3539 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_deparse.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_deparse.java
@@ -270,7 +270,7 @@ public class TestBuiltin_deparse extends TestBase {
         assertEval("argv <- list(quote(x[[i]] <- 0.9999997), 500L, TRUE, 69, -1L); .Internal(deparse(argv[[1]], argv[[2]], argv[[3]], argv[[4]], argv[[5]]))");
     }
 
-    private static final String[] VALUES = new String[]{"TRUE", "c(T, F)", "17", "-17", "0L", "-0L", "16L", "-16L", "5i", "NA_integer_", "NA_complex_",
+    private static final String[] VALUES = new String[]{"TRUE", "c(T, F)", "17", "-17", "0L", "-0L", "16L", "-16L", "5i", "-5i", "199.1234-5i", "-199.1234-5i", "NA_integer_", "NA_complex_",
                     "NA_real_", "NA_character_", "1:2", "1:6", "0", "1", "1000", "10000", "99999", "100000000", "10000000000000", "0.1", "0.123", "0.00123", "0.0000000001", "0.0000000000000001",
                     "1.545234523452345252523452345", "Inf", "NaN", "-0", "-1", "-1000", "-10000", "-99999", "-100000000", "-10000000000000", "-0.1", "-0.123", "-0.00123", "-0.0000000001",
                     "-0.0000000000000001", "-1.545234523452345252523452345", "-Inf", "c(1L,2L,3L)", "c(1,2,3)", "c(NA_integer_, 1L,2L,3L)", "c(1L,2L,3L, NA_integer_)", "c(3L,2L,1L)",
@@ -280,12 +280,6 @@ public class TestBuiltin_deparse extends TestBase {
     public void testDeparse() {
         assertEval(template("deparse(%0)", VALUES));
         assertEval(template("deparse(quote(cat(%0)))", VALUES));
-        assertEval("deparse(-5i)");
-        assertEval(Ignored.OutputFormatting, "deparse(quote(cat(-5i)))");
-        assertEval("deparse(199.1234-5i)");
-        assertEval(Ignored.OutputFormatting, "deparse(quote(cat(199.1234-5i)))");
-        assertEval("deparse(-199.1234-5i)");
-        assertEval(Ignored.OutputFormatting, "deparse(quote(cat(-199.1234-5i)))");
         assertEval(Ignored.OutputFormatting, "deparse(1.53160350210786e-322)");
         assertEval("{ deparse(new.env()) }");
         assertEval("{ k <- 2 ; deparse(k) }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_digamma.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_digamma.java
index c2556e91b4..143dd8f317 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_digamma.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_digamma.java
@@ -53,6 +53,6 @@ public class TestBuiltin_digamma extends TestBase {
         assertEval("{ digamma(c(100, 2.2)) }");
         assertEval("{ digamma(FALSE) }");
         assertEval("{ digamma(as.raw(1)) }");
-        assertEval(Output.IgnoreErrorContext, "{ digamma(1+1i) }");
+        assertEval("{ digamma(1+1i) }");
     }
 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_dim.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_dim.java
index b18378be45..d527dec5c8 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_dim.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_dim.java
@@ -186,7 +186,7 @@ public class TestBuiltin_dim extends TestBase {
         assertEval("{ x <- 1:4 ; f <- function() { x <- 1:4 ; dim(x) <<- c(2,2) } ; f() ; dim(x) }");
 
         assertEval("{ x<-1:12; dim(x)<-c(12); x }");
-        assertEval(Output.IgnoreWarningContext, "{ x<-1:12; dim(x)<-c(12+10i); x }");
+        assertEval("{ x<-1:12; dim(x)<-c(12+10i); x }");
         assertEval("{ x<-1:12; dim(x)<-c(as.raw(12)); x }");
         assertEval("{ x<-1:12; dim(x)<-c(\"12\"); x }");
         assertEval("{ x<-1:1; dim(x)<-c(TRUE); x }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_lgamma.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_lgamma.java
index 7cfe89a93f..30e927da8e 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_lgamma.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_lgamma.java
@@ -68,6 +68,6 @@ public class TestBuiltin_lgamma extends TestBase {
         assertEval("{ lgamma(c(100, 2.2)) }");
         assertEval("{ lgamma(FALSE) }");
         assertEval("{ lgamma(as.raw(1)) }");
-        assertEval(Output.IgnoreErrorContext, "{ lgamma(1+1i) }");
+        assertEval("{ lgamma(1+1i) }");
     }
 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_max.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_max.java
index c2389ce484..9988eac042 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_max.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_max.java
@@ -180,7 +180,7 @@ public class TestBuiltin_max extends TestBase {
         assertEval("{ is.logical(max(TRUE, FALSE)) }");
         assertEval("{ is.logical(max(TRUE)) }");
         assertEval("{ max(as.raw(42), as.raw(7)) }");
-        assertEval(Output.IgnoreErrorContext, "{ max(42+42i, 7+7i) }");
+        assertEval("{ max(42+42i, 7+7i) }");
         assertEval("{ max(\"42\", \"7\") }");
 
         assertEval("{ max(as.double(NA), na.rm=FALSE) }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_min.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_min.java
index beca4afa68..8cf0b4359d 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_min.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_min.java
@@ -148,7 +148,7 @@ public class TestBuiltin_min extends TestBase {
         assertEval("{ is.logical(min(TRUE, FALSE)) }");
         assertEval("{ is.logical(min(TRUE)) }");
         assertEval("{ min(as.raw(42), as.raw(7)) }");
-        assertEval(Output.IgnoreErrorContext, "{ min(42+42i, 7+7i) }");
+        assertEval("{ min(42+42i, 7+7i) }");
         assertEval("{ min(\"42\", \"7\") }");
 
         assertEval("{ min(as.double(NA), na.rm=FALSE) }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_signif.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_signif.java
index de5976c0fd..8d4de54a5b 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_signif.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_signif.java
@@ -34,7 +34,7 @@ public class TestBuiltin_signif extends TestBase {
 
         assertEval("{ signif(42.1234, \"2\") }");
         assertEval("{ signif(42.1234, as.raw(2)) }");
-        assertEval(Output.IgnoreErrorContext, "{ signif(42.1234, 42+7i) }");
+        assertEval("{ signif(42.1234, 42+7i) }");
         assertEval(Output.IgnoreErrorMessage, "{ signif(42.1234, character()) }");
         assertEval("{ signif(\"42.1234\", 2 }");
 
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_unserialize.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_unserialize.java
index ffe49c0858..786a26fcd9 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_unserialize.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_unserialize.java
@@ -41,7 +41,64 @@ public class TestBuiltin_unserialize extends TestBase {
     @Test
     public void testserializeAndUnserializeClosure() {
         // N.B.: FastR does not preserve code formatting like GNU R does
-        assertEval(Ignored.OutputFormatting, "unserialize(serialize(function (x) { x }, NULL))");
+        assertEval(Output.IgnoreWhitespace, "unserialize(serialize(function (x) { x }, NULL))");
         assertEval("f <- function() x; e <- new.env(); e$x <- 123; environment(f) <- e; expr <- substitute({ FUN() }, list(FUN=f)); eval(expr); expr <- unserialize(serialize(expr, NULL)); eval(expr)");
     }
+
+    @Test
+    public void testunserialize() {
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(x), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(TRUE), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(FALSE), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote('asdf'), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(NA_character_), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(NA_complex_), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(NA_integer_), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(NA_real_), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(NA_character_ + NA_complex_ + NA_integer_ + NA_real_), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(111L), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(111+8i), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(111+11), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(a+b), connection=NULL))");
+
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote((a+b)), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote((a %asdf% b)), connection=NULL))");
+
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(foo(a,b,c)), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote({ foo(a,b,c) }), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(if (a) b else c), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(if (a) {b} else {c}), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(if ({a}) {b} else {c}), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(while (a) b), connection=NULL))");
+        assertEval(Output.IgnoreWhitespace, "options(keep.source=FALSE); unserialize(serialize(quote(repeat {b; if (c) next else break}), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(if (a * 2 < 199) b + foo(x,y,foo=z+1,bar=)), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(\"bar\"), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote('baz'), connection=NULL))");
+        assertEval("setClass('foo', slots = c(x='numeric', y='numeric')); t1 <- new('foo', x=4, y=c(77,88)); options(keep.source=FALSE); unserialize(serialize(t1, connection=NULL))");
+        assertEval(Output.IgnoreWhitespace, "options(keep.source=FALSE); unserialize(serialize(quote(a(b(c(d(function (e, ...) { f(g)$h.i}))))), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(f(g)$h.i), connection=NULL))");
+        assertEval(Output.ContainsReferences, "options(keep.source=FALSE); val <- new.env(hash=FALSE); unserialize(serialize(val, connection=NULL))");
+        assertEval(Output.ContainsReferences, "options(keep.source=FALSE); val <- list(enclos = new.env(hash=FALSE)); unserialize(serialize(val, connection=NULL))");
+        assertEval("options(keep.source=FALSE); val <- defaultPrototype(); unserialize(serialize(val, connection=NULL))");
+        assertEval(Output.IgnoreWhitespace, "options(keep.source=FALSE); unserialize(serialize(quote(function() new(\"foo\", x)), connection=NULL))");
+        assertEval(Output.IgnoreWhitespace, "options(keep.source=FALSE); unserialize(serialize(quote(function(x) { new(\"BAR\", x) }), connection=NULL))");
+        assertEval(Output.IgnoreWhitespace, "options(keep.source=FALSE); unserialize(serialize(quote(function(x, ...) { new(\"BAR\", x) }), connection=NULL))");
+        assertEval(Output.IgnoreWhitespace, "options(keep.source=FALSE); unserialize(serialize(quote(function(x,y) { new(\"BAR\", x) }), connection=NULL))");
+        assertEval(Output.IgnoreWhitespace, "options(keep.source=FALSE); unserialize(serialize(quote(function(x,y) { TRUE }), connection=NULL))");
+        assertEval(Output.IgnoreWhitespace, "options(keep.source=FALSE); unserialize(serialize(quote(function(x,y,...) { 1 }), connection=NULL))");
+        assertEval(Output.IgnoreWhitespace, "options(keep.source=FALSE); unserialize(serialize(quote(function(x,y=1,...) { NA }), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(function(x={1 + a},y,...) { NA }), connection=NULL))");
+        assertEval(Ignored.OutputFormatting, "options(keep.source=FALSE); unserialize(serialize(quote(function(x={1 + a},y,...) { !!NA }), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(function(x={1 + a},y,...) { !1+5i }), connection=NULL))");
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(function(x={1 + a},y=c(1,2,3),z=\"foo\",...) { !1+5i }), connection=NULL))");
+
+        assertEval("options(keep.source=FALSE); unserialize(serialize(quote(function(x) { `+`(`(`(\"BAR\"), x) }), connection=NULL))");
+
+        assertEval(Output.ContainsReferences, "options(keep.source=FALSE); val <- new.env(hash=FALSE); val$a <- 'foo'; unserialize(serialize(val, connection=NULL))");
+        assertEval(Output.ContainsReferences, "options(keep.source=FALSE); val <- new.env(hash=FALSE); val$b <- 123; unserialize(serialize(val, connection=NULL))");
+        assertEval(Output.ContainsReferences, "options(keep.source=FALSE); val <- new.env(hash=FALSE); val$c <- 1233L; unserialize(serialize(val, connection=NULL))");
+        assertEval(Output.ContainsReferences, "options(keep.source=FALSE); val <- new.env(hash=FALSE); val$d <- TRUE; unserialize(serialize(val, connection=NULL))");
+        assertEval(Output.ContainsReferences, "options(keep.source=FALSE); val <- new.env(hash=FALSE); val$e <- 5+9i; unserialize(serialize(val, connection=NULL))");
+        assertEval(Output.ContainsReferences, "options(keep.source=FALSE); val <- new.env(hash=FALSE); val$f <- NA; unserialize(serialize(val, connection=NULL))");
+    }
 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleSequences.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleSequences.java
index 5687355087..dc4f1bdb0e 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleSequences.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleSequences.java
@@ -50,12 +50,9 @@ public class TestSimpleSequences extends TestBase {
         assertEval("{ 10:1 }");
         assertEval("{ (0-5):(0-9) }");
         assertEval("{ 1.1:5.1 }");
-
         assertEval("{ 1:(1:3) }");
-
-        // these two test need proper handling of parentheses
-        assertEval(Output.IgnoreWarningContext, "{ (1:3):3 }");
-        assertEval(Output.IgnoreWarningContext, "{ (1:3):(1:3) }");
+        assertEval("{ (1:3):3 }");
+        assertEval("{ (1:3):(1:3) }");
     }
 
     @Test
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleVectors.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleVectors.java
index 7157061c65..8d13bc5d5b 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleVectors.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleVectors.java
@@ -284,7 +284,7 @@ public class TestSimpleVectors extends TestBase {
         assertEval(Output.IgnoreErrorContext, "{ x<-c(1,2); x[[c(\"a\", \"b\")]] }");
         assertEval("{ x<-1:2; x[c(TRUE, TRUE)] }");
         assertEval(Output.IgnoreErrorContext, "{ x<-1:2; x[[c(TRUE, TRUE)]] }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-1:2; dim(x)<-c(1,2); x[2+2i, 2+2i] }");
+        assertEval("{ x<-1:2; dim(x)<-c(1,2); x[2+2i, 2+2i] }");
         assertEval("{ x<-1:2; dim(x)<-c(1,2); u<-2+2i; x[[u, u]] }");
         assertEval("{ x<-2; x[NULL] }");
         assertEval(Output.IgnoreErrorContext, "{ x<-2; x[[NULL]] }");
@@ -428,16 +428,16 @@ public class TestSimpleVectors extends TestBase {
         assertEval(Output.IgnoreErrorContext, "{ x<-1:4; dim(x)<-c(2,2); x[[c(FALSE,TRUE,TRUE)]]<-c(42,43); x }");
         assertEval(Output.IgnoreErrorMessage, "{ x<-1:4; dim(x)<-c(2,2); x[[complex()]]<-c(42,43); x }");
         assertEval(Output.IgnoreErrorMessage, "{ x<-1:4; dim(x)<-c(2,2); x[[c(1+1i)]]<-integer(); x }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-1:4; dim(x)<-c(2,2); x[[c(1+1i)]]<-c(42); x }");
+        assertEval("{ x<-1:4; dim(x)<-c(2,2); x[[c(1+1i)]]<-c(42); x }");
         assertEval(Output.IgnoreErrorMessage, "{ x<-1:4; dim(x)<-c(2,2); x[[c(1+1i)]]<-c(42,43); x }");
         assertEval(Output.IgnoreErrorMessage, "{ x<-1:4; dim(x)<-c(2,2); x[[c(1+1i,42+7i,3+3i)]]<-c(42,43); x }");
         assertEval(Output.IgnoreErrorMessage, "{ x<-1:4; dim(x)<-c(2,2); x[[c(0,42+7i)]]<-c(42,43); x }");
         assertEval(Output.IgnoreErrorMessage, "{ x<-1:4; dim(x)<-c(2,2); x[c(1+1i)]<-integer(); x }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-1:4; dim(x)<-c(2,2); x[c(1+1i)]<-c(42); x }");
+        assertEval("{ x<-1:4; dim(x)<-c(2,2); x[c(1+1i)]<-c(42); x }");
         assertEval("{ x<-1:4; dim(x)<-c(2,2); x[complex()]<-c(42,43); x }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-1:4; dim(x)<-c(2,2); x[c(1+1i)]<-c(42,43); x }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-1:4; dim(x)<-c(2,2); x[c(1+1i,42+7i,3+3i)]<-c(42,43); x }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-1:4; dim(x)<-c(2,2); x[c(0,42+7i)]<-c(42,43); x }");
+        assertEval("{ x<-1:4; dim(x)<-c(2,2); x[c(1+1i)]<-c(42,43); x }");
+        assertEval("{ x<-1:4; dim(x)<-c(2,2); x[c(1+1i,42+7i,3+3i)]<-c(42,43); x }");
+        assertEval("{ x<-1:4; dim(x)<-c(2,2); x[c(0,42+7i)]<-c(42,43); x }");
         assertEval(Output.IgnoreErrorContext, "{ x<-1:4; dim(x)<-c(2,2); x[[c(0,0,42+71)]]<-c(42,43); x }");
         assertEval(Output.IgnoreErrorMessage, "{ x<-1:4; dim(x)<-c(2,2); x[[c(as.raw(integer()))]]<-c(42,43); x }");
         assertEval(Output.IgnoreErrorMessage, "{ x<-1:4; dim(x)<-c(2,2); x[[c(as.raw(42))]]<-integer(); x }");
@@ -771,14 +771,14 @@ public class TestSimpleVectors extends TestBase {
     @Test
     public void testComplexIndex() {
         assertEval(Output.IgnoreErrorMessage, "{ x<-c(1,2,3,4); x[[1+1i]]<-integer() }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-c(1,2,3,4); x[[1+1i]]<-c(1) }");
+        assertEval("{ x<-c(1,2,3,4); x[[1+1i]]<-c(1) }");
         assertEval(Output.IgnoreErrorMessage, "{ x<-c(1,2,3,4); x[[1+1i]]<-c(1,2) }");
         assertEval(Output.IgnoreErrorMessage, "{ x<-c(1,2,3,4); x[[1+1i]]<-c(1,2,3) }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-c(1,2,3,4); x[1+1i]<-NULL }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-c(1,2,3,4); x[1+1i]<-integer() }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-c(1,2,3,4); x[1+1i]<-c(1) }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-c(1,2,3,4); x[1+1i]<-c(1,2) }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-c(1,2,3,4); x[1+1i]<-c(1,2,3) }");
+        assertEval("{ x<-c(1,2,3,4); x[1+1i]<-NULL }");
+        assertEval("{ x<-c(1,2,3,4); x[1+1i]<-integer() }");
+        assertEval("{ x<-c(1,2,3,4); x[1+1i]<-c(1) }");
+        assertEval("{ x<-c(1,2,3,4); x[1+1i]<-c(1,2) }");
+        assertEval("{ x<-c(1,2,3,4); x[1+1i]<-c(1,2,3) }");
 
         assertEval(Output.IgnoreErrorMessage, "{ x<-c(1,2,3,4); dim(x)<-c(2,2); x[[1+1i, 1]]<-integer() }");
         assertEval(Output.IgnoreErrorContext, "{ x<-c(1,2,3,4); dim(x)<-c(2,2); x[[1+1i, 1]]<-7 }");
@@ -787,16 +787,16 @@ public class TestSimpleVectors extends TestBase {
         assertEval(Output.IgnoreErrorContext, "{ x<-c(1,2,3,4); dim(x)<-c(2,2); x[1+1i, 1]<-7 }");
         assertEval(Output.IgnoreErrorContext, "{ x<-c(1,2,3,4); dim(x)<-c(2,2); x[1+1i, 1]<-c(7,42) }");
 
-        assertEval(Output.IgnoreErrorContext, "{ x<-list(1,2,3,4); x[[1+1i]]<-NULL }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-list(1,2,3,4); x[[1+1i]]<-integer() }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-list(1,2,3,4); x[[1+1i]]<-c(1) }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-list(1,2,3,4); x[[1+1i]]<-c(1,2) }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-list(1,2,3,4); x[[1+1i]]<-c(1,2,3) }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-list(1,2,3,4); x[1+1i]<-NULL }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-list(1,2,3,4); x[1+1i]<-integer() }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-list(1,2,3,4); x[1+1i]<-c(1) }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-list(1,2,3,4); x[1+1i]<-c(1,2) }");
-        assertEval(Output.IgnoreErrorContext, "{ x<-list(1,2,3,4); x[1+1i]<-c(1,2,3) }");
+        assertEval("{ x<-list(1,2,3,4); x[[1+1i]]<-NULL }");
+        assertEval("{ x<-list(1,2,3,4); x[[1+1i]]<-integer() }");
+        assertEval("{ x<-list(1,2,3,4); x[[1+1i]]<-c(1) }");
+        assertEval("{ x<-list(1,2,3,4); x[[1+1i]]<-c(1,2) }");
+        assertEval("{ x<-list(1,2,3,4); x[[1+1i]]<-c(1,2,3) }");
+        assertEval("{ x<-list(1,2,3,4); x[1+1i]<-NULL }");
+        assertEval("{ x<-list(1,2,3,4); x[1+1i]<-integer() }");
+        assertEval("{ x<-list(1,2,3,4); x[1+1i]<-c(1) }");
+        assertEval("{ x<-list(1,2,3,4); x[1+1i]<-c(1,2) }");
+        assertEval("{ x<-list(1,2,3,4); x[1+1i]<-c(1,2,3) }");
 
         assertEval(Output.IgnoreErrorMessage, "{ x<-list(1,2,3,4); dim(x)<-c(2,2); x[[1+1i, 1]]<-NULL }");
         assertEval(Output.IgnoreErrorContext, "{ x<-list(1,2,3,4); dim(x)<-c(2,2); x[[1+1i, 1]]<-integer() }");
@@ -1352,10 +1352,10 @@ public class TestSimpleVectors extends TestBase {
         assertEval(Output.IgnoreErrorContext, "{ x <- c(a=1,b=2) ; x[[c(\"a\",\"a\")]] }");
         assertEval("{ x <- list(1,2) ; x[[c(\"a\",\"a\")]] }");
         assertEval("{ x <- list(a=1,b=1:3) ; x[[c(\"b\",\"a\")]] }");
-        assertEval(Output.IgnoreErrorContext, "{ x <- list(a=1,b=1:3) ; x[[2+3i]] }");
+        assertEval("{ x <- list(a=1,b=1:3) ; x[[2+3i]] }");
         assertEval("{ x <- list(a=1,b=1:3) ; f <- function(i) { x[[i]] } ; f(c(2,2)) ; f(2+3i) }");
         assertEval("{ x <- 1:3; x[list(2,3)] }");
-        assertEval(Output.IgnoreErrorContext, "{ x <- 1:3; x[function(){3}] }");
+        assertEval("{ x <- 1:3; x[function(){3}] }");
         assertEval(Output.IgnoreErrorMessage, "{ x <- 1:2; x[[list()]] }");
         assertEval(Output.IgnoreErrorMessage, "{ x <- 1:2; x[[list(-0,-1)]] }");
         assertEval("{ x <- 1:2; x[[list(0)]] }");
@@ -1748,7 +1748,7 @@ public class TestSimpleVectors extends TestBase {
 
         assertEval("{ b <- c(1,2,5) ; b[c(TRUE,FALSE,FALSE)] <- NULL ; b }");
         assertEval("{ b <- c(1,2,5) ; b[logical()] <- NULL ; b }");
-        assertEval(Output.IgnoreErrorContext, "{ b <- c(1,2,5) ; b[c(TRUE,NA,TRUE)] <- list(TRUE,1+2i) ; b }");
+        assertEval("{ b <- c(1,2,5) ; b[c(TRUE,NA,TRUE)] <- list(TRUE,1+2i) ; b }");
         assertEval("{ b <- c(1,2,5) ; b[c(TRUE,FALSE,TRUE)] <- list(TRUE,1+2i) ; b }");
         assertEval("{ b <- list(1,2,5) ; dim(b) <- c(1,3) ; b[c(TRUE,FALSE,TRUE)] <- list(TRUE,1+2i) ; b }");
         assertEval("{ f <- function(b, i, v) { b[i] <- v ; b } ; f(1:3,c(TRUE,FALSE,TRUE),5:6) ; x <- list(1,2,5) ; dim(x) <- c(1,3) ; f(x, c(FALSE,TRUE,TRUE), list(TRUE,1+2i)) }");
@@ -1848,7 +1848,7 @@ public class TestSimpleVectors extends TestBase {
         assertEval("{ f <- function(b,i,v) { b[i] <- v ; b } ; f(c(\"a\",\"b\",\"c\"),c(TRUE,FALSE),c(\"A\",\"X\")) ; f(1:3,c(TRUE,FALSE),4) }");
         assertEval("{ f <- function(b,i,v) { b[i] <- v ; b } ; f(c(\"a\",\"b\",\"c\"),c(TRUE,FALSE),c(\"A\",\"X\")) ; f(c(\"A\",\"X\"),c(TRUE,FALSE),4) }");
         assertEval("{ b <- c(\"a\",\"b\",\"c\") ; b[c(TRUE,FALSE,TRUE)] <- c(1+2i,3+4i) ; b }");
-        assertEval(Output.IgnoreErrorContext, "{ b <- as.raw(1:5) ; b[c(TRUE,FALSE,TRUE)] <- c(1+2i,3+4i) ; b }");
+        assertEval("{ b <- as.raw(1:5) ; b[c(TRUE,FALSE,TRUE)] <- c(1+2i,3+4i) ; b }");
 
         assertEval("{ f <- function(b,i,v) { b[i] <- v ; b } ; f(c(\"a\",\"b\",\"c\"),c(TRUE,FALSE),c(\"A\",\"X\")) ; f(f,c(TRUE,FALSE),4) }");
         assertEval("{ f <- function(b,i,v) { b[i] <- v ; b } ; f(c(\"a\",\"b\",\"c\"),c(TRUE,FALSE),c(\"A\",\"X\")) ; f(c(\"A\",\"X\"),c(TRUE,FALSE),f) }");
-- 
GitLab