diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsCharacter.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsCharacter.java
index 0c000916060ff4187bd10ca3e9214b106621644f..9059814482fce42892d3fd5d1cf58400b1cf9408 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsCharacter.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsCharacter.java
@@ -24,6 +24,9 @@ package com.oracle.truffle.r.nodes.builtin.base;
 
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.asStringVector;
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.instanceOf;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.missingValue;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.nullValue;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.emptyStringVector;
 import static com.oracle.truffle.r.runtime.RDispatch.INTERNAL_GENERIC;
 import static com.oracle.truffle.r.runtime.builtins.RBehavior.PURE;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.PRIMITIVE;
@@ -34,8 +37,8 @@ import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.runtime.RDeparse;
 import com.oracle.truffle.r.runtime.RRuntime;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
+import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
 import com.oracle.truffle.r.runtime.data.RDataFactory;
-import com.oracle.truffle.r.runtime.data.RNull;
 import com.oracle.truffle.r.runtime.data.RStringVector;
 import com.oracle.truffle.r.runtime.data.model.RAbstractListVector;
 import com.oracle.truffle.r.runtime.data.model.RAbstractStringVector;
@@ -47,16 +50,11 @@ public abstract class AsCharacter extends RBuiltinNode {
 
     static {
         Casts casts = new Casts(AsCharacter.class);
-        casts.arg("x").mapIf(instanceOf(RAbstractListVector.class).not(), asStringVector());
+        casts.arg("x").returnIf(missingValue().or(nullValue()), emptyStringVector()).mapIf(instanceOf(RAbstractListVector.class).not(), asStringVector());
     }
 
     @Specialization
-    protected RAbstractStringVector asCharacter(@SuppressWarnings("unused") RNull n) {
-        return RDataFactory.createEmptyStringVector();
-    }
-
-    @Specialization
-    protected RAbstractStringVector asCharacter(RAbstractStringVector v) {
+    protected RAbstractStringVector asCharacter(RAbstractStringVector v, @SuppressWarnings("unused") RArgsValuesAndNames dotdotdot) {
         if (noAttributes.profile(v.getAttributes() == null)) {
             return v;
         } else {
@@ -65,7 +63,7 @@ public abstract class AsCharacter extends RBuiltinNode {
     }
 
     @Specialization
-    protected RStringVector asCharacter(RAbstractListVector list) {
+    protected RStringVector asCharacter(RAbstractListVector list, @SuppressWarnings("unused") RArgsValuesAndNames dotdotdot) {
         int len = list.getLength();
         boolean complete = RDataFactory.COMPLETE_VECTOR;
         String[] data = new String[len];
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsComplex.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsComplex.java
index 468752482966f3f41627408ee460d278d019bf50..1ac005ce1bdee4b2298209a61c8d265f16e759e7 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsComplex.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsComplex.java
@@ -22,6 +22,9 @@
  */
 package com.oracle.truffle.r.nodes.builtin.base;
 
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.emptyComplexVector;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.missingValue;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.nullValue;
 import static com.oracle.truffle.r.runtime.builtins.RBehavior.PURE;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.PRIMITIVE;
 
@@ -30,8 +33,7 @@ import com.oracle.truffle.api.profiles.ConditionProfile;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.runtime.RDispatch;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
-import com.oracle.truffle.r.runtime.data.RDataFactory;
-import com.oracle.truffle.r.runtime.data.RNull;
+import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
 import com.oracle.truffle.r.runtime.data.model.RAbstractComplexVector;
 
 @RBuiltin(name = "as.complex", kind = PRIMITIVE, dispatch = RDispatch.INTERNAL_GENERIC, parameterNames = {"x", "..."}, behavior = PURE)
@@ -41,16 +43,11 @@ public abstract class AsComplex extends RBuiltinNode {
 
     static {
         Casts casts = new Casts(AsComplex.class);
-        casts.arg("x").asComplexVector();
+        casts.arg("x").returnIf(missingValue().or(nullValue()), emptyComplexVector()).asComplexVector();
     }
 
     @Specialization
-    protected RAbstractComplexVector asComplex(@SuppressWarnings("unused") RNull n) {
-        return RDataFactory.createEmptyComplexVector();
-    }
-
-    @Specialization
-    protected RAbstractComplexVector asComplex(RAbstractComplexVector v) {
+    protected RAbstractComplexVector asComplex(RAbstractComplexVector v, @SuppressWarnings("unused") RArgsValuesAndNames dotdotdot) {
         if (noAttributes.profile(v.getAttributes() == null)) {
             return v;
         } else {
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsDouble.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsDouble.java
index 7c65477dadaea01b5be7c7d03bf7f92fbad9f12d..a8e7d27ae6ef2e8fbef5317d2d217cfdc516de65 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsDouble.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsDouble.java
@@ -22,6 +22,9 @@
  */
 package com.oracle.truffle.r.nodes.builtin.base;
 
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.emptyDoubleVector;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.missingValue;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.nullValue;
 import static com.oracle.truffle.r.runtime.builtins.RBehavior.PURE;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.PRIMITIVE;
 
@@ -29,8 +32,7 @@ import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.profiles.ConditionProfile;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
-import com.oracle.truffle.r.runtime.data.RDataFactory;
-import com.oracle.truffle.r.runtime.data.RNull;
+import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
 import com.oracle.truffle.r.runtime.data.model.RAbstractDoubleVector;
 
 @RBuiltin(name = "as.double", aliases = {"as.numeric"}, kind = PRIMITIVE, parameterNames = {"x", "..."}, behavior = PURE)
@@ -40,16 +42,11 @@ public abstract class AsDouble extends RBuiltinNode {
 
     static {
         Casts casts = new Casts(AsDouble.class);
-        casts.arg("x").asDoubleVector();
+        casts.arg("x").returnIf(missingValue().or(nullValue()), emptyDoubleVector()).asDoubleVector();
     }
 
     @Specialization
-    protected RAbstractDoubleVector asDouble(@SuppressWarnings("unused") RNull n) {
-        return RDataFactory.createEmptyDoubleVector();
-    }
-
-    @Specialization
-    protected RAbstractDoubleVector asDouble(RAbstractDoubleVector v) {
+    protected RAbstractDoubleVector asDouble(RAbstractDoubleVector v, @SuppressWarnings("unused") RArgsValuesAndNames dotdotdot) {
         if (noAttributes.profile(v.getAttributes() == null)) {
             return v;
         } else {
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsInteger.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsInteger.java
index f7beffc392de4f77b2af3ee0d97f6649594bf5af..79e6144769b78e8fdfc6d8c21760ea35fa1a3197 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsInteger.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsInteger.java
@@ -22,6 +22,9 @@
  */
 package com.oracle.truffle.r.nodes.builtin.base;
 
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.emptyIntegerVector;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.missingValue;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.nullValue;
 import static com.oracle.truffle.r.runtime.builtins.RBehavior.PURE;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.PRIMITIVE;
 
@@ -29,8 +32,7 @@ import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.profiles.ConditionProfile;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
-import com.oracle.truffle.r.runtime.data.RDataFactory;
-import com.oracle.truffle.r.runtime.data.RNull;
+import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
 import com.oracle.truffle.r.runtime.data.model.RAbstractIntVector;
 
 @RBuiltin(name = "as.integer", kind = PRIMITIVE, parameterNames = {"x", "..."}, behavior = PURE)
@@ -40,16 +42,11 @@ public abstract class AsInteger extends RBuiltinNode {
 
     static {
         Casts casts = new Casts(AsInteger.class);
-        casts.arg("x").asIntegerVector();
+        casts.arg("x").returnIf(missingValue().or(nullValue()), emptyIntegerVector()).asIntegerVector();
     }
 
     @Specialization
-    protected RAbstractIntVector asInteger(@SuppressWarnings("unused") RNull n) {
-        return RDataFactory.createEmptyIntVector();
-    }
-
-    @Specialization
-    protected RAbstractIntVector asInteger(RAbstractIntVector v) {
+    protected RAbstractIntVector asInteger(RAbstractIntVector v, @SuppressWarnings("unused") RArgsValuesAndNames dotdotdot) {
         if (noAttributes.profile(v.getAttributes() == null)) {
             return v;
         } else {
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsLogical.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsLogical.java
index 5df1046a5c2b07131232094753f0ae1ba5b7792b..e9eb0ca41ea33b2cbf66fbcf5d871102b47cc4f2 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsLogical.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsLogical.java
@@ -22,6 +22,9 @@
  */
 package com.oracle.truffle.r.nodes.builtin.base;
 
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.emptyLogicalVector;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.missingValue;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.nullValue;
 import static com.oracle.truffle.r.runtime.builtins.RBehavior.PURE;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.PRIMITIVE;
 
@@ -29,8 +32,7 @@ import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.profiles.ConditionProfile;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
-import com.oracle.truffle.r.runtime.data.RDataFactory;
-import com.oracle.truffle.r.runtime.data.RNull;
+import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
 import com.oracle.truffle.r.runtime.data.model.RAbstractLogicalVector;
 
 @RBuiltin(name = "as.logical", kind = PRIMITIVE, parameterNames = {"x", "..."}, behavior = PURE)
@@ -40,16 +42,11 @@ public abstract class AsLogical extends RBuiltinNode {
 
     static {
         Casts casts = new Casts(AsLogical.class);
-        casts.arg("x").asLogicalVector();
+        casts.arg("x").returnIf(missingValue().or(nullValue()), emptyLogicalVector()).asLogicalVector();
     }
 
     @Specialization
-    protected RAbstractLogicalVector asLogicaleger(@SuppressWarnings("unused") RNull n) {
-        return RDataFactory.createEmptyLogicalVector();
-    }
-
-    @Specialization
-    protected RAbstractLogicalVector asLogicaleger(RAbstractLogicalVector v) {
+    protected RAbstractLogicalVector asLogicaleger(RAbstractLogicalVector v, @SuppressWarnings("unused") RArgsValuesAndNames dotdotdot) {
         if (noAttributes.profile(v.getAttributes() == null)) {
             return v;
         } else {
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsRaw.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsRaw.java
index cd935a7b146abb247afba1ce5a7ac40d0e740923..ef2911acc2511132e57644301ca4da9c736a415d 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsRaw.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsRaw.java
@@ -22,12 +22,14 @@
  */
 package com.oracle.truffle.r.nodes.builtin.base;
 
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.missingValue;
 import static com.oracle.truffle.r.runtime.builtins.RBehavior.PURE;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.PRIMITIVE;
 
 import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.profiles.ConditionProfile;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
+import com.oracle.truffle.r.runtime.RError;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 import com.oracle.truffle.r.runtime.data.RDataFactory;
 import com.oracle.truffle.r.runtime.data.RNull;
@@ -40,7 +42,7 @@ public abstract class AsRaw extends RBuiltinNode {
 
     static {
         Casts casts = new Casts(AsRaw.class);
-        casts.arg("x").allowNull().asRawVector();
+        casts.arg("x").mustBe(missingValue().not(), RError.Message.ARGUMENTS_PASSED, 0, "'as.raw'", 1).asRawVector();
     }
 
     @Specialization
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Bincode.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Bincode.java
index ee5ee09e4059fffbd3bcb89209d8d6210ef4e301..32498303a19d4a3ac501709c7e053f3cef7e3b98 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Bincode.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Bincode.java
@@ -22,6 +22,7 @@ import com.oracle.truffle.r.runtime.RRuntime;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 import com.oracle.truffle.r.runtime.data.RDataFactory;
 import com.oracle.truffle.r.runtime.data.RIntVector;
+import com.oracle.truffle.r.runtime.data.RNull;
 import com.oracle.truffle.r.runtime.data.model.RAbstractDoubleVector;
 import com.oracle.truffle.r.runtime.ops.na.NACheck;
 
@@ -32,15 +33,33 @@ public abstract class Bincode extends RBuiltinNode {
 
     static {
         Casts casts = new Casts(Bincode.class);
-        casts.arg("x").asDoubleVector();
+        casts.arg("x").mustNotBeMissing(RError.Message.ARGUMENT_EMPTY, 1).asDoubleVector();
 
-        casts.arg("breaks").asDoubleVector();
+        casts.arg("breaks").mustNotBeMissing(RError.Message.ARGUMENT_EMPTY, 2).asDoubleVector();
 
         casts.arg("right").asLogicalVector().findFirst().map(toBoolean());
 
         casts.arg("include.lowest").asLogicalVector().findFirst().map(toBoolean());
     }
 
+    @SuppressWarnings("unused")
+    @Specialization
+    RIntVector formatC(RNull x, RAbstractDoubleVector breaks, boolean right, boolean includeBorder) {
+        return RDataFactory.createEmptyIntVector();
+    }
+
+    @SuppressWarnings("unused")
+    @Specialization
+    RIntVector formatC(RNull x, RNull breaks, boolean right, boolean includeBorder) {
+        return RDataFactory.createEmptyIntVector();
+    }
+
+    @SuppressWarnings("unused")
+    @Specialization
+    RIntVector formatC(RAbstractDoubleVector x, RNull breaks, boolean right, boolean includeBorder) {
+        return RDataFactory.createIntVector(x.getLength(), true);
+    }
+
     @Specialization
     RIntVector formatC(RAbstractDoubleVector x, RAbstractDoubleVector breaks, boolean right, boolean includeBorder) {
         int n = x.getLength();
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BitwiseFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BitwiseFunctions.java
index 439d14b064fe5c4918b8f2412099a3148ca117f7..f90deab4bfdc072d82fd2d12c830743c506abdb1 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BitwiseFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BitwiseFunctions.java
@@ -17,6 +17,7 @@ import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.asStringVect
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.chain;
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.doubleValue;
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.integerValue;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.missingValue;
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.shouldBe;
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.stringValue;
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.typeName;
@@ -205,8 +206,9 @@ public class BitwiseFunctions {
 
         static {
             Casts casts = new Casts(BitwiseShiftR.class);
-            casts.arg("a").defaultError(RError.Message.UNIMPLEMENTED_TYPE_IN_FUNCTION, typeName(), Operation.SHIFTR.name).mustBe(doubleValue().or(integerValue())).asIntegerVector();
-            casts.arg("n").mapIf(stringValue(), asStringVector(), asIntegerVector());
+            casts.arg("a").defaultError(RError.Message.UNIMPLEMENTED_TYPE_IN_FUNCTION, typeName(), Operation.SHIFTR.name).mustBe(missingValue().not()).mustBe(
+                            doubleValue().or(integerValue())).asIntegerVector();
+            casts.arg("n").allowNull().mustBe(missingValue().not()).mapIf(stringValue(), asStringVector(), asIntegerVector());
         }
 
         @Specialization
@@ -234,7 +236,7 @@ public class BitwiseFunctions {
             Casts casts = new Casts(BitwiseShiftL.class);
             casts.arg("a").defaultError(RError.Message.UNIMPLEMENTED_TYPE_IN_FUNCTION, typeName(), Operation.SHIFTL.name).mustBe(
                             doubleValue().or(integerValue())).asIntegerVector();
-            casts.arg("n").allowNull().mapIf(stringValue(), chain(asStringVector()).with(shouldBe(anyValue().not(), RError.Message.NA_INTRODUCED_COERCION)).end(),
+            casts.arg("n").allowNull().mustBe(missingValue().not()).mapIf(stringValue(), chain(asStringVector()).with(shouldBe(anyValue().not(), RError.Message.NA_INTRODUCED_COERCION)).end(),
                             asIntegerVector());
         }
 
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DatePOSIXFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DatePOSIXFunctions.java
index c33f2d9649f76065e726db65f80699ece1504231..f63bcc40cca8afb779688317d52297f773cffa4a 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DatePOSIXFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DatePOSIXFunctions.java
@@ -179,8 +179,8 @@ public class DatePOSIXFunctions {
 
         static {
             Casts casts = new Casts(AsPOSIXlt.class);
-            casts.arg("x").mapNull(emptyDoubleVector()).asDoubleVector(true, false, false);
-            casts.arg("tz").asStringVector().findFirst("");
+            casts.arg("x").mapNull(emptyDoubleVector()).mustBe(missingValue().not()).asDoubleVector(true, false, false);
+            casts.arg("tz").mustNotBeMissing().asStringVector().findFirst("");
         }
 
         @Specialization
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java
index 2bfc22099def4bcf2ed73eef7777e2e570f77cce..88717774e1a3cb50d7ab58b96a0da664f307de30 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java
@@ -11,7 +11,9 @@
  */
 package com.oracle.truffle.r.nodes.builtin.base;
 
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.missingValue;
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.notEmpty;
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.nullValue;
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.stringValue;
 import static com.oracle.truffle.r.runtime.builtins.RBehavior.PURE;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.INTERNAL;
@@ -101,11 +103,11 @@ public class GrepFunctions {
         }
 
         protected static void castCosts(Casts casts) {
-            casts.arg("costs").asIntegerVector();
+            casts.arg("costs").defaultError(RError.Message.INVALID_ARG, "costs").mustBe((missingValue().or(nullValue()).not())).asIntegerVector();
         }
 
         protected static void castBounds(Casts casts) {
-            casts.arg("bounds").asDoubleVector();
+            casts.arg("bounds").defaultError(RError.Message.INVALID_ARG, "bounds").mustBe((missingValue().or(nullValue()).not())).asDoubleVector();
         }
 
         /**
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateClass.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateClass.java
index 20f38f2b25bd319277b5f9c42bb7b6e1b1b925c0..b579cd587c27cfa11868438f7060b6013fed2eb0 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateClass.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateClass.java
@@ -11,6 +11,7 @@
 
 package com.oracle.truffle.r.nodes.builtin.base;
 
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.missingValue;
 import static com.oracle.truffle.r.runtime.builtins.RBehavior.PURE;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.PRIMITIVE;
 
@@ -52,8 +53,8 @@ public abstract class UpdateClass extends RBuiltinNode {
 
     static {
         Casts casts = new Casts(UpdateClass.class);
-        casts.arg("x"); // disallows null
-        casts.arg("value").asStringVector();
+        casts.arg("x").mustBe(missingValue().not(), RError.Message.ARGUMENT_EMPTY, 1);
+        casts.arg("value").mustBe(missingValue().not(), RError.Message.ARGUMENT_EMPTY, 2).asStringVector();
     }
 
     @Specialization
@@ -64,6 +65,11 @@ public abstract class UpdateClass extends RBuiltinNode {
         return result;
     }
 
+    @Specialization
+    protected Object setClass(@SuppressWarnings("unused") RNull arg, @SuppressWarnings("unused") Object className) {
+        throw error(RError.Message.SET_ATTRIBUTES_ON_NULL);
+    }
+
     @Specialization(limit = "CACHE_LIMIT", guards = "cachedClassName == className")
     protected Object setClassCached(RAbstractContainer arg, @SuppressWarnings("unused") String className,
                     @Cached("className") String cachedClassName,
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/BreakBuiltin.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/BreakBuiltin.java
index b4dea21f7484e6fae3bc9130ff148ae5fd745b07..e1aab99445af84d0a01e5c0d580f800710a7e673 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/BreakBuiltin.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/BreakBuiltin.java
@@ -32,6 +32,10 @@ import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 
 @RBuiltin(name = "break", kind = PRIMITIVE, parameterNames = {"x"}, behavior = COMPLEX)
 public abstract class BreakBuiltin extends RBuiltinNode {
+    static {
+        Casts.noCasts(BreakBuiltin.class);
+    }
+
     @Specialization
     protected Object doIt(@SuppressWarnings("unused") Object x) {
         throw RInternalError.unimplemented();
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 bb1f1db8422ae9b40d717832ea17eb5d6d77345f..f263e95c09ba7a7061c57e8701408ed1807fbfc9 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
@@ -4827,6 +4827,14 @@ numeric(0)
 #argv <- list(structure(list(sec = 0, min = 0L, hour = 0L, mday = 22:27, mon = 3L, year = 108L, wday = 2L, yday = 112L, isdst = -1L), .Names = c('sec', 'min', 'hour', 'mday', 'mon', 'year', 'wday', 'yday', 'isdst'), class = c('POSIXlt', 'POSIXt'), tzone = 'GMT'), 'GMT'); .Internal(as.POSIXct(argv[[1]], argv[[2]]))
 [1] 1208822400 1208908800 1208995200 1209081600 1209168000 1209254400
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_asPOSIXlt.testasPOSIXlt#
+#.Internal(as.POSIXlt(, 1))
+Error in .Internal(as.POSIXlt(, 1)) : argument 1 is empty
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_asPOSIXlt.testasPOSIXlt#
+#.Internal(as.POSIXlt(2, ))
+Error in .Internal(as.POSIXlt(2, )) : argument 2 is empty
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_asPOSIXlt.testasPOSIXlt1#
 #argv <- list(structure(c(2147483648.4, 2147483648.8), class = c('POSIXct', 'POSIXt'), tzone = ''), ''); .Internal(as.POSIXlt(argv[[1]], argv[[2]]))
 [1] "2038-01-19 03:14:08 GMT" "2038-01-19 03:14:08 GMT"
@@ -4995,6 +5003,10 @@ quote(80L)
 #argv <- list(list(quote(quote), NA));as.call(argv[[1]]);
 quote(NA)
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_ascharacter.testAsCharacter#
+#{ as.character() }
+character(0)
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_ascharacter.testAsCharacter#
 #{ as.character(1) }
 [1] "1"
@@ -5406,6 +5418,10 @@ character(0)
 Warning message:
 NAs introduced by coercion
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_ascomplex.testAsComplex#
+#{ as.complex() }
+complex(0)
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_ascomplex.testAsComplex#
 #{ as.complex(0) }
 [1] 0+0i
@@ -5538,6 +5554,10 @@ Time differences in hours
 Warning message:
 NAs introduced by coercion
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_asdouble.testAsDouble#
+#{ as.double() }
+numeric(0)
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_asdouble.testAsDouble#Output.IgnoreWarningContext#
 #{ as.double(10+2i) }
 [1] 10
@@ -6003,6 +6023,10 @@ numeric(0)
 Warning message:
 NAs introduced by coercion
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_asinteger.testAsInteger#
+#{ as.integer() }
+integer(0)
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_asinteger.testAsInteger#
 #{ as.integer(-0/0) }
 [1] NA
@@ -6601,6 +6625,10 @@ Warning messages:
 Warning message:
 out-of-range values treated as 0 in coercion to raw
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_asraw.testAsRaw#
+#{ as.raw() }
+Error in as.raw() : 0 arguments passed to 'as.raw' which requires 1
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_asraw.testAsRaw#Output.IgnoreWarningContext#
 #{ as.raw(-1) }
 [1] 00
@@ -9127,6 +9155,22 @@ numeric(0)
 #argv <- structure(list(a = 1e-200, b = 1e-200), .Names = c('a',     'b'));do.call('beta', argv)
 [1] 2e+200
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_bincode.testBincode#Output.MayIgnoreErrorContext#
+#{ .Internal(bincode(, 1, T, T)) }
+Error in .Internal(bincode(, 1, T, T)) : argument 1 is empty
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_bincode.testBincode#Output.MayIgnoreErrorContext#
+#{ .Internal(bincode(1, ,T, T)) }
+Error in .Internal(bincode(1, , T, T)) : argument 2 is empty
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_bincode.testBincode#
+#{ .Internal(bincode(2, NULL, T, T)) }
+[1] NA
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_bincode.testBincode#
+#{ .Internal(bincode(NULL, 2, T, T)) }
+integer(0)
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_bincode.testBincode#
 #{ x <- c(0, 0.01, 0.5, 0.99, 1); b <- c(0, 0, 1, 1); .bincode(x, b, FALSE) }
 [1]  2  2  2  2 NA
@@ -9266,6 +9310,14 @@ Error in bitwOr(c(1, 2, 3, 4), c(3 + (0+3i))) :
 [25]   -33554432   -67108864  -134217728  -268435456  -536870912 -1073741824
 [31]          NA
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_bitwiseShiftL.testBitwiseFunctions#
+#{ .Internal(bitwiseShiftL(, 1))}
+Error in .Internal(bitwiseShiftL(, 1)) : argument 1 is empty
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_bitwiseShiftL.testBitwiseFunctions#
+#{ .Internal(bitwiseShiftL(200, ))}
+Error in .Internal(bitwiseShiftL(200, )) : argument 2 is empty
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_bitwiseShiftL.testBitwiseFunctions#
 #{ bitwShiftL(TRUE, c(TRUE, FALSE)) }
 Error in bitwShiftL(TRUE, c(TRUE, FALSE)) :
@@ -9305,6 +9357,14 @@ In bitwShiftL(c(3, 2, 4), c(3 + (0+3i))) :
 #{ bitwShiftL(c(8,4,2), NULL) }
 integer(0)
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_bitwiseShiftR.testBitwiseFunctions#
+#{ .Internal(bitwiseShiftR(, 1))}
+Error in .Internal(bitwiseShiftR(, 1)) : argument 1 is empty
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_bitwiseShiftR.testBitwiseFunctions#
+#{ .Internal(bitwiseShiftR(200, ))}
+Error in .Internal(bitwiseShiftR(200, )) : argument 2 is empty
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_bitwiseShiftR.testBitwiseFunctions#Ignored.Unknown#
 #{ bitwShiftR(c(1,2,3,4), c("Hello")) }
 [1] NA NA NA NA
@@ -12884,6 +12944,18 @@ function() 42
 #{ x=1;class(x)<-"character"; x}
 [1] "1"
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_classassign.testUpdateClass#
+#{`class<-`(, "foo") }
+Error in `class<-`(, "foo") : argument 1 is empty
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_classassign.testUpdateClass#
+#{`class<-`(, ) }
+Error in `class<-`(, ) : argument 1 is empty
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_classassign.testUpdateClass#
+#{`class<-`(NULL, "first") }
+Error: attempt to set an attribute on NULL
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_classassign.testUpdateClass#
 #{x<-"abc";class(x)<-"a";class(x)<-"character";x;}
 [1] "abc"
@@ -13005,6 +13077,10 @@ Error in class(x) <- "array" :
 #{x<-c(2+3i,4+5i);class(x)<-"a";class(x)<-"complex";x;}
 [1] 2+3i 4+5i
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_classassign.testUpdateClass#
+#{x=1; `class<-`(x, ) }
+Error in `class<-`(x, ) : argument 2 is empty
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_classassign.testUpdateClass#
 #{x=1; class(x)<-"first"; x;}
 [1] 1
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asPOSIXlt.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asPOSIXlt.java
index b6cb25016bab4b51ae4f702f7b50d52b48536fc5..782fe19c2eaf556d676f63f9a936b36cd5bdb3b0 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asPOSIXlt.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asPOSIXlt.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.
  */
@@ -13,6 +13,7 @@ package com.oracle.truffle.r.test.builtins;
 import org.junit.Test;
 
 import com.oracle.truffle.r.test.TestBase;
+import com.oracle.truffle.r.test.TestBase.Output;
 
 // Checkstyle: stop line length check
 public class TestBuiltin_asPOSIXlt extends TestBase {
@@ -71,4 +72,10 @@ public class TestBuiltin_asPOSIXlt extends TestBase {
     public void testasPOSIXlt11() {
         assertEval("argv <- list(NULL, ''); .Internal(as.POSIXlt(argv[[1]], argv[[2]]))");
     }
+
+    @Test
+    public void testasPOSIXlt() {
+        assertEval(Output.MayIgnoreErrorContext, ".Internal(as.POSIXlt(, 1))");
+        assertEval(Output.MayIgnoreErrorContext, ".Internal(as.POSIXlt(2, ))");
+    }
 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_ascharacter.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_ascharacter.java
index 551890dda835ba3c7345b6594e5993e9160986c6..c14ea94779518649d14ea38c2f50ae62e5c8802c 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_ascharacter.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_ascharacter.java
@@ -249,6 +249,7 @@ public class TestBuiltin_ascharacter extends TestBase {
 
     @Test
     public void testAsCharacter() {
+        assertEval("{ as.character() }");
         assertEval("{ as.character(1) }");
         assertEval("{ as.character(1L) }");
         assertEval("{ as.character(TRUE) }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_ascomplex.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_ascomplex.java
index e8c02db81367dfeafb82b671b8e4771134568f50..7f63eca369365b415e2d414f107f1e5e6cd2f87f 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_ascomplex.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_ascomplex.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.
  */
@@ -74,6 +74,7 @@ public class TestBuiltin_ascomplex extends TestBase {
 
     @Test
     public void testAsComplex() {
+        assertEval("{ as.complex() }");
         assertEval("{ as.complex(0) }");
         assertEval("{ as.complex(TRUE) }");
         assertEval("{ as.complex(\"1+5i\") }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asdouble.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asdouble.java
index be3fdc04e5c106ffc04ba0c3b82b29936cdcc8b5..2277c791797344f2663cb0b96fada0a8b4cd49a1 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asdouble.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asdouble.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.
  */
@@ -175,6 +175,7 @@ public class TestBuiltin_asdouble extends TestBase {
 
     @Test
     public void testAsDouble() {
+        assertEval("{ as.double() }");
         assertEval("{ as.double(\"1.27\") }");
         assertEval("{ as.double(1L) }");
         assertEval("{ as.double(as.raw(1)) }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asinteger.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asinteger.java
index dc6b2ebb7ac90798f560f21007f87cbc3592583f..6efaa38af0fc646336bef5e74fa19a7281053daa 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asinteger.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asinteger.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.
  */
@@ -116,6 +116,7 @@ public class TestBuiltin_asinteger extends TestBase {
 
     @Test
     public void testAsInteger() {
+        assertEval("{ as.integer() }");
         assertEval("{ as.integer(\"1\") }");
         assertEval("{ as.integer(c(\"1\",\"2\")) }");
         assertEval("{ as.integer(c(1,2,3)) }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asraw.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asraw.java
index cd7d0198a34beb1d9641563e31ec0d82da549305..d8c0187dacfb3f77352b69a7d78d97ffad8bf785 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asraw.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_asraw.java
@@ -49,6 +49,7 @@ public class TestBuiltin_asraw extends TestBase {
 
     @Test
     public void testAsRaw() {
+        assertEval("{ as.raw() }");
         assertEval("{ as.raw(NULL) }");
         assertEval("{ as.raw(1) }");
         assertEval("{ as.raw(1L) }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bincode.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bincode.java
index b846256ea75fa4d6d6827fbd93489d2d7ba019ff..15d35bf6b79c2be67e67ea74a4e1d74f3c088716 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bincode.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bincode.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.
  */
@@ -53,5 +53,11 @@ public class TestBuiltin_bincode extends TestBase {
         assertEval("{ x <- c(0, 0.01, 0.5, 0.99, 1); b <- c(0, 0, 1, 1); .bincode(x, b, FALSE) }");
         assertEval("{ x <- c(0, 0.01, 0.5, 0.99, 1); b <- c(0, 0, 1, 1); .bincode(x, b, TRUE, TRUE) }");
         assertEval("{ x <- c(0, 0.01, 0.5, 0.99, 1); b <- c(0, 0, 1, 1); .bincode(x, b, FALSE, TRUE) }");
+
+        assertEval("{ .Internal(bincode(NULL, 2, T, T)) }");
+        assertEval("{ .Internal(bincode(2, NULL, T, T)) }");
+
+        assertEval(Output.MayIgnoreErrorContext, "{ .Internal(bincode(, 1, T, T)) }");
+        assertEval(Output.MayIgnoreErrorContext, "{ .Internal(bincode(1, ,T, T)) }");
     }
 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bitwiseShiftL.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bitwiseShiftL.java
index d750ef4512f5eceb0a3ed868196669f13807a4ac..d62332e72c93da6ec21490bf61041ad8d309db4a 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bitwiseShiftL.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bitwiseShiftL.java
@@ -24,6 +24,8 @@ public class TestBuiltin_bitwiseShiftL extends TestBase {
 
     @Test
     public void testBitwiseFunctions() {
+        assertEval(Output.MayIgnoreErrorContext, "{ .Internal(bitwiseShiftL(, 1))}");
+        assertEval(Output.MayIgnoreErrorContext, "{ .Internal(bitwiseShiftL(200, ))}");
         assertEval("{ bitwShiftL(c(10,11,12,13,14,15), c(1,1,1,1,1,1)) }");
         assertEval("{ bitwShiftL(c(100,200,300), 1) }");
         assertEval("{ bitwShiftL(c(25,57,66), c(10,20,30,40,50,60)) }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bitwiseShiftR.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bitwiseShiftR.java
index de9c5d5ae2fa1553e4bdd4114a2ee5bbb26b0391..436951f231dd6b36f1f957129ac5b2089785cf4e 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bitwiseShiftR.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_bitwiseShiftR.java
@@ -13,6 +13,7 @@ package com.oracle.truffle.r.test.builtins;
 import org.junit.Test;
 
 import com.oracle.truffle.r.test.TestBase;
+import com.oracle.truffle.r.test.TestBase.Output;
 
 // Checkstyle: stop line length check
 public class TestBuiltin_bitwiseShiftR extends TestBase {
@@ -24,6 +25,8 @@ public class TestBuiltin_bitwiseShiftR extends TestBase {
 
     @Test
     public void testBitwiseFunctions() {
+        assertEval(Output.MayIgnoreErrorContext, "{ .Internal(bitwiseShiftR(, 1))}");
+        assertEval(Output.MayIgnoreErrorContext, "{ .Internal(bitwiseShiftR(200, ))}");
         assertEval("{ bitwShiftR(c(10,11,12,13,14,15), c(1,1,1,1,1,1)) }");
         assertEval("{ bitwShiftR(c(100,200,300), 1) }");
         assertEval("{ bitwShiftR(c(25,57,66), c(10,20,30,40,50,60)) }");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_classassign.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_classassign.java
index 4d2c9af5a108b1587540bff0bec573dc8f956b91..307c2f258cbe3f40911ca15dc30466d18408b609 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_classassign.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_classassign.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 com.oracle.truffle.r.test.TestBase.Output;
 
 // Checkstyle: stop line length check
 public class TestBuiltin_classassign extends TestBase {
@@ -126,6 +127,11 @@ public class TestBuiltin_classassign extends TestBase {
 
     @Test
     public void testUpdateClass() {
+        assertEval(Output.MayIgnoreErrorContext, "{`class<-`(, \"foo\") }");
+        assertEval(Output.MayIgnoreErrorContext, "{`class<-`(, ) }");
+        assertEval(Output.MayIgnoreErrorContext, "{x=1; `class<-`(x, ) }");
+        assertEval(Output.MayIgnoreErrorContext, "{`class<-`(NULL, \"first\") }");
+
         assertEval("{x=1; class(x)<-\"first\"; x;}");
 
         assertEval("{ x=1;class(x)<-\"character\"; x}");