Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 9dc31c106f1a43094de3a5a6e85d3125948b4ef9)
+++ src/Parser/DeclarationNode.cc	(revision c28afead3fc6f0b5c6246bbd5dfbe4841fcc3902)
@@ -928,8 +928,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/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision 9dc31c106f1a43094de3a5a6e85d3125948b4ef9)
+++ src/Parser/ExpressionNode.cc	(revision c28afead3fc6f0b5c6246bbd5dfbe4841fcc3902)
@@ -211,11 +211,11 @@
 	if ( Unsigned && size < 2 ) {						// hh or h, less than int ?
 		// int i = -1uh => 65535 not -1, so cast is necessary for unsigned, which unfortunately eliminates warnings for large values.
-		ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[Unsigned][size] ) );
+		ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[Unsigned][size] ), false );
 	} else if ( lnth != -1 ) {							// explicit length ?
 		if ( lnth == 5 ) {								// int128 ?
 			size = 5;
-			ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[Unsigned][size] ) );
+			ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[Unsigned][size] ), false );
 		} else {
-			ret = new CastExpr( ret, new TypeInstType( Type::Qualifiers(), lnthsInt[Unsigned][lnth], false ) );
+			ret = new CastExpr( ret, new TypeInstType( Type::Qualifiers(), lnthsInt[Unsigned][lnth], false ), false );
 		} // if
 	} // if
@@ -285,5 +285,5 @@
 	Expression * ret = new ConstantExpr( Constant( new BasicType( noQualifiers, kind[complx][size] ), str, v ) );
 	if ( lnth != -1 ) {									// explicit length ?
-		ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[complx][size] ) );
+		ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[complx][size] ), false );
 	} // if
 
@@ -408,7 +408,7 @@
 	if ( dynamic_cast< VoidType * >( targetType ) ) {
 		delete targetType;
-		return new CastExpr( maybeMoveBuild< Expression >(expr_node) );
+		return new CastExpr( maybeMoveBuild< Expression >(expr_node), false );
 	} else {
-		return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType );
+		return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType, false );
 	} // if
 } // build_cast
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 9dc31c106f1a43094de3a5a6e85d3125948b4ef9)
+++ src/Parser/TypeData.cc	(revision c28afead3fc6f0b5c6246bbd5dfbe4841fcc3902)
@@ -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
