diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/OptionsFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/OptionsFunctions.java
index 43d5493d06ba6c9e958597448d8b78aad39c9420..ca2fbc86ad27888b63c1593b0b41a720a1b2635e 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/OptionsFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/OptionsFunctions.java
@@ -119,7 +119,7 @@ public class OptionsFunctions {
             for (int i = 0; i < values.length; i++) {
                 String argName = signature.getName(i);
                 Object value = values[i];
-                if (argNameNull.profile(argName == null)) {
+                if (argNameNull.profile(argName == null || value instanceof RList)) {
                     // getting
                     String optionName = null;
                     if (value instanceof RStringVector) {
@@ -146,6 +146,8 @@ public class OptionsFunctions {
                             listNames[j] = name;
                             options.setValue(name, list.getDataAtAsObject(j));
                         }
+                        // any settings means result is invisible
+                        visible = false;
                         // if this is the only argument, no need to copy, can just return
                         if (values.length == 1) {
                             data = listData;
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_options.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_options.java
index 97b6fd5ca14a135fd97d82c11f6cbb9879929d9e..63411ea2a1c1617b0943cf10747ca73e969f2af1 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_options.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_options.java
@@ -54,6 +54,7 @@ public class TestBuiltin_options extends TestBase {
         assertEval("{ getOption(NULL) }");
         assertEval("{ getOption(character()) }");
         assertEval("{ options(\"timeout\", \"width\") }");
+        assertEval("{ options(options(digits = 5)) }");
     }
 
     @Test