Index: src/Common/PassVisitor.h
===================================================================
--- src/Common/PassVisitor.h	(revision 54c9000e4efa1fe5278b3e7542f24426b99cc070)
+++ src/Common/PassVisitor.h	(revision 44b41141bccae974eea50a7e612d003d7ed7e9fa)
@@ -121,4 +121,5 @@
 	virtual void visit( UntypedInitExpr *  initExpr ) override final;
 	virtual void visit( InitExpr *  initExpr ) override final;
+	virtual void visit( DeletedExpr *  delExpr ) override final;
 
 	virtual void visit( VoidType * basicType ) override final;
@@ -215,4 +216,5 @@
 	virtual Expression * mutate( UntypedInitExpr *  initExpr ) override final;
 	virtual Expression * mutate( InitExpr *  initExpr ) override final;
+	virtual Expression * mutate( DeletedExpr *  delExpr ) override final;
 
 	virtual Type * mutate( VoidType * basicType ) override final;
Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision 54c9000e4efa1fe5278b3e7542f24426b99cc070)
+++ src/Common/PassVisitor.impl.h	(revision 44b41141bccae974eea50a7e612d003d7ed7e9fa)
@@ -1976,4 +1976,29 @@
 }
 
+//--------------------------------------------------------------------------
+// DeletedExpr
+template< typename pass_type >
+void PassVisitor< pass_type >::visit( DeletedExpr * node ) {
+	VISIT_START( node );
+
+	indexerScopedAccept( node->result, *this );
+	maybeAccept_impl( node->expr, *this );
+	// don't visit deleteStmt, because it is a pointer to somewhere else in the tree.
+
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+Expression * PassVisitor< pass_type >::mutate( DeletedExpr * node ) {
+	MUTATE_START( node );
+
+	indexerScopedMutate( node->env, *this );
+	indexerScopedMutate( node->result, *this );
+	maybeMutate_impl( node->expr, *this );
+
+	MUTATE_END( Expression, node );
+}
+
+
 template< typename pass_type >
 void PassVisitor< pass_type >::visit( VoidType * node ) {
