diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/LoadSaveFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/LoadSaveFunctions.java index c607fbbbf5844b16a494cde7b44f4b1c77185f70..3f9917adf7e2b463ff9a3970d2138bb4d5292539 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/LoadSaveFunctions.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/LoadSaveFunctions.java @@ -196,7 +196,7 @@ public class LoadSaveFunctions { @Override protected void createCasts(CastBuilder casts) { - casts.arg("list").mustBe(stringValue()).asStringVector().mustBe(notEmpty(), RError.Message.FIRST_ARGUMENT_NOT_CHARVEC).findFirst(); + casts.arg("list").mustBe(stringValue()).asStringVector(); ConnectionFunctions.Casts.connection(casts); casts.arg("ascii").mustBe(logicalValue(), RError.Message.ASCII_NOT_LOGICAL); casts.arg("version").allowNull().mustBe(integerValue()); 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 7b9a8c46ef9062d6930e0f07d1c8127946905846..ae5334fe0894459b46907375e5f8c23a69fff9d2 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 @@ -41706,6 +41706,9 @@ $ix [1] -Inf -Inf -Inf -Inf -Inf -Inf 0 1 2 3 4 5 Inf Inf Inf [16] Inf Inf +##com.oracle.truffle.r.test.builtins.TestBuiltin_quit.testQuitEmptyEnv# +#{ quit("yes") } + ##com.oracle.truffle.r.test.builtins.TestBuiltin_quit.testQuitErrorSave# #{ quit("xx") } Error in quit(save, status, runLast) : unrecognized value of 'save' diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_quit.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_quit.java index face212e7294372db312b4169fba1f6079d17338..7c3462c7f8ced5f4abaaaefd40f6780dedab55b9 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_quit.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_quit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,4 +32,9 @@ public class TestBuiltin_quit extends TestBase { public void testQuitErrorSave() { assertEval("{ quit(\"xx\") }"); } + + @Test + public void testQuitEmptyEnv() { + assertEval("{ quit(\"yes\") }"); + } } diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java index 9cc6074db227a50b6d0c63322a786944de7dedfe..68702d56a7ff87c7d808dd9231b09113ce588d50 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java @@ -35,6 +35,7 @@ import com.oracle.truffle.api.debug.SuspendedCallback; import com.oracle.truffle.api.debug.SuspendedEvent; import com.oracle.truffle.api.source.Source; import com.oracle.truffle.api.vm.PolyglotEngine; +import com.oracle.truffle.r.runtime.ExitException; import com.oracle.truffle.r.runtime.RCmdOptions; import com.oracle.truffle.r.runtime.RCmdOptions.Client; import com.oracle.truffle.r.runtime.RError; @@ -234,6 +235,8 @@ public final class FastRSession implements RSession { } } catch (ParseException e) { e.report(consoleHandler); + } catch (ExitException e) { + // exit exceptions are legitimate if a test case calls "q()" } catch (RError e) { // nothing to do } catch (Throwable t) {