Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 56de6b39ab5b9030703f9b3fc0e81e14b65f2e89)
+++ src/Parser/parser.yy	(revision 8a78dd36b2c7688afd87734f9b3e4b86b9575ad4)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Nov 20 09:45:36 2017
-// Update Count     : 2945
+// Last Modified On : Sun Nov 26 11:36:36 2017
+// Update Count     : 2969
 //
 
@@ -345,5 +345,5 @@
 %type<en> type_list
 
-%type<decl> type_qualifier type_qualifier_name type_qualifier_list_opt type_qualifier_list
+%type<decl> type_qualifier type_qualifier_name forall type_qualifier_list_opt type_qualifier_list
 %type<decl> type_specifier type_specifier_nobody
 
@@ -379,5 +379,5 @@
 //   `---'						matches start of TYPEGENname '('
 // Must be:
-// Foo( int ) ( *fp )( int );
+//   Foo( int ) ( *fp )( int );
 
 // Order of these lines matters (low-to-high precedence).
@@ -1058,5 +1058,5 @@
 with_statement:
 	WITH '(' tuple_expression_list ')' statement
-		{ $$ = nullptr; }								// FIX ME
+		{ throw SemanticError("With clause is currently unimplemented."); $$ = nullptr; } // FIX ME
 	;
 
@@ -1064,5 +1064,5 @@
 mutex_statement:
 	MUTEX '(' argument_expression_list ')' statement
-		{ $$ = nullptr; }								// FIX ME
+		{ throw SemanticError("Mutex statement is currently unimplemented."); $$ = nullptr; } // FIX ME
 	;
 
@@ -1280,4 +1280,6 @@
 	c_declaration pop ';'
 	| cfa_declaration pop ';'							// CFA
+	| STATICASSERT '(' constant_expression ',' string_literal ')' ';' // C11
+		{ throw SemanticError("Static assert is currently unimplemented."); $$ = nullptr; }	// FIX ME
 	;
 
@@ -1587,5 +1589,9 @@
 	| ATOMIC
 		{ $$ = DeclarationNode::newTypeQualifier( Type::Atomic ); }
-	| FORALL '('
+	| forall
+	;
+
+forall:
+	FORALL '('
 		{
 			typedefTable.enterScope();
@@ -2374,4 +2380,5 @@
 			$$ = $2;
 		}
+	| forall '{' external_definition_list '}'			// CFA, namespace
 	;
 
@@ -2399,7 +2406,7 @@
 with_clause_opt:
 	// empty
-		{ $$ = nullptr; }								// FIX ME
+		{ $$ = nullptr; }
 	| WITH '(' tuple_expression_list ')'
-		{ $$ = nullptr; }								// FIX ME
+		{ throw SemanticError("With clause is currently unimplemented."); $$ = nullptr; } // FIX ME
 	;
 
@@ -2418,4 +2425,5 @@
 			$$ = $2->addFunctionBody( $4 )->addType( $1 );
 		}
+		// handles default int return type, OBSOLESCENT (see 1)
 	| type_qualifier_list function_declarator with_clause_opt compound_statement
 		{
@@ -2424,4 +2432,5 @@
 			$$ = $2->addFunctionBody( $4 )->addQualifiers( $1 );
 		}
+		// handles default int return type, OBSOLESCENT (see 1)
 	| declaration_qualifier_list function_declarator with_clause_opt compound_statement
 		{
@@ -2430,4 +2439,5 @@
 			$$ = $2->addFunctionBody( $4 )->addQualifiers( $1 );
 		}
+		// handles default int return type, OBSOLESCENT (see 1)
 	| declaration_qualifier_list type_qualifier_list function_declarator with_clause_opt compound_statement
 		{
@@ -2445,4 +2455,5 @@
 			$$ = $2->addOldDeclList( $3 )->addFunctionBody( $5 )->addType( $1 );
 		}
+		// handles default int return type, OBSOLESCENT (see 1)
 	| type_qualifier_list KR_function_declarator KR_declaration_list_opt with_clause_opt compound_statement
 		{
@@ -2451,6 +2462,5 @@
 			$$ = $2->addOldDeclList( $3 )->addFunctionBody( $5 )->addQualifiers( $1 );
 		}
-
-		// Old-style K&R function definition with "implicit int" type_specifier, OBSOLESCENT (see 4)
+		// handles default int return type, OBSOLESCENT (see 1)
 	| declaration_qualifier_list KR_function_declarator KR_declaration_list_opt with_clause_opt compound_statement
 		{
@@ -2459,4 +2469,5 @@
 			$$ = $2->addOldDeclList( $3 )->addFunctionBody( $5 )->addQualifiers( $1 );
 		}
+		// handles default int return type, OBSOLESCENT (see 1)
 	| declaration_qualifier_list type_qualifier_list KR_function_declarator KR_declaration_list_opt with_clause_opt compound_statement
 		{
Index: src/tests/polymorphism.c
===================================================================
--- src/tests/polymorphism.c	(revision 56de6b39ab5b9030703f9b3fc0e81e14b65f2e89)
+++ src/tests/polymorphism.c	(revision 8a78dd36b2c7688afd87734f9b3e4b86b9575ad4)
@@ -47,5 +47,5 @@
 	S s;
 	s.i = i;
-	assert(s.i == i);
+	assertf(s.i == i, "struct operation fails in polymorphic context.");
 
 	B b;
@@ -73,6 +73,6 @@
 	{
 		// test aggregates with polymorphic members
-		typedef uint32_t x_type;
-		typedef uint64_t y_type;
+		typedef __attribute__((aligned(8))) uint32_t x_type;
+		typedef __attribute__((aligned(8))) uint64_t y_type;
 
 		x_type x = 3;
@@ -89,6 +89,6 @@
 		// ensure that the size of aggregates with polymorphic members
 		// matches the size of the aggregates in a monomorphic context
-		assert( struct_size(x, y) == sizeof(S) );
-		assert( union_size(x, y) == sizeof(U) );
+		assertf( struct_size(x, y) == sizeof(S), "struct size differs in polymorphic context." );
+		assertf( union_size(x, y) == sizeof(U), "union size differs in polymorphic context." );
 
 		y_type ?=?(y_type & this, zero_t) {
@@ -111,5 +111,5 @@
 		u.f2 = 0;
 		u.f1 = x;
-		assert(ret == u.f2);
+		assertf(ret == u.f2, "union operation fails in polymorphic context.");
 	}
 }
