diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AllNames.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AllNames.java
index d93063eb23294645fa5223b444735e1140617a88..0feeb054e6b35da0b323f8c79e24c2b849778797 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AllNames.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AllNames.java
@@ -108,7 +108,10 @@ public abstract class AllNames extends RBuiltinNode {
         protected Void visit(RSyntaxCall element) {
             accept(element.getSyntaxLHS());
             for (RSyntaxElement arg : element.getSyntaxArguments()) {
-                accept(arg);
+                // unmatched arguments may still be null
+                if (arg != null) {
+                    accept(arg);
+                }
             }
             return null;
         }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AnyNA.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AnyNA.java
index dc146c10aaf54a033654d50bf5e9e8102579ed36..99ae59e01376b256adc4054d8c54c30b968de6e9 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AnyNA.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AnyNA.java
@@ -37,6 +37,7 @@ import com.oracle.truffle.r.runtime.RRuntime;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 import com.oracle.truffle.r.runtime.data.RComplex;
 import com.oracle.truffle.r.runtime.data.RList;
+import com.oracle.truffle.r.runtime.data.RMissing;
 import com.oracle.truffle.r.runtime.data.RNull;
 import com.oracle.truffle.r.runtime.data.RRaw;
 import com.oracle.truffle.r.runtime.data.model.RAbstractComplexVector;
@@ -60,6 +61,11 @@ public abstract class AnyNA extends RBuiltinNode {
         casts.arg("recursive").asLogicalVector().findFirst(RRuntime.LOGICAL_FALSE).map(toBoolean());
     }
 
+    @Override
+    public Object[] getDefaultParameterValues() {
+        return new Object[]{RMissing.instance, RRuntime.LOGICAL_FALSE};
+    }
+
     private static byte doScalar(boolean isNA) {
         return RRuntime.asLogical(isNA);
     }
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 f93f9ac0ade8438720a70087135023fd10225ada..f1c58896bf96c6409f6df4d38544e3821b65e01d 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
@@ -2700,6 +2700,10 @@ character(0)
 #{ all.names(expression(sin(x+y+x)), unique=T) }
 [1] "sin" "+"   "x"   "y"
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_allnames.testAllNames#
+#{ all.names(quote(switch(x, 'median' =, 'hello' = print('hello case')))) }
+[1] "switch" "x"      "print"
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_allnames.testallnames1#
 #argv <- list(quote(y ~ ((g1) * exp((log(g2/g1)) * (1 - exp(-k * (x - Ta)))/(1 - exp(-k * (Tb - Ta)))))), FALSE, -1L, TRUE); .Internal(all.names(argv[[1]], argv[[2]], argv[[3]], argv[[4]]))
 [1] "y"  "g1" "g2" "k"  "x"  "Ta" "Tb"
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_allnames.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_allnames.java
index 54e5ed2846c7ff90c54ebdfbedcf09d4ff29e692..d832fd2ef53902b66b8388e0d6a00f7344122a47 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_allnames.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_allnames.java
@@ -4,7 +4,7 @@
  * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * Copyright (c) 2014, Purdue University
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates
+ * Copyright (c) 2014, 2017, Oracle and/or its affiliates
  *
  * All rights reserved.
  */
@@ -64,5 +64,7 @@ public class TestBuiltin_allnames extends TestBase {
         assertEval("{ all.names(expression(sin(x+y+x)), unique=T) }");
         assertEval("{ all.names(expression(sin(x+y+x)), unique=NULL) }");
         assertEval("{ all.names(expression(sin(x+y+x)), unique=NA) }");
+
+        assertEval("{ all.names(quote(switch(x, 'median' =, 'hello' = print('hello case')))) }");
     }
 }