Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 41e821799af2037363d8c3c32af1cb61ec358774)
+++ src/Parser/parser.yy	(revision 4c3ee8d83b18fa8870e0a924b814efd4ec1730fa)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jun 29 10:31:42 2018
-// Update Count     : 3596
+// Last Modified On : Mon Jul  2 20:23:14 2018
+// Update Count     : 3607
 //
 
@@ -112,4 +112,13 @@
 	for ( DeclarationNode *iter = declaration; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) {
 		iter->set_extension( true );
+	} // for
+} // distExt
+
+void distQual( DeclarationNode * declaration, DeclarationNode * qualifiers ) {
+	// distribute qualifiers across all declarations in a distribution statemement
+	for ( DeclarationNode * iter = declaration; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) {
+		if ( isMangled( iter->linkage ) ) {		// ignore extern "C"
+			iter->addQualifiers( qualifiers->clone() );
+		} // if
 	} // for
 } // distExt
@@ -2377,9 +2386,5 @@
 	  '{' up external_definition_list_opt down '}'		// CFA, namespace
 		{
-			for ( DeclarationNode * iter = $5; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) {
-				if ( isMangled( iter->linkage ) ) {		// ignore extern "C"
-					iter->addQualifiers( $1->clone() );
-				} // if
-			} // for
+			distQual( $5, $1 );
  			xxx = false;
 			delete $1;
@@ -2388,14 +2393,10 @@
 	| declaration_qualifier_list
 		{
-			if ( $1->type->qualifiers.val ) { SemanticError( yylloc, "CV qualifiers cannot be distributed; only storage-class and forall qualifiers." ); }
-			if ( $1->type->forall ) xxx = forall = true; // remember generic type
+			if ( $1->type && $1->type->qualifiers.val ) { SemanticError( yylloc, "CV qualifiers cannot be distributed; only storage-class and forall qualifiers." ); }
+			if ( $1->type && $1->type->forall ) xxx = forall = true; // remember generic type
 		}
 	  '{' up external_definition_list_opt down '}'		// CFA, namespace
 		{
-			for ( DeclarationNode * iter = $5; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) {
-				if ( isMangled( iter->linkage ) ) {		// ignore extern "C"
-					iter->addQualifiers( $1->clone() );
-				} // if
-			} // for
+			distQual( $5, $1 );
  			xxx = false;
 			delete $1;
@@ -2409,10 +2410,6 @@
 	  '{' up external_definition_list_opt down '}'		// CFA, namespace
 		{
-			for ( DeclarationNode * iter = $6; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) {
-				if ( isMangled( iter->linkage ) && isMangled( $2->linkage ) ) {	// ignore extern "C"
-					iter->addQualifiers( $1->clone() );
-					iter->addQualifiers( $2->clone() );
-				} // if
-			} // for
+			distQual( $6, $2 );
+			distQual( $6, $1 );
  			xxx = false;
 			delete $1;
