Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision a4943d8c75881bf6880d75e9b463e12a55371f68)
+++ src/Parser/parser.yy	(revision 84d58c5ecfcdf2942bf75618eb315dcfca19daee)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 18 18:06:17 2017
-// Update Count     : 2338
+// Last Modified On : Thu May 25 15:21:59 2017
+// Update Count     : 2398
 //
 
@@ -159,6 +159,6 @@
 }
 
-%type<tok> identifier  no_01_identifier  no_attr_identifier zero_one
-%type<tok> identifier_or_type_name  no_attr_identifier_or_type_name  no_01_identifier_or_type_name  attr_name
+%type<tok> identifier  no_attr_identifier  zero_one
+%type<tok> identifier_or_type_name  no_attr_identifier_or_type_name  attr_name
 %type<constant> string_literal
 %type<str> string_literal_list
@@ -207,5 +207,5 @@
 %type<en>   bit_subrange_size_opt bit_subrange_size
 
-%type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type_name indirect_type_name
+%type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type indirect_type
 
 %type<decl> trait_declaration trait_declaration_list trait_declaring_list trait_specifier
@@ -261,15 +261,15 @@
 %type<decl> type_declarator type_declarator_name type_declaring_list
 
-%type<decl> typedef typedef_type_specifier typedef_declaration typedef_declaration_specifier typedef_expression
+%type<decl> type_declaration_specifier type_type_specifier type_name typegen_name
+%type<decl> typedef typedef_declaration typedef_expression
 
 %type<decl> variable_type_redeclarator type_ptr type_array type_function
 
 %type<decl> type_parameter_redeclarator type_parameter_ptr type_parameter_array type_parameter_function
-%type<decl> typegen_declaration_specifier typegen_type_specifier typegen_name
-
-%type<decl> type_name type_name_no_function
-%type<decl> type_parameter type_parameter_list
-
-%type<en> type_name_list
+
+%type<decl> type type_no_function
+%type<decl> type_parameter type_parameter_list type_initializer_opt
+
+%type<en> type_list
 
 %type<decl> type_qualifier type_qualifier_name type_qualifier_list_opt type_qualifier_list
@@ -351,15 +351,8 @@
 	IDENTIFIER
 	| ATTR_IDENTIFIER									// CFA
-	| zero_one											// CFA
-	;
-
-no_01_identifier:
-	IDENTIFIER
-	| ATTR_IDENTIFIER									// CFA
 	;
 
 no_attr_identifier:
 	IDENTIFIER
-	| zero_one											// CFA
 	;
 
@@ -367,5 +360,5 @@
 	ZERO
 	| ONE
-	;
+ 	;
 
 string_literal:
@@ -395,5 +388,5 @@
 	| '(' compound_statement ')'						// GCC, lambda expression
 		{ $$ = new ExpressionNode( build_valexpr( $2 ) ); }
-	| primary_expression '{' argument_expression_list '}' // CFA
+	| primary_expression '{' argument_expression_list '}' // CFA, constructor call
 		{
 			Token fn;
@@ -401,4 +394,8 @@
 			$$ = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_last( $3 ) ) ) );
 		}
+	| type_name '.' no_attr_identifier					// CFA, nested type
+		{ $$ = nullptr; }								// FIX ME
+	| type_name '.' '[' push field_list pop ']'			// CFA, nested type / tuple field selector
+		{ $$ = nullptr; }								// FIX ME
 	;
 
@@ -431,5 +428,5 @@
 	| postfix_expression DECR
 	  	{ $$ = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, $1 ) ); }
-	| '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99, compound-literal
+	| '(' type_no_function ')' '{' initializer_list comma_opt '}' // C99, compound-literal
 		{ $$ = new ExpressionNode( build_compoundLiteral( $2, new InitializerNode( $5, true ) ) ); }
 	| '^' primary_expression '{' argument_expression_list '}' // CFA
@@ -483,9 +480,9 @@
 	| no_attr_identifier fraction_constants
 		{
-			if( (*$1) == "0" || (*$1) == "1" ) {
-				$$ = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *$1 ), $2 ) );
-			} else {
-				$$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) );
-			}
+			$$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) );
+		}
+	| zero_one fraction_constants
+		{
+			$$ = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *$1 ), $2 ) );
 		}
 	;
@@ -535,11 +532,11 @@
 	| SIZEOF unary_expression
 		{ $$ = new ExpressionNode( build_sizeOfexpr( $2 ) ); }
-	| SIZEOF '(' type_name_no_function ')'
+	| SIZEOF '(' type_no_function ')'
 		{ $$ = new ExpressionNode( build_sizeOftype( $3 ) ); }
 	| ALIGNOF unary_expression							// GCC, variable alignment
 		{ $$ = new ExpressionNode( build_alignOfexpr( $2 ) ); }
-	| ALIGNOF '(' type_name_no_function ')'				// GCC, type alignment
+	| ALIGNOF '(' type_no_function ')'				// GCC, type alignment
 		{ $$ = new ExpressionNode( build_alignOftype( $3 ) ); }
-	| OFFSETOF '(' type_name_no_function ',' no_attr_identifier ')'
+	| OFFSETOF '(' type_no_function ',' no_attr_identifier ')'
 		{ $$ = new ExpressionNode( build_offsetOf( $3, build_varref( $5 ) ) ); }
 	| ATTR_IDENTIFIER
@@ -547,5 +544,5 @@
 	| ATTR_IDENTIFIER '(' argument_expression ')'
 		{ $$ = new ExpressionNode( build_attrexpr( build_varref( $1 ), $3 ) ); }
-	| ATTR_IDENTIFIER '(' type_name ')'
+	| ATTR_IDENTIFIER '(' type ')'
 		{ $$ = new ExpressionNode( build_attrtype( build_varref( $1 ), $3 ) ); }
 //	| ANDAND IDENTIFIER									// GCC, address of label
@@ -569,7 +566,7 @@
 cast_expression:
 	unary_expression
-	| '(' type_name_no_function ')' cast_expression
+	| '(' type_no_function ')' cast_expression
 		{ $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
-//	| '(' type_name_no_function ')' tuple
+//	| '(' type_no_function ')' tuple
 //		{ $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
 	;
@@ -658,6 +655,4 @@
 	| logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
 		{ $$ = new ExpressionNode( build_cond( $1, $1, $4 ) ); }
-//	| logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
-//		{ $$ = new ExpressionNode( build_cond( $1, $3, $5 ) ); }
 	;
 
@@ -671,6 +666,4 @@
 	| unary_expression assignment_operator assignment_expression
 		{ $$ = new ExpressionNode( build_binary_ptr( $2, $1, $3 ) ); }
-//	| tuple assignment_opt								// CFA, tuple expression
-//		{ $$ = ( $2 == 0 ) ? $1 : new ExpressionNode( build_binary_ptr( OperKinds::Assign, $1, $2 ) ); }
 	;
 
@@ -1352,6 +1345,5 @@
 	basic_declaration_specifier
 	| sue_declaration_specifier
-	| typedef_declaration_specifier
-	| typegen_declaration_specifier
+	| type_declaration_specifier
 	;
 
@@ -1364,6 +1356,5 @@
 	basic_declaration_specifier
 	| sue_declaration_specifier_nobody
-	| typedef_declaration_specifier
-	| typegen_declaration_specifier
+	| type_declaration_specifier
 	;
 
@@ -1371,6 +1362,5 @@
 	basic_type_specifier
 	| sue_type_specifier
-	| typedef_type_specifier
-	| typegen_type_specifier
+	| type_type_specifier
 	;
 
@@ -1383,6 +1373,5 @@
 	basic_type_specifier
 	| sue_type_specifier_nobody
-	| typedef_type_specifier
-	| typegen_type_specifier
+	| type_type_specifier
 	;
 
@@ -1519,26 +1508,26 @@
 
 basic_type_specifier:
-	direct_type_name
-	| type_qualifier_list_opt indirect_type_name type_qualifier_list_opt
+	direct_type
+	| type_qualifier_list_opt indirect_type type_qualifier_list_opt
 		{ $$ = $2->addQualifiers( $1 )->addQualifiers( $3 ); }
 	;
 
-direct_type_name:
+direct_type:
 		// A semantic check is necessary for conflicting type qualifiers.
 	basic_type_name
 	| type_qualifier_list basic_type_name
 		{ $$ = $2->addQualifiers( $1 ); }
-	| direct_type_name type_qualifier
+	| direct_type type_qualifier
 		{ $$ = $1->addQualifiers( $2 ); }
-	| direct_type_name basic_type_name
+	| direct_type basic_type_name
 		{ $$ = $1->addType( $2 ); }
 	;
 
-indirect_type_name:
-	TYPEOF '(' type_name ')'							// GCC: typeof(x) y;
+indirect_type:
+	TYPEOF '(' type ')'									// GCC: typeof(x) y;
 		{ $$ = $3; }
 	| TYPEOF '(' comma_expression ')'					// GCC: typeof(a+b) y;
 		{ $$ = DeclarationNode::newTypeof( $3 ); }
-	| ATTR_TYPEGENname '(' type_name ')'				// CFA: e.g., @type(x) y;
+	| ATTR_TYPEGENname '(' type ')'						// CFA: e.g., @type(x) y;
 		{ $$ = DeclarationNode::newAttr( $1, $3 ); }
 	| ATTR_TYPEGENname '(' comma_expression ')'			// CFA: e.g., @type(a+b) y;
@@ -1584,21 +1573,39 @@
 	;
 
-typedef_declaration_specifier:
-	typedef_type_specifier
-	| declaration_qualifier_list typedef_type_specifier
+type_declaration_specifier:
+	type_type_specifier
+	| declaration_qualifier_list type_type_specifier
 		{ $$ = $2->addQualifiers( $1 ); }
-	| typedef_declaration_specifier storage_class		// remaining OBSOLESCENT (see 2)
+	| type_declaration_specifier storage_class			// remaining OBSOLESCENT (see 2)
 		{ $$ = $1->addQualifiers( $2 ); }
-	| typedef_declaration_specifier storage_class type_qualifier_list
+	| type_declaration_specifier storage_class type_qualifier_list
 		{ $$ = $1->addQualifiers( $2 )->addQualifiers( $3 ); }
 	;
 
-typedef_type_specifier:									// typedef types
+type_type_specifier:									// typedef types
+	type_name
+	| type_qualifier_list type_name
+		{ $$ = $2->addQualifiers( $1 ); }
+	| type_type_specifier type_qualifier
+		{ $$ = $1->addQualifiers( $2 ); }
+	;
+
+type_name:
 	TYPEDEFname
 		{ $$ = DeclarationNode::newFromTypedef( $1 ); }
-	| type_qualifier_list TYPEDEFname
-		{ $$ = DeclarationNode::newFromTypedef( $2 )->addQualifiers( $1 ); }
-	| typedef_type_specifier type_qualifier
-		{ $$ = $1->addQualifiers( $2 ); }
+	| '.' TYPEDEFname
+		{ $$ = DeclarationNode::newFromTypedef( $2 ); }	// FIX ME
+	| type_name '.' TYPEDEFname
+		{ $$ = DeclarationNode::newFromTypedef( $3 ); }	// FIX ME
+	| typegen_name
+	| '.' typegen_name
+		{ $$ = $2; }									// FIX ME
+	| type_name '.' typegen_name
+		{ $$ = $3; }									// FIX ME
+	;
+
+typegen_name:											// CFA
+	TYPEGENname '(' type_list ')'
+		{ $$ = DeclarationNode::newFromTypeGen( $1, $3 ); }
 	;
 
@@ -1624,5 +1631,5 @@
 	  '{' field_declaration_list '}'
 		{ $$ = DeclarationNode::newAggregate( $1, $3, nullptr, $6, true )->addQualifiers( $2 ); }
-	| aggregate_key attribute_list_opt '(' type_name_list ')' '{' field_declaration_list '}' // CFA
+	| aggregate_key attribute_list_opt '(' type_list ')' '{' field_declaration_list '}' // CFA
 		{ $$ = DeclarationNode::newAggregate( $1, new string( DeclarationNode::anonymous.newName() ), $4, $7, false )->addQualifiers( $2 ); }
 	| aggregate_type_nobody
@@ -1630,10 +1637,15 @@
 
 aggregate_type_nobody:									// struct, union - {...}
-	aggregate_key attribute_list_opt no_attr_identifier_or_type_name
+	aggregate_key attribute_list_opt no_attr_identifier
 		{
 			typedefTable.makeTypedef( *$3 );
 			$$ = DeclarationNode::newAggregate( $1, $3, nullptr, nullptr, false )->addQualifiers( $2 );
 		}
-	| aggregate_key attribute_list_opt typegen_name		// CFA, S/R conflict
+	| aggregate_key attribute_list_opt TYPEDEFname
+		{
+			typedefTable.makeTypedef( *$3 );
+			$$ = DeclarationNode::newAggregate( $1, $3, nullptr, nullptr, false )->addQualifiers( $2 );
+		}
+	| aggregate_key attribute_list_opt typegen_name		// CFA
 		{ $$ = $3->addQualifiers( $2 ); }
 	;
@@ -1873,10 +1885,4 @@
 	;
 
-no_01_identifier_or_type_name:
-	no_01_identifier
-	| TYPEDEFname
-	| TYPEGENname
-	;
-
 no_attr_identifier_or_type_name:
 	no_attr_identifier
@@ -1885,5 +1891,5 @@
 	;
 
-type_name_no_function:									// sizeof, alignof, cast (constructor)
+type_no_function:										// sizeof, alignof, cast (constructor)
 	cfa_abstract_declarator_tuple						// CFA
 	| type_specifier
@@ -1892,6 +1898,6 @@
 	;
 
-type_name:												// typeof, assertion
-	type_name_no_function
+type:													// typeof, assertion
+	type_no_function
 	| cfa_abstract_function								// CFA
 	;
@@ -1933,5 +1939,5 @@
 designation:
 	designator_list ':'									// C99, CFA uses ":" instead of "="
-	| no_attr_identifier_or_type_name ':'				// GCC, field name
+	| no_attr_identifier ':'							// GCC, field name
 		{ $$ = new ExpressionNode( build_varref( $1 ) ); }
 	;
@@ -1945,5 +1951,5 @@
 
 designator:
-	'.' no_attr_identifier_or_type_name					// C99, field name
+	'.' no_attr_identifier								// C99, field name
 		{ $$ = new ExpressionNode( build_varref( $2 ) ); }
 	| '[' push assignment_expression pop ']'			// C99, single array element
@@ -1976,31 +1982,15 @@
 //     on type arguments of polymorphic functions.
 
-typegen_declaration_specifier:							// CFA
-	typegen_type_specifier
-	| declaration_qualifier_list typegen_type_specifier
-		{ $$ = $2->addQualifiers( $1 ); }
-	| typegen_declaration_specifier storage_class		// remaining OBSOLESCENT (see 2)
-		{ $$ = $1->addQualifiers( $2 ); }
-	| typegen_declaration_specifier storage_class type_qualifier_list
-		{ $$ = $1->addQualifiers( $2 )->addQualifiers( $3 ); }
-	;
-
-typegen_type_specifier:									// CFA
-	typegen_name
-	| type_qualifier_list typegen_name
-		{ $$ = $2->addQualifiers( $1 ); }
-	| typegen_type_specifier type_qualifier
-		{ $$ = $1->addQualifiers( $2 ); }
-	;
-
-typegen_name:											// CFA
-	TYPEGENname '(' type_name_list ')'
-		{ $$ = DeclarationNode::newFromTypeGen( $1, $3 ); }
-	;
-
 type_parameter_list:									// CFA
-	type_parameter assignment_opt
-	| type_parameter_list ',' type_parameter assignment_opt
+	type_parameter type_initializer_opt
+	| type_parameter_list ',' type_parameter type_initializer_opt
 		{ $$ = $1->appendList( $3 ); }
+	;
+
+type_initializer_opt:									// CFA
+	// empty
+		{ $$ = nullptr; }
+	| '=' type
+		{ $$ = $2; }
 	;
 
@@ -2032,5 +2022,5 @@
 
 assertion:												// CFA
-	'|' no_attr_identifier_or_type_name '(' type_name_list ')'
+	'|' no_attr_identifier_or_type_name '(' type_list ')'
 		{
 			typedefTable.openTrait( *$2 );
@@ -2039,15 +2029,15 @@
 	| '|' '{' push trait_declaration_list '}'
 		{ $$ = $4; }
-	| '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_name_list ')'
+	| '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_list ')'
 		{ $$ = nullptr; }
 	;
 
-type_name_list:											// CFA
-	type_name
+type_list:												// CFA
+	type
 		{ $$ = new ExpressionNode( build_typevalue( $1 ) ); }
 	| assignment_expression
-	| type_name_list ',' type_name
+	| type_list ',' type
 		{ $$ = (ExpressionNode *)( $1->set_last( new ExpressionNode( build_typevalue( $3 ) ) ) ); }
-	| type_name_list ',' assignment_expression
+	| type_list ',' assignment_expression
 		{ $$ = (ExpressionNode *)( $1->set_last( $3 )); }
 	;
@@ -2065,5 +2055,5 @@
 	type_declarator_name assertion_list_opt
 		{ $$ = $1->addAssertions( $2 ); }
-	| type_declarator_name assertion_list_opt '=' type_name
+	| type_declarator_name assertion_list_opt '=' type
 		{ $$ = $1->addAssertions( $2 )->addType( $4 ); }
 	;
@@ -2075,5 +2065,5 @@
 			$$ = DeclarationNode::newTypeDecl( $1, 0 );
 		}
-	| no_01_identifier_or_type_name '(' push type_parameter_list pop ')'
+	| no_attr_identifier_or_type_name '(' push type_parameter_list pop ')'
 		{
 			typedefTable.addToEnclosingScope( *$1, TypedefTable::TG );
@@ -2101,5 +2091,5 @@
 	;
 
-trait_declaration_list:								// CFA
+trait_declaration_list:									// CFA
 	trait_declaration
 	| trait_declaration_list push trait_declaration
@@ -2107,5 +2097,5 @@
 	;
 
-trait_declaration:									// CFA
+trait_declaration:										// CFA
 	cfa_trait_declaring_list pop ';'
 	| trait_declaring_list pop ';'
Index: c/tests/.expect/constant0-1DP.txt
===================================================================
--- src/tests/.expect/constant0-1DP.txt	(revision a4943d8c75881bf6880d75e9b463e12a55371f68)
+++ 	(revision )
@@ -1,32 +1,0 @@
-constant0-1.c:14 error: duplicate object definition for 0: signed int
-constant0-1.c:15 error: duplicate object definition for 0: const signed int
-constant0-1.c:16 error: duplicate object definition for 1: signed int
-constant0-1.c:17 error: duplicate object definition for 1: const signed int
-constant0-1.c:18 error: duplicate object definition for 0: signed int
-constant0-1.c:18 error: duplicate object definition for 1: signed int
-constant0-1.c:19 error: duplicate object definition for 0: signed int
-constant0-1.c:19 error: duplicate object definition for 1: signed int
-constant0-1.c:20 error: duplicate object definition for 0: const signed int
-constant0-1.c:20 error: duplicate object definition for 1: const signed int
-constant0-1.c:21 error: duplicate object definition for 0: const signed int
-constant0-1.c:21 error: duplicate object definition for 1: const signed int
-constant0-1.c:39 error: duplicate object definition for 0: pointer to signed int
-constant0-1.c:39 error: duplicate object definition for 1: pointer to signed int
-constant0-1.c:40 error: duplicate object definition for 0: pointer to signed int
-constant0-1.c:40 error: duplicate object definition for 1: pointer to signed int
-constant0-1.c:41 error: duplicate object definition for 0: pointer to signed int
-constant0-1.c:41 error: duplicate object definition for 1: pointer to signed int
-constant0-1.c:42 error: duplicate object definition for 0: pointer to signed int
-constant0-1.c:42 error: duplicate object definition for 1: pointer to signed int
-constant0-1.c:43 error: duplicate object definition for 0: const pointer to signed int
-constant0-1.c:43 error: duplicate object definition for 1: const pointer to signed int
-constant0-1.c:44 error: duplicate object definition for 0: const pointer to signed int
-constant0-1.c:44 error: duplicate object definition for 1: const pointer to signed int
-constant0-1.c:45 error: duplicate object definition for 0: const pointer to signed int
-constant0-1.c:45 error: duplicate object definition for 1: const pointer to signed int
-constant0-1.c:46 error: duplicate object definition for x: const pointer to pointer to signed int
-constant0-1.c:46 error: duplicate object definition for 0: pointer to pointer to signed int
-constant0-1.c:47 error: duplicate object definition for x: const pointer to pointer to signed int
-constant0-1.c:47 error: duplicate object definition for 0: pointer to pointer to signed int
-constant0-1.c:50 error: duplicate object definition for x: const pointer to pointer to signed int
-constant0-1.c:50 error: duplicate object definition for 0: pointer to pointer to signed int
Index: c/tests/.expect/constant0-1NDDP.txt
===================================================================
--- src/tests/.expect/constant0-1NDDP.txt	(revision a4943d8c75881bf6880d75e9b463e12a55371f68)
+++ 	(revision )
@@ -1,16 +1,0 @@
-constant0-1.c:14 error: duplicate object definition for 0: signed int
-constant0-1.c:15 error: duplicate object definition for 0: const signed int
-constant0-1.c:16 error: duplicate object definition for 1: signed int
-constant0-1.c:17 error: duplicate object definition for 1: const signed int
-constant0-1.c:18 error: duplicate object definition for 0: signed int
-constant0-1.c:18 error: duplicate object definition for 1: signed int
-constant0-1.c:19 error: duplicate object definition for 0: signed int
-constant0-1.c:19 error: duplicate object definition for 1: signed int
-constant0-1.c:20 error: duplicate object definition for 0: const signed int
-constant0-1.c:20 error: duplicate object definition for 1: const signed int
-constant0-1.c:21 error: duplicate object definition for 0: const signed int
-constant0-1.c:21 error: duplicate object definition for 1: const signed int
-constant0-1.c:66 error: duplicate object definition for x: pointer to signed int
-constant0-1.c:66 error: duplicate object definition for 0: pointer to signed int
-constant0-1.c:67 error: duplicate object definition for x: const pointer to signed int
-constant0-1.c:67 error: duplicate object definition for 0: const pointer to signed int
Index: c/tests/constant0-1.c
===================================================================
--- src/tests/constant0-1.c	(revision a4943d8c75881bf6880d75e9b463e12a55371f68)
+++ 	(revision )
@@ -1,79 +1,0 @@
-// Constant test declaration
-
-// value
-
-int 0;
-const int 0;
-int 1;
-const int 1;
-struct { int i; } 0;
-const struct { int i; } 1;
-
-#ifdef DUPS
-
-int 0;
-const int 0;
-int 1;
-const int 1;
-int (0), (1);
-int ((0)), ((1));
-const int 0, 1;
-const int (0), (1);
-struct { int i; } 0;
-const struct { int i; } 1;
-
-#endif // DUPS
-
-#ifndef NEWDECL
-
-// pointer
-
-int *0, *1;
-int * const (0), * const 1;
-struct { int i; } *0;
-const struct { int i; } *0;
-int (*(* const x)), **0;
-
-#ifdef DUPS
-
-int *0, *1;
-int *(0), *(1);
-int (*0), (*1);
-int ((*0)), ((*1));
-int * const (0), * const 1;
-int (* const 0), (* const 1);
-int ((* const 0)), ((* const 1));
-int (*(* const x)), *(*0);
-int (*(* const x)), (*(*0));
-struct { int i; } *0;
-const struct { int i; } *0;
-int (*(* const x)), **0;
-
-#endif // DUPS
-
-#else
-
-// Cforall style
-
-* int x, 0;
-const * int x, 0;
-* struct { int i; } 0;
-const * struct { int i; } 0;
-const * * int x, 0;
-
-#ifdef DUPS
-
-* int x, 0;
-const * int x, 0;
-
-#endif // DUPS
-
-#endif // NEWDECL
-
-int main() {
-#ifndef NEWDECL
-    int 1, * 0;
-#else
-    * int x, 0;
-#endif // NEWDECL
-}
