diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java index 4a39e005809dc00097c988d13570251dee949e7a..fbb66b60b7a45715aebce8094a324c57495808a4 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java @@ -174,7 +174,8 @@ public abstract class Parse extends RBuiltinNode { private static Source createSource(Object srcFile, String coalescedLines) { if (srcFile instanceof REnvironment) { REnvironment srcFileEnv = (REnvironment) srcFile; - boolean isFile = RRuntime.fromLogical((byte) srcFileEnv.get("isFile")); + Object b = srcFileEnv.get("isFile"); + boolean isFile = RRuntime.fromLogical(b != null ? (byte) b : 0); if (isFile) { // Might be a URL String urlFileName = RRuntime.asString(srcFileEnv.get("filename")); diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_parse.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_parse.java index 748403bf04222400b0c2d1518b2ae61633adff42..fa4d7c9ccef80a2ffdba55d38684e665857e2266 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_parse.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_parse.java @@ -4,7 +4,7 @@ * http://www.gnu.org/licenses/gpl-2.0.html * * Copyright (c) 2012-2014, Purdue University - * Copyright (c) 2013, 2016, Oracle and/or its affiliates + * Copyright (c) 2013, 2017, Oracle and/or its affiliates * * All rights reserved. */ @@ -13,6 +13,7 @@ package com.oracle.truffle.r.test.builtins; import org.junit.Test; import com.oracle.truffle.r.test.TestBase; +import java.io.IOException; // Checkstyle: stop line length check @@ -57,4 +58,10 @@ public class TestBuiltin_parse extends TestBase { public void testArgumentsCasts() { assertEval(".Internal(parse(stdin(), c(1,2), c('expr1', 'expr2'), '?', '<weird-text', 'unknown'))"); } + + @Test + public void testSrcfile() throws IOException { + assertEval("parse(text='', srcfile=srcfile(system.file('testfile')))"); + } + }