Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 2501ae5ea2193541b80292e9eb68e8a2315fb29a)
+++ src/Parser/DeclarationNode.cc	(revision bb588251423ad82c47d9e6b59f10ef773d2fb076)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Oct  8 08:03:38 2020
-// Update Count     : 1135
+// Last Modified On : Mon Jan 11 20:58:07 2021
+// Update Count     : 1137
 //
 
@@ -1075,6 +1075,6 @@
 	if ( variable.tyClass != TypeDecl::NUMBER_OF_KINDS ) {
 		// otype is internally converted to dtype + otype parameters
-		static const TypeDecl::Kind kindMap[] = { TypeDecl::Dtype, TypeDecl::Dtype, TypeDecl::Ftype, TypeDecl::Ttype };
-		static_assert( sizeof(kindMap)/sizeof(kindMap[0]) == TypeDecl::NUMBER_OF_KINDS, "DeclarationNode::build: kindMap is out of sync." );
+		static const TypeDecl::Kind kindMap[] = { TypeDecl::Dtype, TypeDecl::DStype, TypeDecl::Dtype, TypeDecl::Ftype, TypeDecl::Ttype, TypeDecl::ALtype };
+		static_assert( sizeof(kindMap) / sizeof(kindMap[0]) == TypeDecl::NUMBER_OF_KINDS, "DeclarationNode::build: kindMap is out of sync." );
 		assertf( variable.tyClass < sizeof(kindMap)/sizeof(kindMap[0]), "Variable's tyClass is out of bounds." );
 		TypeDecl * ret = new TypeDecl( *name, Type::StorageClasses(), nullptr, kindMap[ variable.tyClass ], variable.tyClass == TypeDecl::Otype, variable.initializer ? variable.initializer->buildType() : nullptr );
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 2501ae5ea2193541b80292e9eb68e8a2315fb29a)
+++ src/Parser/parser.yy	(revision bb588251423ad82c47d9e6b59f10ef773d2fb076)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jan 11 14:14:16 2021
-// Update Count     : 4630
+// Last Modified On : Mon Jan 11 21:32:10 2021
+// Update Count     : 4633
 //
 
@@ -2449,5 +2449,8 @@
 		{ $$ = DeclarationNode::newTypeParam( $2, $1 )->addTypeInitializer( $4 )->addAssertions( $5 ); }
 	| '[' identifier_or_type_name ']'
-		{ typedefTable.addToScope( *$2, TYPEDEFname, "9" ); }
+		{
+			typedefTable.addToScope( *$2, TYPEDEFname, "9" );
+			$$ = DeclarationNode::newTypeParam( TypeDecl::ALtype, $2 );
+		}
 	// | type_specifier identifier_parameter_declarator
 	| assertion_list
@@ -2461,5 +2464,5 @@
 		{ $$ = TypeDecl::Dtype; }
 	| '*'
-		{ $$ = TypeDecl::Dtype; }						// dtype + sized
+		{ $$ = TypeDecl::DStype; }						// dtype + sized
 	| ELLIPSIS
 		{ $$ = TypeDecl::Ttype; }
