Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 610194e1341d5e36cbe74f89330ac0d81feb73af)
+++ src/Parser/DeclarationNode.cc	(revision 2e0285177bb7e5cdc2afd200e041b827f132f1a3)
@@ -1003,4 +1003,29 @@
 				// };
 				if ( ! (extracted && decl->name == "" && ! anon) ) {
+					if (decl->name == "") {
+						if ( DeclarationWithType * dwt = dynamic_cast<DeclarationWithType *>( decl ) ) {
+							if ( ReferenceToType * aggr = dynamic_cast<ReferenceToType *>( dwt->get_type() ) ) {
+								if ( aggr->name.find("anonymous") == std::string::npos ) {
+									bool isInline = false;
+									if (cur->type->kind == TypeData::Aggregate || cur->type->kind == TypeData::AggregateInst) {
+										if (cur->type->kind == TypeData::Aggregate) {
+											isInline = cur->type->aggregate.inLine;
+										} else {
+											isInline = cur->type->aggInst.inLine;
+											if ( TypeData * aggr = cur->type->aggInst.aggregate ) {
+												if ( aggr->kind == TypeData::Aggregate ) {
+													isInline = isInline || aggr->aggregate.inLine;
+												}
+											}
+										}
+									}
+									if (! isInline) {
+										// temporary: warn about anonymous member declarations of named types, since this conflicts with the syntax for the forward declaration of an anonymous type
+										SemanticWarning( cur->location, Warning::AggrForwardDecl, aggr->name.c_str() );
+									}
+								}
+							}
+						}
+					}
 					decl->location = cur->location;
 					* out++ = decl;
