[cfe] Simplify metadata builders

These builders have some unused generality: they have an unnecessary
type parameter and the implementation classes have unused fields.  As
currently used, they could be replaced with an int but the class is
kept in anticipation of adding behavior (compiling annotations).

Change-Id: I068cb483a19b3f7eae846c212cbdbb29ca77973d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103529
Auto-Submit: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
diff --git a/pkg/front_end/lib/src/fasta/builder/enum_builder.dart b/pkg/front_end/lib/src/fasta/builder/enum_builder.dart
index f456149..33f875f 100644
--- a/pkg/front_end/lib/src/fasta/builder/enum_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/enum_builder.dart
@@ -12,7 +12,7 @@
 }
 
 class EnumConstantInfo {
-  final List<MetadataBuilder<TypeBuilder>> metadata;
+  final List<MetadataBuilder> metadata;
   final String name;
   final int charOffset;
   final String documentationComment;
diff --git a/pkg/front_end/lib/src/fasta/builder/metadata_builder.dart b/pkg/front_end/lib/src/fasta/builder/metadata_builder.dart
index cb656b4..d3a43df 100644
--- a/pkg/front_end/lib/src/fasta/builder/metadata_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/metadata_builder.dart
@@ -4,54 +4,8 @@
 
 library fasta.metadata_builder;
 
-import 'builder.dart' show Declaration, TypeBuilder;
-
-import 'constructor_reference_builder.dart' show ConstructorReferenceBuilder;
-
-abstract class MetadataBuilder<T extends TypeBuilder> {
+class MetadataBuilder {
   final int charOffset;
 
-  MetadataBuilder(Declaration parent, this.charOffset);
-
-  factory MetadataBuilder.fromConstructor(
-      ConstructorReferenceBuilder constructorReference,
-      List<Object> arguments,
-      Declaration parent,
-      int charOffset) {
-    return new ConstructorMetadataBuilder<T>(
-        constructorReference, arguments, parent, charOffset);
-  }
-
-  factory MetadataBuilder.fromExpression(
-      Object expression, String postfix, Declaration parent, int charOffset) {
-    return new ExpressionMetadataBuilder<T>(
-        expression, postfix, parent, charOffset);
-  }
-}
-
-class ConstructorMetadataBuilder<T extends TypeBuilder>
-    extends MetadataBuilder<T> {
-  final ConstructorReferenceBuilder constructorReference;
-
-  final List<Object> arguments;
-
-  ConstructorMetadataBuilder(this.constructorReference, this.arguments,
-      Declaration parent, int charOffset)
-      : super(parent, charOffset);
-}
-
-/// Expression metadata (without arguments).
-///
-/// Matches this grammar rule:
-///
-///    '@' qualified (‘.’ identifier)?
-class ExpressionMetadataBuilder<T extends TypeBuilder>
-    extends MetadataBuilder<T> {
-  final Object qualified;
-
-  final String identifier;
-
-  ExpressionMetadataBuilder(
-      this.qualified, this.identifier, Declaration parent, int charOffset)
-      : super(parent, charOffset);
+  MetadataBuilder(this.charOffset);
 }
diff --git a/pkg/front_end/lib/src/fasta/builder/type_alias_builder.dart b/pkg/front_end/lib/src/fasta/builder/type_alias_builder.dart
index e941212..c2e5255 100644
--- a/pkg/front_end/lib/src/fasta/builder/type_alias_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/type_alias_builder.dart
@@ -19,7 +19,7 @@
   final List<TypeVariableBuilder<T, R>> typeVariables;
 
   TypeAliasBuilder(
-      List<MetadataBuilder<T>> metadata,
+      List<MetadataBuilder> metadata,
       String name,
       this.typeVariables,
       this.type,
diff --git a/pkg/front_end/lib/src/fasta/builder/type_declaration_builder.dart b/pkg/front_end/lib/src/fasta/builder/type_declaration_builder.dart
index b28cf9f..32a5a31 100644
--- a/pkg/front_end/lib/src/fasta/builder/type_declaration_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/type_declaration_builder.dart
@@ -14,7 +14,7 @@
 
 abstract class TypeDeclarationBuilder<T extends TypeBuilder, R>
     extends ModifierBuilder {
-  final List<MetadataBuilder<T>> metadata;
+  final List<MetadataBuilder> metadata;
 
   final int modifiers;
 
diff --git a/pkg/front_end/lib/src/fasta/dill/dill_type_alias_builder.dart b/pkg/front_end/lib/src/fasta/dill/dill_type_alias_builder.dart
index 6667e06..8247cbf 100644
--- a/pkg/front_end/lib/src/fasta/dill/dill_type_alias_builder.dart
+++ b/pkg/front_end/lib/src/fasta/dill/dill_type_alias_builder.dart
@@ -23,7 +23,7 @@
       : super(null, typedef.name, null, null, parent, typedef.fileOffset,
             typedef);
 
-  List<MetadataBuilder<KernelTypeBuilder>> get metadata {
+  List<MetadataBuilder> get metadata {
     return unimplemented("metadata", -1, null);
   }
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_type_alias_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_type_alias_builder.dart
index e9c4064..f5daa9d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_type_alias_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_type_alias_builder.dart
@@ -44,7 +44,7 @@
   DartType thisType;
 
   KernelTypeAliasBuilder(
-      List<MetadataBuilder<KernelTypeBuilder>> metadata,
+      List<MetadataBuilder> metadata,
       String name,
       List<TypeVariableBuilder<KernelTypeBuilder, DartType>> typeVariables,
       KernelFunctionTypeBuilder type,
diff --git a/pkg/front_end/lib/src/fasta/source/outline_builder.dart b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
index 24d3a08..5cf43f9 100644
--- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
@@ -143,21 +143,17 @@
     List<TypeBuilder> typeArguments = pop();
     if (arguments == null) {
       pop(); // charOffset
-      Object expression = pop();
-      push(new MetadataBuilder<KernelTypeBuilder>.fromExpression(
-          expression, postfix, library, beginToken.charOffset));
+      pop(); // expression
+      push(new MetadataBuilder(beginToken.charOffset));
     } else {
       int charOffset = pop();
       Object typeName = pop();
       if (typeName is ParserRecovery) {
         push(typeName);
       } else {
-        push(new MetadataBuilder<KernelTypeBuilder>.fromConstructor(
-            library.addConstructorReference(
-                typeName, typeArguments, postfix, charOffset),
-            arguments,
-            library,
-            beginToken.charOffset));
+        library.addConstructorReference(
+            typeName, typeArguments, postfix, charOffset);
+        push(new MetadataBuilder(beginToken.charOffset));
       }
     }
   }
@@ -165,8 +161,7 @@
   @override
   void endMetadataStar(int count) {
     debugEvent("MetadataStar");
-    push(const FixedNullableList<MetadataBuilder<KernelTypeBuilder>>()
-            .pop(stack, count) ??
+    push(const FixedNullableList<MetadataBuilder>().pop(stack, count) ??
         NullValue.Metadata);
   }
 
@@ -212,7 +207,7 @@
     List<Configuration> configurations = pop();
     int uriOffset = popCharOffset();
     String uri = pop();
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     library.addExport(metadata, uri, configurations, combinators,
         exportKeyword.charOffset, uriOffset);
     checkEmpty(exportKeyword.charOffset);
@@ -240,7 +235,7 @@
     List<Configuration> configurations = pop();
     int uriOffset = popCharOffset();
     String uri = pop(); // For a conditional import, this is the default URI.
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     checkEmpty(importKeyword.charOffset);
     if (prefix is ParserRecovery) return;
     library.addImport(
@@ -304,7 +299,7 @@
     debugEvent("Part");
     int charOffset = popCharOffset();
     String uri = pop();
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     library.addPart(metadata, uri, charOffset);
     checkEmpty(partKeyword.charOffset);
   }
@@ -327,7 +322,7 @@
   void handleIdentifier(Token token, IdentifierContext context) {
     if (context == IdentifierContext.enumValueDeclaration) {
       debugEvent("handleIdentifier");
-      List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+      List<MetadataBuilder> metadata = pop();
       if (token.isSynthetic) {
         push(new ParserRecovery(token.charOffset));
       } else {
@@ -435,7 +430,7 @@
     popCharOffset();
     String documentationComment = getDocumentationComment(libraryKeyword);
     Object name = pop();
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     library.documentationComment = documentationComment;
     if (name is! ParserRecovery) {
       library.name = flattenName(name, offsetForToken(libraryKeyword), uri);
@@ -551,7 +546,7 @@
     if (typeVariables != null && supertype is MixinApplicationBuilder) {
       supertype.typeVariables = typeVariables;
     }
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     checkEmpty(beginToken.charOffset);
     if (name is ParserRecovery) {
       library.endNestedDeclaration("<syntax-error>");
@@ -589,7 +584,7 @@
         pop(NullValue.TypeVariables);
     int nameOffset = pop();
     Object name = pop();
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop(NullValue.Metadata);
+    List<MetadataBuilder> metadata = pop(NullValue.Metadata);
     checkEmpty(mixinToken.charOffset);
     if (name is ParserRecovery) {
       library.endNestedDeclaration("<syntax-error>");
@@ -657,7 +652,7 @@
     if (isAbstract) {
       modifiers |= abstractMask;
     }
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     checkEmpty(beginToken.charOffset);
     library
         .endNestedDeclaration("#method")
@@ -843,7 +838,7 @@
     }
     bool isConst = (modifiers & constMask) != 0;
     int varFinalOrConstOffset = pop();
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     String documentationComment = getDocumentationComment(beginToken);
     library
         .endNestedDeclaration("#method")
@@ -938,7 +933,7 @@
         pop();
     int charOffset = pop();
     Object name = pop();
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     checkEmpty(beginToken.charOffset);
     if (name is ParserRecovery || mixinApplication is ParserRecovery) {
       library.endNestedDeclaration("<syntax-error>");
@@ -1033,7 +1028,7 @@
     Object name = pop();
     TypeBuilder type = nullIfParserRecovery(pop());
     int modifiers = pop();
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     if (name is ParserRecovery) {
       push(name);
     } else {
@@ -1185,7 +1180,7 @@
     int charOffset = pop(); // identifier char offset.
     int startCharOffset = enumKeyword.charOffset;
     Object name = pop();
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     checkEmpty(enumKeyword.charOffset);
     if (name is ParserRecovery) return;
     library.addEnum(documentationComment, metadata, name, enumConstantInfos,
@@ -1282,7 +1277,7 @@
         addProblem(messageTypedefNotFunction, equals.charOffset, equals.length);
       }
     }
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     checkEmpty(typedefKeyword.charOffset);
     library.addFunctionTypeAlias(documentationComment, metadata, name,
         typeVariables, functionType, charOffset);
@@ -1305,7 +1300,7 @@
     int modifiers = (staticToken != null ? staticMask : 0) |
         (covariantToken != null ? covariantMask : 0) |
         Modifier.validateVarFinalOrConst(varFinalOrConst?.lexeme);
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     checkEmpty(beginToken.charOffset);
     if (fieldInfos == null) return;
     String documentationComment = getDocumentationComment(beginToken);
@@ -1331,7 +1326,7 @@
           varFinalOrConst.length);
       modifiers &= ~constMask;
     }
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     if (fieldInfos == null) return;
     String documentationComment = getDocumentationComment(beginToken);
     library.addFields(
@@ -1461,7 +1456,7 @@
     debugEvent("endPartOf");
     int charOffset = popCharOffset();
     Object containingLibrary = pop();
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     if (hasName) {
       library.addPartOf(metadata,
           flattenName(containingLibrary, charOffset, uri), null, charOffset);
@@ -1511,7 +1506,7 @@
     int charOffset = pop();
     Object name = pop();
     int modifiers = pop();
-    List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
+    List<MetadataBuilder> metadata = pop();
     if (name is ParserRecovery) {
       library.endNestedDeclaration("<syntax-error>");
       return;