diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Quote.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Quote.java
index 4c660421abd73dc5601c3835a5a627f533bf324e..79696556bbdfd1309cc948dce7a906df955b165c 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Quote.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Quote.java
@@ -39,6 +39,7 @@ public abstract class Quote extends RBuiltinNode {
     public abstract Object execute(VirtualFrame frame, RPromise expr);
 
     private final ConditionProfile rvn = ConditionProfile.createBinaryProfile();
+    private final ConditionProfile rvcn = ConditionProfile.createBinaryProfile();
     private final ConditionProfile cn = ConditionProfile.createBinaryProfile();
 
     @Specialization
@@ -57,6 +58,8 @@ public abstract class Quote extends RBuiltinNode {
         } else if (cn.profile(unode instanceof ConstantNode)) {
             ConstantNode cnode = (ConstantNode) unode;
             return cnode.getValue();
+        } else if (rvcn.profile(unode instanceof ReadVariadicComponentNode)) {
+            return RASTUtils.createRSymbol(unode);
         } else {
             return RDataFactory.createLanguage(unode);
         }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTUtils.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTUtils.java
index 00acaa92df3cfaee2b6b4dcac90c6a28e500bc8a..71b41c4f2e52cf50140843675e9d09ce7deb3476 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTUtils.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTUtils.java
@@ -106,11 +106,17 @@ public class RASTUtils {
     }
 
     /**
-     * Creates an {@link RSymbol} from a {@link ReadVariableNode}.
+     * Creates an {@link RSymbol} from a {@link ReadVariableNode} o
+     * {@link ReadVariadicComponentNode}.
      */
     @TruffleBoundary
     public static RSymbol createRSymbol(Node readVariableNode) {
-        return RDataFactory.createSymbol(((ReadVariableNode) readVariableNode).getIdentifier());
+        if (readVariableNode instanceof ReadVariadicComponentNode) {
+            ReadVariadicComponentNode rvcn = (ReadVariadicComponentNode) readVariableNode;
+            return RDataFactory.createSymbol(rvcn.getPrintForm());
+        } else {
+            return RDataFactory.createSymbol(((ReadVariableNode) readVariableNode).getIdentifier());
+        }
     }
 
     /**
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariadicComponentNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariadicComponentNode.java
index 60c3e761e3fac792e5c612f67fd60cb2c6709e9e..c33a7095da3def6c5a55322738ec874f4b0c1505 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariadicComponentNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariadicComponentNode.java
@@ -84,11 +84,14 @@ public class ReadVariadicComponentNode extends RNode implements RSyntaxNode {
         return ret == null ? RMissing.instance : ret;
     }
 
+    public String getPrintForm() {
+        return ".." + Integer.toString(index + 1);
+    }
+
     @Override
     public void deparseImpl(State state) {
         state.startNodeDeparse(this);
-        state.append("..");
-        state.append(Integer.toString(index + 1));
+        state.append(getPrintForm());
         state.endNodeDeparse(this);
     }
 
@@ -97,6 +100,6 @@ public class ReadVariadicComponentNode extends RNode implements RSyntaxNode {
     }
 
     public void serializeImpl(com.oracle.truffle.r.runtime.RSerialize.State state) {
-        throw RInternalError.unimplemented();
+        state.setCarAsSymbol(getPrintForm());
     }
 }