Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision 5e2c348d7200f13e88bb910c1e095982dd72bc7b)
+++ 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
Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision 5e2c348d7200f13e88bb910c1e095982dd72bc7b)
+++ src/SymTab/Indexer.cc	(revision 2cb70aa1200e7a231a4b488eb6c757cd2bede28e)
@@ -409,4 +409,5 @@
 
 	void Indexer::addId( DeclarationWithType *decl, Expression * baseExpr ) {
+		if ( decl->name == "" ) return;
 		debugPrint( "Adding Id " << decl->name << std::endl );
 		makeWritable();
