Index: src/Common/PassVisitor.h
===================================================================
--- src/Common/PassVisitor.h	(revision ca69a8af1fd8e4a4f5d7db9cacd2292fe31c3156)
+++ src/Common/PassVisitor.h	(revision 7ff35e0e9d22f318f67ab6ff6dae531af68e5edc)
@@ -230,4 +230,6 @@
 	virtual void visit( TypeofType * typeofType ) override final;
 	virtual void visit( const TypeofType * typeofType ) override final;
+	virtual void visit( VTableType * vtableType ) override final;
+	virtual void visit( const VTableType * vtableType ) override final;
 	virtual void visit( AttrType * attrType ) override final;
 	virtual void visit( const AttrType * attrType ) override final;
@@ -343,4 +345,5 @@
 	virtual Type * mutate( TupleType * tupleType ) override final;
 	virtual Type * mutate( TypeofType * typeofType ) override final;
+	virtual Type * mutate( VTableType * vtableType ) override final;
 	virtual Type * mutate( AttrType * attrType ) override final;
 	virtual Type * mutate( VarArgsType * varArgsType ) override final;
Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision ca69a8af1fd8e4a4f5d7db9cacd2292fe31c3156)
+++ src/Common/PassVisitor.impl.h	(revision 7ff35e0e9d22f318f67ab6ff6dae531af68e5edc)
@@ -3610,4 +3610,39 @@
 
 //--------------------------------------------------------------------------
+// VTableType
+template< typename pass_type >
+void PassVisitor< pass_type >::visit( VTableType * node ) {
+	VISIT_START( node );
+
+	// Forall qualifiers should be on base type, not here
+	// maybeAccept_impl( node->forall, *this );
+	maybeAccept_impl( node->base, *this );
+
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+void PassVisitor< pass_type >::visit( const VTableType * node ) {
+	VISIT_START( node );
+
+	// Forall qualifiers should be on base type, not here
+	// maybeAccept_impl( node->forall, *this );
+	maybeAccept_impl( node->base, *this );
+
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+Type * PassVisitor< pass_type >::mutate( VTableType * node ) {
+	MUTATE_START( node );
+
+	// Forall qualifiers should be on base type, not here
+	// maybeMutate_impl( node->forall, *this );
+	maybeMutate_impl( node->base, *this );
+
+	MUTATE_END( Type, node );
+}
+
+//--------------------------------------------------------------------------
 // AttrType
 template< typename pass_type >
Index: src/SynTree/Mutator.h
===================================================================
--- src/SynTree/Mutator.h	(revision ca69a8af1fd8e4a4f5d7db9cacd2292fe31c3156)
+++ src/SynTree/Mutator.h	(revision 7ff35e0e9d22f318f67ab6ff6dae531af68e5edc)
@@ -112,4 +112,5 @@
 	virtual Type * mutate( TupleType * tupleType ) = 0;
 	virtual Type * mutate( TypeofType * typeofType ) = 0;
+	virtual Type * mutate( VTableType * vtableType ) = 0;
 	virtual Type * mutate( AttrType * attrType ) = 0;
 	virtual Type * mutate( VarArgsType * varArgsType ) = 0;
Index: src/SynTree/SynTree.h
===================================================================
--- src/SynTree/SynTree.h	(revision ca69a8af1fd8e4a4f5d7db9cacd2292fe31c3156)
+++ src/SynTree/SynTree.h	(revision 7ff35e0e9d22f318f67ab6ff6dae531af68e5edc)
@@ -119,4 +119,5 @@
 class TupleType;
 class TypeofType;
+class VTableType;
 class AttrType;
 class VarArgsType;
Index: src/SynTree/Visitor.h
===================================================================
--- src/SynTree/Visitor.h	(revision ca69a8af1fd8e4a4f5d7db9cacd2292fe31c3156)
+++ src/SynTree/Visitor.h	(revision 7ff35e0e9d22f318f67ab6ff6dae531af68e5edc)
@@ -198,4 +198,6 @@
 	virtual void visit( TypeofType * node ) { visit( const_cast<const TypeofType *>(node) ); }
 	virtual void visit( const TypeofType * typeofType ) = 0;
+	virtual void visit( VTableType * node ) { visit( const_cast<const VTableType *>(node) ); }
+	virtual void visit( const VTableType * vtableType ) = 0;
 	virtual void visit( AttrType * node ) { visit( const_cast<const AttrType *>(node) ); }
 	virtual void visit( const AttrType * attrType ) = 0;
