Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision 73367a87fbe842d9bd2c9036148d39f297bd24d4)
+++ src/Common/PassVisitor.impl.h	(revision 2cb70aa1200e7a231a4b488eb6c757cd2bede28e)
@@ -365,7 +365,5 @@
 	maybeAccept_impl   ( node->attributes   , *this );
 
-	if ( node->name != "" ) {
-		indexerAddId( node );
-	}
+	indexerAddId( node );
 
 	VISIT_END( node );
@@ -381,7 +379,5 @@
 	maybeMutate_impl   ( node->attributes   , *this );
 
-	if ( node->name != "" ) {
-		indexerAddId( node );
-	}
+	indexerAddId( node );
 
 	MUTATE_END( DeclarationWithType, node );
@@ -394,9 +390,10 @@
 	VISIT_START( node );
 
-	if ( node->name != "" ) {
-		indexerAddId( node );
-	}
-
-	{
+	indexerAddId( node );
+
+	{
+		// with clause introduces a level of scope (for the with expression members).
+		// with clause exprs are added to the indexer before parameters so that parameters
+		// 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
@@ -419,9 +416,10 @@
 	MUTATE_START( node );
 
-	if ( node->name != "" ) {
-		indexerAddId( node );
-	}
-
-	{
+	indexerAddId( node );
+
+	{
+		// with clause introduces a level of scope (for the with expression members).
+		// with clause exprs are added to the indexer before parameters so that parameters
+		// 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
