From 13bf460c411798e1027cc0c6cec3f0276f2e1d47 Mon Sep 17 00:00:00 2001 From: Christian Humer <christian.humer@oracle.com> Date: Mon, 15 Feb 2016 13:27:19 -0800 Subject: [PATCH] fix for env[[index]] <- NULL --- .../r/nodes/access/vector/CachedReplaceVectorNode.java | 3 +++ .../src/com/oracle/truffle/r/test/ExpectedTestOutput.test | 8 ++++++++ .../truffle/r/test/library/base/TestSimpleVectors.java | 2 ++ 3 files changed, 13 insertions(+) diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedReplaceVectorNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedReplaceVectorNode.java index ac985c1a11..76de77faaa 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedReplaceVectorNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedReplaceVectorNode.java @@ -341,6 +341,9 @@ final class CachedReplaceVectorNode extends CachedVectorNode { case PairList: vector = RType.List; break; + case Environment: + vector = RType.List; + break; default: vector = this.vectorType; break; 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 b34ed25ea9..3a09e444bf 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 @@ -100260,6 +100260,14 @@ NULL [1] FALSE +##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testScalarUpdate +#{ e < new.env(); e[["abc"]] <- 3} +Error: object 'e' not found + +##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testScalarUpdate +#{ e < new.env(); e[["abc"]] <- NULL} +Error: object 'e' not found + ##com.oracle.truffle.r.test.library.base.TestSimpleVectors.testScalarUpdate #{ f <- function() { a[3] <- 4 } ; f() } Error in a[3] <- 4 : object 'a' not found 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 7be447ea80..3582fb18d4 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 @@ -1383,6 +1383,8 @@ public class TestSimpleVectors extends TestBase { assertEval("{ b <- c(\"a\",\"b\") ; z <- b ; b[[3L]] <- \"xx\" ; b }"); assertEval("{ x <- as.list(1:2) ; x[[\"z\"]] <- NULL ; x }"); + assertEval("{ e < new.env(); e[[\"abc\"]] <- 3}"); + assertEval("{ e < new.env(); e[[\"abc\"]] <- NULL}"); assertEval("{ x<-5:1; x[0-2]<-1000; x }"); assertEval("{ x<-c(); x[[TRUE]] <- 2; x }"); -- GitLab