Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision c453ac472f138ea3361af34d8337b990d1a6a916)
+++ src/Common/PassVisitor.impl.h	(revision 7aaec677f76cafec43575483756244d92ae4df0d)
@@ -392,4 +392,5 @@
 	indexerAddId( node );
 
+	maybeAccept_impl( node->withExprs, *this );
 	{
 		// with clause introduces a level of scope (for the with expression members).
@@ -397,14 +398,18 @@
 		// shadow with exprs and not the other way around.
 		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
-		// implicit add __func__ identifier as specified in the C manual 6.4.2.2
-		static ObjectDecl func(
-			"__func__", noStorageClasses, LinkageSpec::C, nullptr,
-			new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char ), nullptr, true, false ),
-			nullptr
-		);
-		indexerAddId( &func );
-		maybeAccept_impl( node->type, *this );
-		maybeAccept_impl( node->statements, *this );
-		maybeAccept_impl( node->attributes, *this );
+		indexerAddWith( node->withExprs );
+		{
+			auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
+			// implicit add __func__ identifier as specified in the C manual 6.4.2.2
+			static ObjectDecl func(
+				"__func__", noStorageClasses, LinkageSpec::C, nullptr,
+				new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char ), nullptr, true, false ),
+				nullptr
+			);
+			indexerAddId( &func );
+			maybeAccept_impl( node->type, *this );
+			maybeAccept_impl( node->statements, *this );
+			maybeAccept_impl( node->attributes, *this );
+		}
 	}
 
@@ -423,14 +428,18 @@
 		// shadow with exprs and not the other way around.
 		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
-		// implicit add __func__ identifier as specified in the C manual 6.4.2.2
-		static ObjectDecl func(
-			"__func__", noStorageClasses, LinkageSpec::C, nullptr,
-			new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char ), nullptr, true, false ),
-			nullptr
-		);
-		indexerAddId( &func );
-		maybeMutate_impl( node->type, *this );
-		maybeMutate_impl( node->statements, *this );
-		maybeMutate_impl( node->attributes, *this );
+		indexerAddWith( node->withExprs );
+		{
+			auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
+			// implicit add __func__ identifier as specified in the C manual 6.4.2.2
+			static ObjectDecl func(
+				"__func__", noStorageClasses, LinkageSpec::C, nullptr,
+				new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char ), nullptr, true, false ),
+				nullptr
+			);
+			indexerAddId( &func );
+			maybeMutate_impl( node->type, *this );
+			maybeMutate_impl( node->statements, *this );
+			maybeMutate_impl( node->attributes, *this );
+		}
 	}
 
