Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision 9554d9b8896c38886ce2b6bb9384a2f1927f81d6)
+++ src/SymTab/Validate.cc	(revision 70f89d00f25700f0fc226d5210840f0199c6d9f0)
@@ -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 );
 	}
 
