Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision 2a7e29b9f4c8e0d554bac2d1b9356c11a4fbcaba)
+++ src/SymTab/Validate.cc	(revision 018fac462e3fa6838082850f460ecc8416e967f1)
@@ -385,4 +385,6 @@
 
 	void Pass2::visit( StructDecl *structDecl ) {
+		// visit struct members first so that the types of self-referencing members are updated properly
+		Parent::visit( structDecl );
 		if ( ! structDecl->get_members().empty() ) {
 			ForwardStructsType::iterator fwds = forwardStructs.find( structDecl->get_name() );
@@ -394,8 +396,8 @@
 			} // if
 		} // if
-		Indexer::visit( structDecl );
 	}
 
 	void Pass2::visit( UnionDecl *unionDecl ) {
+		Parent::visit( unionDecl );
 		if ( ! unionDecl->get_members().empty() ) {
 			ForwardUnionsType::iterator fwds = forwardUnions.find( unionDecl->get_name() );
@@ -407,5 +409,4 @@
 			} // if
 		} // if
-		Indexer::visit( unionDecl );
 	}
 
