Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 9fd9d01543f319adc37ab11817b20515dcb04170)
+++ src/Parser/parser.yy	(revision ac235a85d3e8213c643b3a016412570dcf411947)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar 29 11:21:38 2023
-// Update Count     : 6321
+// Last Modified On : Wed Mar 29 17:56:42 2023
+// Update Count     : 6325
 //
 
@@ -271,12 +271,4 @@
 	SemanticError( yylloc, ::toString( "Identifier \"", identifier, "\" cannot appear before a ", kind, ".\n"
 				   "Possible cause is misspelled storage/CV qualifier, misspelled typename, or missing generic parameter." ) );
-} // IdentifierBeforeType
-
-static bool TypedefForall( DeclarationNode * decl ) {
-	if ( decl->type->forall || (decl->type->kind == TypeData::Aggregate && decl->type->aggregate.params) ) {
-		SemanticError( yylloc, "forall qualifier in typedef is currently unimplemented." );
-		return true;
-	} // if
-	return false;
 } // IdentifierBeforeType
 
@@ -2019,6 +2011,7 @@
 		{
 			typedefTable.addToEnclosingScope( *$3->name, TYPEDEFname, "4" );
-			if ( TypedefForall( $2 ) ) $$ = nullptr;
-			else $$ = $3->addType( $2 )->addTypedef();		// watchout frees $2 and $3
+			if ( $2->type->forall || ($2->type->kind == TypeData::Aggregate && $2->type->aggregate.params) ) {
+				SemanticError( yylloc, "forall qualifier in typedef is currently unimplemented." ); $$ = nullptr;
+			} else $$ = $3->addType( $2 )->addTypedef(); // watchout frees $2 and $3
 		}
 	| typedef_declaration pop ',' push declarator
@@ -2028,21 +2021,9 @@
 		}
 	| type_qualifier_list TYPEDEF type_specifier declarator // remaining OBSOLESCENT (see 2 )
-		{
-			typedefTable.addToEnclosingScope( *$4->name, TYPEDEFname, "6" );
-			if ( TypedefForall( $1 ) ) $$ = nullptr;
-			else $$ = $4->addQualifiers( $1 )->addType( $3 )->addTypedef();
-		}
+		{ SemanticError( yylloc, "Type qualifiers/specifiers before TYPEDEF is deprecated, move after TYPEDEF." ); $$ = nullptr; }
 	| type_specifier TYPEDEF declarator
-		{
-			typedefTable.addToEnclosingScope( *$3->name, TYPEDEFname, "7" );
-			if ( TypedefForall( $1 ) ) $$ = nullptr;
-			else $$ = $3->addType( $1 )->addTypedef();
-		}
+		{ SemanticError( yylloc, "Type qualifiers/specifiers before TYPEDEF is deprecated, move after TYPEDEF." ); $$ = nullptr; }
 	| type_specifier TYPEDEF type_qualifier_list declarator
-		{
-			typedefTable.addToEnclosingScope( *$4->name, TYPEDEFname, "8" );
-			if ( TypedefForall( $3 ) ) $$ = nullptr;
-			else $$ = $4->addQualifiers( $1 )->addType( $1 )->addTypedef();
-		}
+		{ SemanticError( yylloc, "Type qualifiers/specifiers before TYPEDEF is deprecated, move after TYPEDEF." ); $$ = nullptr; }
 	;
 
@@ -2051,9 +2032,9 @@
 	TYPEDEF identifier '=' assignment_expression
 		{
-			SemanticError( yylloc, "Typedef expression is deprecated, use typeof(...) instead." ); $$ = nullptr;
+			SemanticError( yylloc, "TYPEDEF expression is deprecated, use typeof(...) instead." ); $$ = nullptr;
 		}
 	| typedef_expression pop ',' push identifier '=' assignment_expression
 		{
-			SemanticError( yylloc, "Typedef expression is deprecated, use typeof(...) instead." ); $$ = nullptr;
+			SemanticError( yylloc, "TYPEDEF expression is deprecated, use typeof(...) instead." ); $$ = nullptr;
 		}
 	;
