Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision be9288a525b285ac5a849a870863a162fd3d36c7)
+++ src/SymTab/Indexer.cc	(revision 936e9f47be7f2533aa23362d452e6b7a2a5c72fa)
@@ -353,4 +353,17 @@
 	}
 
+	void Indexer::visit( ForStmt *forStmt ) {
+	    // for statements introduce a level of scope
+	    enterScope();
+	    Visitor::visit( forStmt );
+	    leaveScope();
+	}
+
+	void Indexer::visit( CatchStmt *catchStmt ) {
+		// catch statements introduce a level of scope (for the caught exception)
+		enterScope();
+		Visitor::visit( catchStmt );
+		leaveScope();
+	}
 
 	void Indexer::visit( ApplicationExpr *applicationExpr ) {
@@ -556,13 +569,4 @@
 		leaveScope();
 	}
-
-	void Indexer::visit( ForStmt *forStmt ) {
-	    // for statements introduce a level of scope
-	    enterScope();
-	    Visitor::visit( forStmt );
-	    leaveScope();
-	}
-
-
 
 	void Indexer::lookupId( const std::string &id, std::list< DeclarationWithType* > &out ) const {
Index: src/SymTab/Indexer.h
===================================================================
--- src/SymTab/Indexer.h	(revision be9288a525b285ac5a849a870863a162fd3d36c7)
+++ src/SymTab/Indexer.h	(revision 936e9f47be7f2533aa23362d452e6b7a2a5c72fa)
@@ -45,4 +45,6 @@
 
 		virtual void visit( CompoundStmt *compoundStmt );
+		virtual void visit( ForStmt *forStmt );
+		virtual void visit( CatchStmt *catchStmt );
 
 		virtual void visit( ApplicationExpr *applicationExpr );
@@ -81,6 +83,4 @@
 		virtual void visit( StructInstType *contextInst );
 		virtual void visit( UnionInstType *contextInst );
-
-		virtual void visit( ForStmt *forStmt );
 
 		// when using an indexer manually (e.g., within a mutator traversal), it is necessary to tell the indexer
