Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 26ef3b2397369bc3bef6e6a70bd6a0d03d84bbd3)
+++ src/Parser/DeclarationNode.cc	(revision 8a3ecb9d480fc4ef7f8aafe585128c501f7a9384)
@@ -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;
Index: src/Parser/TypedefTable.cc
===================================================================
--- src/Parser/TypedefTable.cc	(revision 26ef3b2397369bc3bef6e6a70bd6a0d03d84bbd3)
+++ src/Parser/TypedefTable.cc	(revision 8a3ecb9d480fc4ef7f8aafe585128c501f7a9384)
@@ -5,11 +5,11 @@
 // file "LICENCE" distributed with Cforall.
 //
-// TypedefTable.cc -- 
+// TypedefTable.cc --
 //
 // Author           : Peter A. Buhr
 // Created On       : Sat May 16 15:20:13 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 12 16:16:24 2018
-// Update Count     : 256
+// Last Modified On : Fri Jul 13 18:35:54 2018
+// Update Count     : 257
 //
 
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 26ef3b2397369bc3bef6e6a70bd6a0d03d84bbd3)
+++ src/Parser/parser.yy	(revision 8a3ecb9d480fc4ef7f8aafe585128c501f7a9384)
@@ -2307,8 +2307,10 @@
 		{ $$ = new ExpressionNode( new TypeExpr( maybeMoveBuildType( $1 ) ) ); }
 	| assignment_expression
+		{ SemanticError( yylloc, toString("Expression generic parameters are currently unimplemented: ", $1->build()) ); $$ = nullptr; }
 	| type_list ',' type
 		{ $$ = (ExpressionNode *)( $1->set_last( new ExpressionNode( new TypeExpr( maybeMoveBuildType( $3 ) ) ) ) ); }
 	| type_list ',' assignment_expression
-		{ $$ = (ExpressionNode *)( $1->set_last( $3 )); }
+		{ SemanticError( yylloc, toString("Expression generic parameters are currently unimplemented: ", $3->build()) ); $$ = nullptr; }
+		// { $$ = (ExpressionNode *)( $1->set_last( $3 )); }
 	;
 
