Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision c0bf94ec8b5f4f0f6a4ac9de014bc1d596f29233)
+++ 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 c0bf94ec8b5f4f0f6a4ac9de014bc1d596f29233)
+++ 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
