Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision dea36ee0c2e78137d7d16a9d4aee66bf062f7464)
+++ src/Parser/TypeData.cc	(revision f7e4db2785978f5e45c5648a4d871b54d12af8a6)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:12:51 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jul 18 17:51:18 2018
-// Update Count     : 607
+// Last Modified On : Fri Jul 20 14:39:31 2018
+// Update Count     : 622
 //
 
@@ -271,6 +271,15 @@
 
 	switch ( kind ) {
-	  case Unknown:
-		os << "entity of unknown type ";
+	  case Basic:
+		if ( signedness != DeclarationNode::NoSignedness ) os << DeclarationNode::signednessNames[ signedness ] << " ";
+		if ( length != DeclarationNode::NoLength ) os << DeclarationNode::lengthNames[ length ] << " ";
+		if ( complextype == DeclarationNode::NoComplexType ) { // basic type
+			assert( basictype != DeclarationNode::NoBasicType );
+			os << DeclarationNode::basicTypeNames[ basictype ] << " ";
+		} else {										// complex type
+			// handle double _Complex
+			if ( basictype != DeclarationNode::NoBasicType ) os << DeclarationNode::basicTypeNames[ basictype ] << " ";
+			os << DeclarationNode::complexTypeNames[ complextype ] << " ";
+		} // if
 		break;
 	  case Pointer:
@@ -281,13 +290,10 @@
 		} // if
 		break;
-	  case EnumConstant:
-		os << "enumeration constant ";
-		break;
-	  case Basic:
-		if ( signedness != DeclarationNode::NoSignedness ) os << DeclarationNode::signednessNames[ signedness ] << " ";
-		if ( length != DeclarationNode::NoLength ) os << DeclarationNode::lengthNames[ length ] << " ";
-		assert( basictype != DeclarationNode::NoBasicType );
-		os << DeclarationNode::basicTypeNames[ basictype ] << " ";
-		if ( complextype != DeclarationNode::NoComplexType ) os << DeclarationNode::complexTypeNames[ complextype ] << " ";
+	  case Reference:
+		os << "reference ";
+		if ( base ) {
+			os << "to ";
+			base->print( os, indent );
+		} // if
 		break;
 	  case Array:
@@ -375,10 +381,6 @@
 		} // if
 		break;
-	  case SymbolicInst:
-		os << "instance of type " << *symbolic.name;
-		if ( symbolic.actuals ) {
-			os << " with parameters" << endl;
-			symbolic.actuals->printList( os, indent + 2 );
-		} // if
+	  case EnumConstant:
+		os << "enumeration constant ";
 		break;
 	  case Symbolic:
@@ -402,4 +404,12 @@
 		} // if
 		break;
+	  case SymbolicInst:
+		os << *symbolic.name;
+		if ( symbolic.actuals ) {
+			os << "(";
+			symbolic.actuals->printList( os, indent + 2 );
+			os << ")";
+		} // if
+		break;
 	  case Tuple:
 		os << "tuple ";
@@ -417,4 +427,14 @@
 	  case Builtin:
 		os << DeclarationNode::builtinTypeNames[builtintype];
+		break;
+	  case GlobalScope:
+		break;
+	  case Qualified:
+		qualified.parent->print( os );
+		os << ".";
+		qualified.child->print( os );
+		break;
+	  case Unknown:
+		os << "entity of unknown type ";
 		break;
 	  default:
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision dea36ee0c2e78137d7d16a9d4aee66bf062f7464)
+++ src/Parser/TypeData.h	(revision f7e4db2785978f5e45c5648a4d871b54d12af8a6)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:18:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jul 18 17:31:15 2018
-// Update Count     : 194
+// Last Modified On : Fri Jul 20 13:56:40 2018
+// Update Count     : 195
 //
 
@@ -26,5 +26,5 @@
 
 struct TypeData {
-	enum Kind { Basic, Pointer, Array, Reference, Function, Aggregate, AggregateInst, Enum, EnumConstant, Symbolic,
+	enum Kind { Basic, Pointer, Reference, Array, Function, Aggregate, AggregateInst, Enum, EnumConstant, Symbolic,
 				SymbolicInst, Tuple, Typeof, Builtin, GlobalScope, Qualified, Unknown };
 
@@ -77,5 +77,5 @@
 	};
 
-	struct Qualified_t { // qualified type S.T
+	struct Qualified_t {								// qualified type S.T
 		TypeData * parent;
 		TypeData * child;
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision dea36ee0c2e78137d7d16a9d4aee66bf062f7464)
+++ src/Parser/parser.yy	(revision f7e4db2785978f5e45c5648a4d871b54d12af8a6)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 19 22:21:56 2018
-// Update Count     : 3827
+// Last Modified On : Fri Jul 20 11:46:46 2018
+// Update Count     : 3837
 //
 
@@ -172,4 +172,17 @@
 	return new_name;
 } // build_postfix_name
+
+DeclarationNode * fieldDecl( DeclarationNode * typeSpec, DeclarationNode * fieldList ) {
+	if ( ! fieldList ) {								// field declarator ?
+		if ( ! ( typeSpec->type && typeSpec->type->kind == TypeData::Aggregate ) ) {
+			stringstream ss;
+			typeSpec->type->print( ss );
+			SemanticWarning( yylloc, Warning::SuperfluousDecl, ss.str().c_str() );
+			return nullptr;
+		} // if
+		fieldList = DeclarationNode::newName( nullptr );
+	} // if
+	return distAttr( typeSpec, fieldList );				// mark all fields in list
+} // fieldDecl
 
 bool forall = false, yyy = false;						// aggregate have one or more forall qualifiers ?
@@ -1942,24 +1955,7 @@
 field_declaration:
 	type_specifier field_declaring_list_opt ';'
-		{
-			if ( ! $2 ) {								// field declarator ?
-				$2 = DeclarationNode::newName( nullptr );
-				if ( ! ( $1->type && $1->type->kind == TypeData::Aggregate ) ) {
-					SemanticWarning( yylloc, Warning::SuperfluousDecl, "" );
-				} // if
-			} // if
-			$$ = distAttr( $1, $2 );					// mark all fields in list
-		}
+		{ $$ = fieldDecl( $1, $2 ); }
 	| EXTENSION type_specifier field_declaring_list_opt ';'	// GCC
-		{
-			if ( ! $3 ) {								// field declarator ?
-				$3 = DeclarationNode::newName( nullptr );
-				if ( ! ( $2->type && $2->type->kind == TypeData::Aggregate ) ) {
-					SemanticWarning( yylloc, Warning::SuperfluousDecl, "" );
-				} // if
-			} // if
-			$$ = distAttr( $2, $3 );					// mark all fields in list
-			distExt( $$ );
-		}
+		{ $$ = fieldDecl( $2, $3 ); distExt( $$ ); }
 	| INLINE type_specifier field_abstract_list_opt ';'	// CFA
 		{
@@ -2009,9 +2005,10 @@
 
 field_abstract:
-	// 	no bit fields
+		// 	no bit fields
 	variable_abstract_declarator
 	;
 
 cfa_field_declaring_list:								// CFA, new style field declaration
+	// bit-fields are handled by C declarations
 	cfa_abstract_declarator_tuple no_attr_identifier_or_type_name
 		{ $$ = $1->addName( $2 ); }
@@ -2021,4 +2018,5 @@
 
 cfa_field_abstract_list:								// CFA, new style field declaration
+	// bit-fields are handled by C declarations
 	cfa_abstract_declarator_tuple
 	| cfa_field_abstract_list ','
Index: src/tests/.expect/attributes.x64.txt
===================================================================
--- src/tests/.expect/attributes.x64.txt	(revision dea36ee0c2e78137d7d16a9d4aee66bf062f7464)
+++ src/tests/.expect/attributes.x64.txt	(revision f7e4db2785978f5e45c5648a4d871b54d12af8a6)
@@ -367,8 +367,7 @@
 signed int __apd7__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object23)(__attribute__ ((unused)) signed int __anonymous_object24), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object25)(__attribute__ ((unused)) signed int __anonymous_object26));
 struct Vad {
-    __attribute__ ((unused)) signed int __anonymous_object27;
+    __attribute__ ((unused)) signed int __anonymous_object27:4;
     __attribute__ ((unused)) signed int __anonymous_object28:4;
-    __attribute__ ((unused)) signed int __anonymous_object29:4;
-    __attribute__ ((unused,unused)) signed int __anonymous_object30:6;
+    __attribute__ ((unused,unused)) signed int __anonymous_object29:6;
 };
 static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1);
@@ -376,21 +375,13 @@
 static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1);
 static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1);
-static inline void ___constructor__F_4sVadi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object31);
 static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1){
-    ((void)((*___dst__4sVad_1).__anonymous_object27) /* ?{} */);
 }
 static inline void ___constructor__F_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){
-    ((void)((*___dst__4sVad_1).__anonymous_object27=___src__4sVad_1.__anonymous_object27) /* ?{} */);
 }
 static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1){
-    ((void)((*___dst__4sVad_1).__anonymous_object27) /* ^?{} */);
 }
 static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){
     struct Vad ___ret__4sVad_1;
-    ((void)((*___dst__4sVad_1).__anonymous_object27=___src__4sVad_1.__anonymous_object27));
     ((void)___constructor__F_4sVad4sVad_autogen___1((&___ret__4sVad_1), (*___dst__4sVad_1)));
     return ___ret__4sVad_1;
 }
-static inline void ___constructor__F_4sVadi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object32){
-    ((void)((*___dst__4sVad_1).__anonymous_object27=__anonymous_object32) /* ?{} */);
-}
Index: src/tests/.expect/declarationErrors.txt
===================================================================
--- src/tests/.expect/declarationErrors.txt	(revision dea36ee0c2e78137d7d16a9d4aee66bf062f7464)
+++ src/tests/.expect/declarationErrors.txt	(revision f7e4db2785978f5e45c5648a4d871b54d12af8a6)
@@ -17,5 +17,5 @@
 
 
-declarationErrors.c:22:1 error: duplicate static in declaration of x6: static const volatile instance of type Int
+declarationErrors.c:22:1 error: duplicate static in declaration of x6: static const volatile Int
 
 declarationErrors.c:24:1 error: duplicate const in declaration of f01: static inline function
