Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision f74eb47b67635f6f7417c39c044b16d594cfd993)
+++ src/Parser/DeclarationNode.cc	(revision b2da05741abf9ee33682eff93563c8cf8bcd7eba)
@@ -924,8 +924,10 @@
 				delete newType->aggInst.aggregate->enumeration.constants;
 				newType->aggInst.aggregate->enumeration.constants = nullptr;
+				newType->aggInst.aggregate->enumeration.body = false;
 			} else {
 				assert( newType->aggInst.aggregate->kind == TypeData::Aggregate );
 				delete newType->aggInst.aggregate->aggregate.fields;
 				newType->aggInst.aggregate->aggregate.fields = nullptr;
+				newType->aggInst.aggregate->aggregate.body = false;
 			} // if
 			// don't hoist twice
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision f74eb47b67635f6f7417c39c044b16d594cfd993)
+++ src/Parser/TypeData.cc	(revision b2da05741abf9ee33682eff93563c8cf8bcd7eba)
@@ -490,10 +490,10 @@
 	switch ( td->kind ) {
 	  case TypeData::Aggregate:
-		if ( ! toplevel && td->aggregate.fields ) {
+		if ( ! toplevel && td->aggregate.body ) {
 			ret = td->clone();
 		} // if
 		break;
 	  case TypeData::Enum:
-		if ( ! toplevel && td->enumeration.constants ) {
+		if ( ! toplevel && td->enumeration.body ) {
 			ret = td->clone();
 		} // if
Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision f74eb47b67635f6f7417c39c044b16d594cfd993)
+++ src/SymTab/Indexer.cc	(revision b2da05741abf9ee33682eff93563c8cf8bcd7eba)
@@ -501,7 +501,7 @@
 
 	bool addedDeclConflicts( AggregateDecl *existing, AggregateDecl *added ) {
-		if ( existing->get_members().empty() ) {
+		if ( ! existing->body ) {
 			return false;
-		} else if ( ! added->get_members().empty() ) {
+		} else if ( added->body ) {
 			SemanticError( added, "redeclaration of " );
 		} // if
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision f74eb47b67635f6f7417c39c044b16d594cfd993)
+++ src/SymTab/Validate.cc	(revision b2da05741abf9ee33682eff93563c8cf8bcd7eba)
@@ -316,5 +316,5 @@
 
 	void HoistStruct::previsit( EnumInstType * inst ) {
-		if ( inst->baseEnum ) {
+		if ( inst->baseEnum && inst->baseEnum->body ) {
 			declsToAddBefore.push_front( inst->baseEnum );
 		}
@@ -322,5 +322,5 @@
 
 	void HoistStruct::previsit( StructInstType * inst ) {
-		if ( inst->baseStruct ) {
+		if ( inst->baseStruct && inst->baseStruct->body ) {
 			declsToAddBefore.push_front( inst->baseStruct );
 		}
@@ -328,5 +328,5 @@
 
 	void HoistStruct::previsit( UnionInstType * inst ) {
-		if ( inst->baseUnion ) {
+		if ( inst->baseUnion && inst->baseUnion->body ) {
 			declsToAddBefore.push_front( inst->baseUnion );
 		}
