Version 3.11.0-102.0.dev

Merge f355c03f5094c2055bde79e1ec42697caa26f05d into dev
diff --git a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
index 256c8dc..f725c75b 100644
--- a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
+++ b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
@@ -26,15 +26,15 @@
   if (e is FieldElement && e.isEnumConstant) {
     // FieldElement is a kind of VariableElement, so this test case must be
     // before the e is VariableElement check.
-    return schema.CONSTANT_KIND;
+    return schema.constantKind;
   } else if (e is VariableElement || e is PrefixElement) {
-    return schema.VARIABLE_KIND;
+    return schema.variableKind;
   } else if (e is ExecutableElement) {
-    return schema.FUNCTION_KIND;
+    return schema.functionKind;
   } else if (e is InterfaceElement || e is TypeParameterElement) {
     // TODO(jwren): this should be using absvar instead, see
     // https://kythe.io/docs/schema/#absvar
-    return schema.RECORD_KIND;
+    return schema.recordKind;
   }
   return null;
 }
@@ -82,7 +82,7 @@
 }
 
 /// If a non-null element is passed, the [_SignatureElementVisitor] is used to
-/// generate and return a [String] signature, otherwise [schema.DYNAMIC_KIND] is
+/// generate and return a [String] signature, otherwise [schema.dynamicKind] is
 /// returned.
 String _getSignature(
   ResourceProvider provider,
@@ -91,9 +91,9 @@
   String corpus, {
   String? sdkRootPath,
 }) {
-  assert(nodeKind != schema.ANCHOR_KIND); // Call _getAnchorSignature instead
+  assert(nodeKind != schema.anchorKind); // Call _getAnchorSignature instead
   if (element == null) {
-    return schema.DYNAMIC_KIND;
+    return schema.dynamicKind;
   }
   if (element is LibraryElement) {
     return _getPath(
@@ -118,14 +118,14 @@
 
   /// Returns a URI that can be used to query Kythe.
   String toKytheUri(Element e) {
-    var nodeKind = _getNodeKind(e) ?? schema.RECORD_KIND;
+    var nodeKind = _getNodeKind(e) ?? schema.recordKind;
     var vname = _vNameFromElement(e, nodeKind);
     return 'kythe://$corpus?lang=dart?path=${vname.path}#${vname.signature}';
   }
 
   /// Returns the Kythe name for the [element].
   _KytheVName _vNameFromElement(Element? e, String nodeKind) {
-    assert(nodeKind != schema.FILE_KIND);
+    assert(nodeKind != schema.fileKind);
     // general case
     return _KytheVName(
       path: _getPath(
diff --git a/pkg/analysis_server/lib/src/services/kythe/schema.dart b/pkg/analysis_server/lib/src/services/kythe/schema.dart
index 033712d..e4ad379 100644
--- a/pkg/analysis_server/lib/src/services/kythe/schema.dart
+++ b/pkg/analysis_server/lib/src/services/kythe/schema.dart
@@ -6,85 +6,85 @@
 /// kythe.io/docs/schema/
 library;
 
-const ANCHOR_END_FACT = '/kythe/loc/end';
+const anchorEndFact = '/kythe/loc/end';
 
 /// Kythe node kinds
-const ANCHOR_KIND = 'anchor';
-const ANCHOR_START_FACT = '/kythe/loc/start';
+const anchorKind = 'anchor';
+const anchorStartFact = '/kythe/loc/start';
 
 /// Kythe edge kinds
-const ANNOTATED_BY_EDGE = '${EDGE_PREFIX}annotatedby';
+const annotatedByEdge = '${edgePrefix}annotatedby';
 
-const CHILD_OF_EDGE = '${EDGE_PREFIX}childof';
+const childOfEdge = '${edgePrefix}childof';
 
 /// Kythe node subkinds
-const CLASS_SUBKIND = 'class';
+const classSubkind = 'class';
 
-const COMPLETE_FACT = '/kythe/complete';
-const CONSTANT_KIND = 'constant';
+const completeFact = '/kythe/complete';
+const constantKind = 'constant';
 
-const CONSTRUCTOR_SUBKIND = 'constructor';
+const constructorSubkind = 'constructor';
 
 /// Dart specific facts, labels, and kinds
-const DART_LANG = 'dart';
+const dartLang = 'dart';
 
 /// DEFAULT_TEXT_ENCODING is the assumed value of the TEXT_ENCODING_FACT if it
 /// is empty or missing from a node with a TEXT_FACT.
-const DEFAULT_TEXT_ENCODING = 'UTF-8';
-const DEFINES_BINDING_EDGE = '${EDGE_PREFIX}defines/binding';
+const defaultTextEncoding = 'UTF-8';
+const definesBindingEdge = '${edgePrefix}defines/binding';
 
 /// Kythe edge kinds associated with anchors
-const DEFINES_EDGE = '${EDGE_PREFIX}defines';
+const definesEdge = '${edgePrefix}defines';
 
-const DEFINITION = 'definition';
+const definition = 'definition';
 
-const DOC_KIND = 'doc';
+const docKind = 'doc';
 
-const DOCUMENTS_EDGE = '${EDGE_PREFIX}documents';
-const DYNAMIC_KIND = 'dynamic#builtin';
+const documentsEdge = '${edgePrefix}documents';
+const dynamicKind = 'dynamic#builtin';
 
 /// EdgePrefix is the standard Kythe prefix for all edge kinds.
-const EDGE_PREFIX = '/kythe/edge/';
-const ENUM_CLASS_SUBKIND = 'enumClass';
-const ENUM_KIND = 'enum';
-const EXTENDS_EDGE = '${EDGE_PREFIX}extends';
-const FIELD_SUBKIND = 'field';
-const FILE_KIND = 'file';
-const FN_BUILTIN = 'fn#builtin';
-const FUNCTION_KIND = 'function';
+const edgePrefix = '/kythe/edge/';
+const enumClassSubkind = 'enumClass';
+const enumKind = 'enum';
+const extendsEdge = '${edgePrefix}extends';
+const fieldSubkind = 'field';
+const fileKind = 'file';
+const fnBuiltin = 'fn#builtin';
+const functionKind = 'function';
 
-const IMPLICIT_SUBKIND = 'implicit';
+const implicitSubkind = 'implicit';
 
 /// Kythe complete states
-const INCOMPLETE = 'incomplete';
-const INSTANTIATES_EDGE = '${EDGE_PREFIX}instantiates';
-const LOCAL_PARAMETER_SUBKIND = 'local/parameter';
-const LOCAL_SUBKIND = 'local';
+const incomplete = 'incomplete';
+const instantiatesEdge = '${edgePrefix}instantiates';
+const localParameterSubkind = 'local/parameter';
+const localSubkind = 'local';
 
 /// Kythe node fact labels
-const NODE_KIND_FACT = '/kythe/node/kind';
+const nodeKindFact = '/kythe/node/kind';
 
 /// Kythe ordinal
-const ORDINAL = '/kythe/ordinal';
+const ordinal = '/kythe/ordinal';
 
-const OVERRIDES_EDGE = '${EDGE_PREFIX}overrides';
-const PACKAGE_KIND = 'package';
+const overridesEdge = '${edgePrefix}overrides';
+const packageKind = 'package';
 
-const PARAM_EDGE = '${EDGE_PREFIX}param';
+const paramEdge = '${edgePrefix}param';
 
-const RECORD_KIND = 'record';
+const recordKind = 'record';
 
-const REF_CALL_EDGE = '${EDGE_PREFIX}ref/call';
-const REF_EDGE = '${EDGE_PREFIX}ref';
-const REF_IMPORTS_EDGE = '${EDGE_PREFIX}ref/imports';
-const SNIPPET_END_FACT = '/kythe/snippet/end';
-const SNIPPET_START_FACT = '/kythe/snippet/start';
-const SUBKIND_FACT = '/kythe/subkind';
-const TAPP_KIND = 'tapp';
+const refCallEdge = '${edgePrefix}ref/call';
+const refEdge = '${edgePrefix}ref';
+const refImportsEdge = '${edgePrefix}ref/imports';
+const snippetEndFact = '/kythe/snippet/end';
+const snippetStartFact = '/kythe/snippet/start';
+const subkindFact = '/kythe/subkind';
+const tappKind = 'tapp';
 
-const TEXT_ENCODING_FACT = '/kythe/text/encoding';
-const TEXT_FACT = '/kythe/text';
-const TEXT_FORMAT = '/kythe/format';
-const TYPED_EDGE = '${EDGE_PREFIX}typed';
-const VARIABLE_KIND = 'variable';
-const VOID_BUILTIN = 'void#builtin';
+const textEncodingFact = '/kythe/text/encoding';
+const textFact = '/kythe/text';
+const textFormat = '/kythe/format';
+const typedEdge = '${edgePrefix}typed';
+const variableKind = 'variable';
+const voidBuiltin = 'void#builtin';
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart
index e091b7d..3a3e8e5 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart
@@ -358,6 +358,60 @@
 ''');
   }
 
+  Future<void> test_privateEnum() async {
+    newFile('$testPackageLibPath/enum.dart', r'''
+enum _E { first, second }
+
+_E f() => _E.first;
+''');
+    await resolveTestCode('''
+import 'enum.dart';
+
+int g() {
+  return switch (f()) {
+  };
+}
+''');
+    await assertHasFix('''
+import 'enum.dart';
+
+int g() {
+  return switch (f()) {
+    // TODO: Handle this case.
+    _ => throw UnimplementedError(),
+  };
+}
+''');
+  }
+
+  Future<void> test_privateEnumConstant() async {
+    newFile('$testPackageLibPath/enum.dart', r'''
+enum E { first, second, _unknown }
+''');
+    await resolveTestCode('''
+import 'enum.dart';
+
+int g(E e) {
+  return switch (e) {
+  };
+}
+''');
+    await assertHasFix('''
+import 'enum.dart';
+
+int g(E e) {
+  return switch (e) {
+    // TODO: Handle this case.
+    E.first => throw UnimplementedError(),
+    // TODO: Handle this case.
+    E.second => throw UnimplementedError(),
+    // TODO: Handle this case.
+    _ => throw UnimplementedError(),
+  };
+}
+''');
+  }
+
   Future<void> test_sealed_impl() async {
     var otherRoot = getFolder('$packagesRootPath/other');
     newFile('$otherRoot/lib/src/private.dart', '''
@@ -884,6 +938,64 @@
 ''');
   }
 
+  Future<void> test_privateEnum() async {
+    newFile('$testPackageLibPath/enum.dart', r'''
+enum _E { first, second }
+
+_E f() => _E.first;
+''');
+    await resolveTestCode('''
+import 'enum.dart';
+
+int g() {
+  switch (f()) {
+  }
+}
+''');
+    await assertHasFix('''
+import 'enum.dart';
+
+int g() {
+  switch (f()) {
+    default:
+      // TODO: Handle this case.
+      throw UnimplementedError();
+  }
+}
+''');
+  }
+
+  Future<void> test_privateEnumConstant() async {
+    newFile('$testPackageLibPath/enum.dart', r'''
+enum E { first, second, _unknown }
+''');
+    await resolveTestCode('''
+import 'enum.dart';
+
+int g(E e) {
+  switch (e) {
+  }
+}
+''');
+    await assertHasFix('''
+import 'enum.dart';
+
+int g(E e) {
+  switch (e) {
+    case E.first:
+      // TODO: Handle this case.
+      throw UnimplementedError();
+    case E.second:
+      // TODO: Handle this case.
+      throw UnimplementedError();
+    default:
+      // TODO: Handle this case.
+      throw UnimplementedError();
+  }
+}
+''');
+  }
+
   Future<void> test_static() async {
     await resolveTestCode('''
 enum E {
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index 7e28325..842696a 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -26517,7 +26517,7 @@
 [future] getLibraryByUri T1
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: int
     exportedReferences
       declared <testLibrary>::@getter::x
@@ -26598,7 +26598,7 @@
 [future] getLibraryByUri T2
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: double
     exportedReferences
       declared <testLibrary>::@getter::x
@@ -42147,7 +42147,7 @@
 [future] getLibraryByUri T1
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: int
 ''',
       updatedA: r'''
@@ -42194,7 +42194,7 @@
 [future] getLibraryByUri T2
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: double
 ''',
     );
@@ -42248,7 +42248,7 @@
 [future] getLibraryByUri T1
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: int
 ''',
       updatedA: r'''
@@ -42274,7 +42274,7 @@
 [future] getLibraryByUri T2
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: int
 ''',
     );
@@ -42327,7 +42327,7 @@
 [future] getLibraryByUri T1
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: int
 ''',
       updatedA: r'''
@@ -42376,7 +42376,7 @@
 [future] getLibraryByUri T2
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: double
 ''',
     );
@@ -42433,7 +42433,7 @@
 [future] getLibraryByUri T1
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: int
 ''',
       updatedA: r'''
@@ -42462,7 +42462,7 @@
 [future] getLibraryByUri T2
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: int
 ''',
     );
@@ -42537,7 +42537,7 @@
 [future] getLibraryByUri T1
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: int
 ''',
       // Change the initializer, now `double`.
@@ -42614,7 +42614,7 @@
 [future] getLibraryByUri T2
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: double
 ''',
     );
@@ -42667,7 +42667,7 @@
 [future] getLibraryByUri T1
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: int
 ''',
       // Change the initializer, now `double`.
@@ -42718,7 +42718,7 @@
 [future] getLibraryByUri T2
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: double
 ''',
     );
@@ -98997,7 +98997,7 @@
 [future] getLibraryByUri T1
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: int
 ''',
       updatedA: r'''
@@ -99046,7 +99046,7 @@
 [future] getLibraryByUri T2
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: double
 ''',
     );
@@ -99155,7 +99155,7 @@
 [future] getLibraryByUri T1
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: int
 ''',
       updatedA: r'''
@@ -99187,7 +99187,7 @@
 [future] getLibraryByUri T2
   library
     topLevelVariables
-      final hasInitializer x
+      final hasImplicitType hasInitializer x
         type: int
 ''',
     );
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index 41d9b96..4657700 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -545,6 +545,7 @@
       _sink.writeIf(e.isConst, 'const ');
       _sink.writeIf(e.isEnumConstant, 'enumConstant ');
       _sink.writeIf(e.isPromotable, 'promotable ');
+      _sink.writeIf(e.hasImplicitType, 'hasImplicitType ');
       _sink.writeIf(e.hasInitializer, 'hasInitializer ');
 
       _writeElementName(e);
@@ -1656,9 +1657,11 @@
 
     _sink.writeIndentedLine(() {
       _sink.writeIf(e.isSynthetic, 'synthetic ');
+      _sink.writeIf(e.isExternal, 'external ');
       _sink.writeIf(e.isLate, 'late ');
       _sink.writeIf(e.isFinal, 'final ');
       _sink.writeIf(e.isConst, 'const ');
+      _sink.writeIf(e.hasImplicitType, 'hasImplicitType ');
       _sink.writeIf(e.hasInitializer, 'hasInitializer ');
 
       _writeElementName(e);
diff --git a/pkg/analyzer/test/src/summary/elements/class_test.dart b/pkg/analyzer/test/src/summary/elements/class_test.dart
index eaac584..07a2882 100644
--- a/pkg/analyzer/test/src/summary/elements/class_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/class_test.dart
@@ -566,7 +566,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -648,7 +648,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -1161,7 +1161,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -1231,7 +1231,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -1301,7 +1301,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -1810,7 +1810,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -1875,7 +1875,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -2098,7 +2098,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final f
+        final hasImplicitType f
           reference: <testLibrary>::@class::C::@field::f
           firstFragment: #F2
           type: dynamic
@@ -2172,7 +2172,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final f
+        final hasImplicitType f
           reference: <testLibrary>::@class::C::@field::f
           firstFragment: #F2
           type: dynamic
@@ -2250,7 +2250,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -6528,7 +6528,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -6566,7 +6566,7 @@
       reference: <testLibrary>::@class::D
       firstFragment: #F5
       fields
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@class::D::@field::x
           firstFragment: #F6
           type: dynamic
@@ -6652,7 +6652,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -6671,7 +6671,7 @@
       reference: <testLibrary>::@class::D
       firstFragment: #F5
       fields
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@class::D::@field::x
           firstFragment: #F6
           type: dynamic
@@ -7619,7 +7619,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -7916,7 +7916,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final hasInitializer x
+        final hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: int
@@ -8038,7 +8038,7 @@
       reference: <testLibrary>::@class::B
       firstFragment: #F4
       fields
-        final hasInitializer f
+        final hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::B::@field::f
           firstFragment: #F5
           type: A<int Function(double)>
@@ -8089,7 +8089,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final hasInitializer x
+        final hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: int
@@ -8235,7 +8235,7 @@
       firstFragment: #F1
       supertype: D
       fields
-        v
+        hasImplicitType v
           reference: <testLibrary>::@class::C::@field::v
           firstFragment: #F2
           type: int
@@ -8321,7 +8321,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -8382,7 +8382,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        late x
+        late hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -8504,7 +8504,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        hasInitializer v
+        hasImplicitType hasInitializer v
           reference: <testLibrary>::@class::C::@field::v
           firstFragment: #F2
           type: int
@@ -8580,7 +8580,7 @@
       firstFragment: #F1
       supertype: D
       fields
-        v
+        hasImplicitType v
           reference: <testLibrary>::@class::C::@field::v
           firstFragment: #F2
           type: int
@@ -8719,7 +8719,7 @@
       firstFragment: #F5
       supertype: A
       fields
-        final hasInitializer f
+        final hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::B::@field::f
           firstFragment: #F6
           type: List<int>
@@ -8739,7 +8739,7 @@
           returnType: List<int>
           variable: <testLibrary>::@class::B::@field::f
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F9
       type: int
@@ -8788,7 +8788,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        static hasInitializer v
+        static hasImplicitType hasInitializer v
           reference: <testLibrary>::@class::C::@field::v
           firstFragment: #F2
           type: int
@@ -8890,7 +8890,7 @@
       firstFragment: #F5
       supertype: A
       fields
-        final hasInitializer foo
+        final hasImplicitType hasInitializer foo
           reference: <testLibrary>::@class::B::@field::foo
           firstFragment: #F6
           type: double
@@ -9720,7 +9720,7 @@
           firstFragment: #F1
           type: int?
           getter: <testLibrary>::@class::A::@getter::_foo
-        final hasInitializer bar
+        final hasImplicitType hasInitializer bar
           reference: <testLibrary>::@class::A::@field::bar
           firstFragment: #F2
           type: int
@@ -9986,7 +9986,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        static const hasInitializer x
+        static const hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: int
@@ -10040,7 +10040,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final hasInitializer b
+        final hasImplicitType hasInitializer b
           reference: <testLibrary>::@class::C::@field::b
           firstFragment: #F2
           type: double
@@ -10107,7 +10107,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F2
       fields
-        final hasInitializer b
+        final hasImplicitType hasInitializer b
           reference: <testLibrary>::@class::C::@field::b
           firstFragment: #F3
           type: double
@@ -10123,7 +10123,7 @@
           returnType: double
           variable: <testLibrary>::@class::C::@field::b
   topLevelVariables
-    final hasInitializer a
+    final hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F6
       type: int
@@ -10166,7 +10166,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final hasInitializer x
+        final hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: int
@@ -10213,7 +10213,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        static final hasInitializer x
+        static final hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: int
@@ -10324,7 +10324,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        static final hasInitializer f
+        static final hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::C::@field::f
           firstFragment: #F2
           type: int
@@ -10368,7 +10368,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        static final hasInitializer x
+        static final hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: int
@@ -10550,7 +10550,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        hasInitializer foo
+        hasImplicitType hasInitializer foo
           reference: <testLibrary>::@class::C::@field::foo
           firstFragment: #F2
           type: int
@@ -10646,7 +10646,7 @@
       firstFragment: #F5
       supertype: A
       fields
-        final hasInitializer foo
+        final hasImplicitType hasInitializer foo
           reference: <testLibrary>::@class::B::@field::foo
           firstFragment: #F6
           type: int
@@ -10702,7 +10702,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        hasInitializer a
+        hasImplicitType hasInitializer a
           reference: <testLibrary>::@class::C::@field::a
           firstFragment: #F2
           type: Never
@@ -10824,7 +10824,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        hasInitializer x
+        hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: int
@@ -11183,7 +11183,7 @@
       firstFragment: #F4
       supertype: A
       fields
-        late hasInitializer f
+        late hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::B::@field::f
           firstFragment: #F5
           type: int
@@ -11285,7 +11285,7 @@
       firstFragment: #F5
       supertype: A
       fields
-        late hasInitializer f
+        late hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::B::@field::f
           firstFragment: #F6
           type: int
@@ -19361,7 +19361,7 @@
         #F2 synthetic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::x
   topLevelVariables
-    const hasInitializer x
+    const hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: B
@@ -21185,7 +21185,7 @@
           returnType: Object
           variable: <testLibrary>::@class::C::@field::x
   topLevelVariables
-    const hasInitializer x
+    const hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F6
       type: C
@@ -21417,7 +21417,7 @@
       type: C<int>
       getter: <testLibrary>::@getter::c
       setter: <testLibrary>::@setter::c
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F6
       type: void Function()
diff --git a/pkg/analyzer/test/src/summary/elements/const_test.dart b/pkg/analyzer/test/src/summary/elements/const_test.dart
index e2ea69b..7a3afd6 100644
--- a/pkg/analyzer/test/src/summary/elements/const_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/const_test.dart
@@ -65,7 +65,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: int
@@ -133,7 +133,7 @@
         #F4 synthetic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19)
           element: <testLibrary>::@getter::b
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -141,7 +141,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: int
@@ -205,7 +205,7 @@
         #F2 synthetic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -565,7 +565,7 @@
           reference: <testLibrary>::@class::A::@constructor::named
           firstFragment: #F2
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F3
       type: A Function()
@@ -1053,7 +1053,7 @@
             #F5 requiredPositional a (nameOffset:12) (firstTokenOffset:10) (offset:12)
               element: <testLibrary>::@function::f::@formalParameter::a
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: void Function(int)
@@ -1138,7 +1138,7 @@
         #F6 synthetic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:34)
           element: <testLibrary>::@getter::c
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: List<int>
@@ -1146,7 +1146,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: int
@@ -1154,7 +1154,7 @@
         fragment: #F2
         expression: expression_1
       getter: <testLibrary>::@getter::b
-    const hasInitializer c
+    const hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F3
       type: int
@@ -1393,7 +1393,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        static const hasInitializer f
+        static const hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::C::@field::f
           firstFragment: #F2
           type: int
@@ -1453,7 +1453,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final hasInitializer f
+        final hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::C::@field::f
           firstFragment: #F2
           type: int
@@ -1498,7 +1498,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int Function()
@@ -1683,7 +1683,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: InvalidType
@@ -1890,7 +1890,7 @@
         #F2 synthetic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -1929,7 +1929,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: (int,)
@@ -1986,7 +1986,7 @@
         #F3 foo (nameOffset:25) (firstTokenOffset:21) (offset:25)
           element: <testLibrary>::@function::foo
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int
@@ -2030,7 +2030,7 @@
         #F2 synthetic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -2215,7 +2215,7 @@
               firstFragment: #F6
               type: V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F7
       type: C<int, String>
@@ -2297,7 +2297,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: C<int, String>
@@ -2386,7 +2386,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: C<int, String>
@@ -2464,7 +2464,7 @@
           reference: <testLibrary>::@class::C::@constructor::new
           firstFragment: #F4
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F5
       type: C<dynamic, dynamic>
@@ -2661,7 +2661,7 @@
           reference: <testLibrary>::@class::C::@constructor::new
           firstFragment: #F4
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F5
       type: C<int, String>
@@ -2730,7 +2730,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: C<int, String>
@@ -2806,7 +2806,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: C<int, String>
@@ -2934,7 +2934,7 @@
               firstFragment: #F7
               type: double
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F8
       type: C
@@ -2994,7 +2994,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: C
@@ -3061,7 +3061,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: C
@@ -3129,7 +3129,7 @@
           reference: <testLibrary>::@class::C::@constructor::new
           firstFragment: #F2
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F3
       type: C
@@ -3180,7 +3180,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: InvalidType
@@ -3246,7 +3246,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: C
@@ -3309,7 +3309,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: InvalidType
@@ -3365,7 +3365,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: InvalidType
@@ -3439,7 +3439,7 @@
           reference: <testLibrary>::@class::C::@constructor::new
           firstFragment: #F3
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F4
       type: C<dynamic>
@@ -3505,7 +3505,7 @@
           reference: <testLibrary>::@class::C::@constructor::new
           firstFragment: #F2
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F3
       type: C
@@ -3560,7 +3560,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: C
@@ -3622,7 +3622,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: C
@@ -3669,7 +3669,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: InvalidType
@@ -3727,7 +3727,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: InvalidType
@@ -3778,7 +3778,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: InvalidType
@@ -3833,7 +3833,7 @@
         #F4 synthetic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19)
           element: <testLibrary>::@getter::b
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -3841,7 +3841,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: bool
@@ -4120,7 +4120,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int
@@ -4183,7 +4183,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::S
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F2
       type: int
@@ -4241,7 +4241,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int
@@ -4304,7 +4304,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int
@@ -4377,7 +4377,7 @@
           firstFragment: #F3
           returnType: int
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F4
       type: int Function()
@@ -5035,7 +5035,7 @@
             #F5 requiredPositional a (nameOffset:9) (firstTokenOffset:7) (offset:9)
               element: <testLibrary>::@function::f::@formalParameter::a
   topLevelVariables
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F1
       type: int
@@ -5108,7 +5108,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -5186,7 +5186,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -5259,7 +5259,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -5497,7 +5497,7 @@
         #F4 synthetic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19)
           element: <testLibrary>::@getter::b
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -5505,7 +5505,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: int
@@ -5570,7 +5570,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: int
@@ -5627,7 +5627,7 @@
         #F4 synthetic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19)
           element: <testLibrary>::@getter::b
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -5635,7 +5635,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: int
@@ -5692,7 +5692,7 @@
         #F2 synthetic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::b
   topLevelVariables
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F1
       type: int
@@ -5748,7 +5748,7 @@
         #F4 synthetic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19)
           element: <testLibrary>::@getter::b
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -5756,7 +5756,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: int
@@ -5825,7 +5825,7 @@
         #F4 synthetic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19)
           element: <testLibrary>::@getter::b
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -5833,7 +5833,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: (int, {int a})
@@ -5903,7 +5903,7 @@
         #F4 synthetic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19)
           element: <testLibrary>::@getter::b
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -5911,7 +5911,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: (int, {int a})
@@ -6006,7 +6006,7 @@
           returnType: int
           variable: <testLibrary>::@class::C::@field::F
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F5
       type: int
@@ -6061,7 +6061,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: int
@@ -6126,7 +6126,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: int
@@ -6211,7 +6211,7 @@
               type: String
           returnType: int
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F6
       type: int Function(int, String)
@@ -6266,7 +6266,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: int Function(int, String)
@@ -6331,7 +6331,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: int Function(int, String)
@@ -6414,7 +6414,7 @@
           firstFragment: #F4
           returnType: void
   topLevelVariables
-    const hasInitializer x
+    const hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F5
       type: void Function()
@@ -6457,7 +6457,7 @@
         #F3 foo (nameOffset:0) (firstTokenOffset:0) (offset:0)
           element: <testLibrary>::@function::foo
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: dynamic Function()
@@ -6513,7 +6513,7 @@
             #F6 requiredPositional p (nameOffset:14) (firstTokenOffset:12) (offset:14)
               element: <testLibrary>::@function::foo::@formalParameter::p
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: R Function<P, R>(P)
@@ -6572,7 +6572,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: dynamic Function()
@@ -6628,7 +6628,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: dynamic Function()
@@ -6684,7 +6684,7 @@
         #F4 synthetic B (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19)
           element: <testLibrary>::@getter::B
   topLevelVariables
-    const hasInitializer A
+    const hasImplicitType hasInitializer A
       reference: <testLibrary>::@topLevelVariable::A
       firstFragment: #F1
       type: int
@@ -6692,7 +6692,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::A
-    const hasInitializer B
+    const hasImplicitType hasInitializer B
       reference: <testLibrary>::@topLevelVariable::B
       firstFragment: #F2
       type: int
@@ -6750,7 +6750,7 @@
         #F2 synthetic B (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::B
   topLevelVariables
-    const hasInitializer B
+    const hasImplicitType hasInitializer B
       reference: <testLibrary>::@topLevelVariable::B
       firstFragment: #F1
       type: int
@@ -6814,7 +6814,7 @@
         #F2 synthetic B (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::B
   topLevelVariables
-    const hasInitializer B
+    const hasImplicitType hasInitializer B
       reference: <testLibrary>::@topLevelVariable::B
       firstFragment: #F1
       type: int
@@ -7038,7 +7038,7 @@
       firstFragment: #F6
       supertype: Enum
       fields
-        static const enumConstant hasInitializer a
+        static const enumConstant hasImplicitType hasInitializer a
           reference: <testLibrary>::@enum::E::@field::a
           firstFragment: #F7
           type: E
@@ -7046,7 +7046,7 @@
             fragment: #F7
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::a
-        static const enumConstant hasInitializer b
+        static const enumConstant hasImplicitType hasInitializer b
           reference: <testLibrary>::@enum::E::@field::b
           firstFragment: #F8
           type: E
@@ -7054,7 +7054,7 @@
             fragment: #F8
             expression: expression_1
           getter: <testLibrary>::@enum::E::@getter::b
-        static const enumConstant hasInitializer c
+        static const enumConstant hasImplicitType hasInitializer c
           reference: <testLibrary>::@enum::E::@field::c
           firstFragment: #F9
           type: E
@@ -7101,7 +7101,7 @@
       firstFragment: #F16
       aliasedType: dynamic Function(int, String)
   topLevelVariables
-    const hasInitializer vDynamic
+    const hasImplicitType hasInitializer vDynamic
       reference: <testLibrary>::@topLevelVariable::vDynamic
       firstFragment: #F17
       type: Type
@@ -7109,7 +7109,7 @@
         fragment: #F17
         expression: expression_4
       getter: <testLibrary>::@getter::vDynamic
-    const hasInitializer vNull
+    const hasImplicitType hasInitializer vNull
       reference: <testLibrary>::@topLevelVariable::vNull
       firstFragment: #F18
       type: Type
@@ -7117,7 +7117,7 @@
         fragment: #F18
         expression: expression_5
       getter: <testLibrary>::@getter::vNull
-    const hasInitializer vObject
+    const hasImplicitType hasInitializer vObject
       reference: <testLibrary>::@topLevelVariable::vObject
       firstFragment: #F19
       type: Type
@@ -7125,7 +7125,7 @@
         fragment: #F19
         expression: expression_6
       getter: <testLibrary>::@getter::vObject
-    const hasInitializer vClass
+    const hasImplicitType hasInitializer vClass
       reference: <testLibrary>::@topLevelVariable::vClass
       firstFragment: #F20
       type: Type
@@ -7133,7 +7133,7 @@
         fragment: #F20
         expression: expression_7
       getter: <testLibrary>::@getter::vClass
-    const hasInitializer vGenericClass
+    const hasImplicitType hasInitializer vGenericClass
       reference: <testLibrary>::@topLevelVariable::vGenericClass
       firstFragment: #F21
       type: Type
@@ -7141,7 +7141,7 @@
         fragment: #F21
         expression: expression_8
       getter: <testLibrary>::@getter::vGenericClass
-    const hasInitializer vEnum
+    const hasImplicitType hasInitializer vEnum
       reference: <testLibrary>::@topLevelVariable::vEnum
       firstFragment: #F22
       type: Type
@@ -7149,7 +7149,7 @@
         fragment: #F22
         expression: expression_9
       getter: <testLibrary>::@getter::vEnum
-    const hasInitializer vFunctionTypeAlias
+    const hasImplicitType hasInitializer vFunctionTypeAlias
       reference: <testLibrary>::@topLevelVariable::vFunctionTypeAlias
       firstFragment: #F23
       type: Type
@@ -7230,7 +7230,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        final hasInitializer f
+        final hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::C::@field::f
           firstFragment: #F2
           type: List<dynamic Function()>
@@ -7303,7 +7303,7 @@
         #F6 synthetic vFunctionTypeAlias (nameOffset:<null>) (firstTokenOffset:<null>) (offset:58)
           element: <testLibrary>::@getter::vFunctionTypeAlias
   topLevelVariables
-    const hasInitializer vClass
+    const hasImplicitType hasInitializer vClass
       reference: <testLibrary>::@topLevelVariable::vClass
       firstFragment: #F1
       type: Type
@@ -7311,7 +7311,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::vClass
-    const hasInitializer vEnum
+    const hasImplicitType hasInitializer vEnum
       reference: <testLibrary>::@topLevelVariable::vEnum
       firstFragment: #F2
       type: Type
@@ -7319,7 +7319,7 @@
         fragment: #F2
         expression: expression_1
       getter: <testLibrary>::@getter::vEnum
-    const hasInitializer vFunctionTypeAlias
+    const hasImplicitType hasInitializer vFunctionTypeAlias
       reference: <testLibrary>::@topLevelVariable::vFunctionTypeAlias
       firstFragment: #F3
       type: Type
@@ -7423,7 +7423,7 @@
         #F6 synthetic vFunctionTypeAlias (nameOffset:<null>) (firstTokenOffset:<null>) (offset:67)
           element: <testLibrary>::@getter::vFunctionTypeAlias
   topLevelVariables
-    const hasInitializer vClass
+    const hasImplicitType hasInitializer vClass
       reference: <testLibrary>::@topLevelVariable::vClass
       firstFragment: #F1
       type: Type
@@ -7431,7 +7431,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::vClass
-    const hasInitializer vEnum
+    const hasImplicitType hasInitializer vEnum
       reference: <testLibrary>::@topLevelVariable::vEnum
       firstFragment: #F2
       type: Type
@@ -7439,7 +7439,7 @@
         fragment: #F2
         expression: expression_1
       getter: <testLibrary>::@getter::vEnum
-    const hasInitializer vFunctionTypeAlias
+    const hasImplicitType hasInitializer vFunctionTypeAlias
       reference: <testLibrary>::@topLevelVariable::vFunctionTypeAlias
       firstFragment: #F3
       type: Type
@@ -7502,7 +7502,7 @@
         #E0 T
           firstFragment: #F2
       fields
-        final hasInitializer f
+        final hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::C::@field::f
           firstFragment: #F3
           hasEnclosingTypeParameterReference: true
@@ -7544,7 +7544,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: InvalidType
@@ -7607,7 +7607,7 @@
           reference: <testLibrary>::@class::C::@constructor::new
           firstFragment: #F2
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F3
       type: InvalidType
@@ -7670,7 +7670,7 @@
         #F2 synthetic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:30)
           element: <testLibrary>::@getter::V
   topLevelVariables
-    const hasInitializer V
+    const hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: InvalidType
@@ -8251,7 +8251,7 @@
         #F36 synthetic vLessEqual (nameOffset:<null>) (firstTokenOffset:<null>) (offset:433)
           element: <testLibrary>::@getter::vLessEqual
   topLevelVariables
-    const hasInitializer vEqual
+    const hasImplicitType hasInitializer vEqual
       reference: <testLibrary>::@topLevelVariable::vEqual
       firstFragment: #F1
       type: bool
@@ -8259,7 +8259,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::vEqual
-    const hasInitializer vAnd
+    const hasImplicitType hasInitializer vAnd
       reference: <testLibrary>::@topLevelVariable::vAnd
       firstFragment: #F2
       type: bool
@@ -8267,7 +8267,7 @@
         fragment: #F2
         expression: expression_1
       getter: <testLibrary>::@getter::vAnd
-    const hasInitializer vOr
+    const hasImplicitType hasInitializer vOr
       reference: <testLibrary>::@topLevelVariable::vOr
       firstFragment: #F3
       type: bool
@@ -8275,7 +8275,7 @@
         fragment: #F3
         expression: expression_2
       getter: <testLibrary>::@getter::vOr
-    const hasInitializer vBitXor
+    const hasImplicitType hasInitializer vBitXor
       reference: <testLibrary>::@topLevelVariable::vBitXor
       firstFragment: #F4
       type: int
@@ -8283,7 +8283,7 @@
         fragment: #F4
         expression: expression_3
       getter: <testLibrary>::@getter::vBitXor
-    const hasInitializer vBitAnd
+    const hasImplicitType hasInitializer vBitAnd
       reference: <testLibrary>::@topLevelVariable::vBitAnd
       firstFragment: #F5
       type: int
@@ -8291,7 +8291,7 @@
         fragment: #F5
         expression: expression_4
       getter: <testLibrary>::@getter::vBitAnd
-    const hasInitializer vBitOr
+    const hasImplicitType hasInitializer vBitOr
       reference: <testLibrary>::@topLevelVariable::vBitOr
       firstFragment: #F6
       type: int
@@ -8299,7 +8299,7 @@
         fragment: #F6
         expression: expression_5
       getter: <testLibrary>::@getter::vBitOr
-    const hasInitializer vBitShiftLeft
+    const hasImplicitType hasInitializer vBitShiftLeft
       reference: <testLibrary>::@topLevelVariable::vBitShiftLeft
       firstFragment: #F7
       type: int
@@ -8307,7 +8307,7 @@
         fragment: #F7
         expression: expression_6
       getter: <testLibrary>::@getter::vBitShiftLeft
-    const hasInitializer vBitShiftRight
+    const hasImplicitType hasInitializer vBitShiftRight
       reference: <testLibrary>::@topLevelVariable::vBitShiftRight
       firstFragment: #F8
       type: int
@@ -8315,7 +8315,7 @@
         fragment: #F8
         expression: expression_7
       getter: <testLibrary>::@getter::vBitShiftRight
-    const hasInitializer vAdd
+    const hasImplicitType hasInitializer vAdd
       reference: <testLibrary>::@topLevelVariable::vAdd
       firstFragment: #F9
       type: int
@@ -8323,7 +8323,7 @@
         fragment: #F9
         expression: expression_8
       getter: <testLibrary>::@getter::vAdd
-    const hasInitializer vSubtract
+    const hasImplicitType hasInitializer vSubtract
       reference: <testLibrary>::@topLevelVariable::vSubtract
       firstFragment: #F10
       type: int
@@ -8331,7 +8331,7 @@
         fragment: #F10
         expression: expression_9
       getter: <testLibrary>::@getter::vSubtract
-    const hasInitializer vMiltiply
+    const hasImplicitType hasInitializer vMiltiply
       reference: <testLibrary>::@topLevelVariable::vMiltiply
       firstFragment: #F11
       type: int
@@ -8339,7 +8339,7 @@
         fragment: #F11
         expression: expression_10
       getter: <testLibrary>::@getter::vMiltiply
-    const hasInitializer vDivide
+    const hasImplicitType hasInitializer vDivide
       reference: <testLibrary>::@topLevelVariable::vDivide
       firstFragment: #F12
       type: double
@@ -8347,7 +8347,7 @@
         fragment: #F12
         expression: expression_11
       getter: <testLibrary>::@getter::vDivide
-    const hasInitializer vFloorDivide
+    const hasImplicitType hasInitializer vFloorDivide
       reference: <testLibrary>::@topLevelVariable::vFloorDivide
       firstFragment: #F13
       type: int
@@ -8355,7 +8355,7 @@
         fragment: #F13
         expression: expression_12
       getter: <testLibrary>::@getter::vFloorDivide
-    const hasInitializer vModulo
+    const hasImplicitType hasInitializer vModulo
       reference: <testLibrary>::@topLevelVariable::vModulo
       firstFragment: #F14
       type: int
@@ -8363,7 +8363,7 @@
         fragment: #F14
         expression: expression_13
       getter: <testLibrary>::@getter::vModulo
-    const hasInitializer vGreater
+    const hasImplicitType hasInitializer vGreater
       reference: <testLibrary>::@topLevelVariable::vGreater
       firstFragment: #F15
       type: bool
@@ -8371,7 +8371,7 @@
         fragment: #F15
         expression: expression_14
       getter: <testLibrary>::@getter::vGreater
-    const hasInitializer vGreaterEqual
+    const hasImplicitType hasInitializer vGreaterEqual
       reference: <testLibrary>::@topLevelVariable::vGreaterEqual
       firstFragment: #F16
       type: bool
@@ -8379,7 +8379,7 @@
         fragment: #F16
         expression: expression_15
       getter: <testLibrary>::@getter::vGreaterEqual
-    const hasInitializer vLess
+    const hasImplicitType hasInitializer vLess
       reference: <testLibrary>::@topLevelVariable::vLess
       firstFragment: #F17
       type: bool
@@ -8387,7 +8387,7 @@
         fragment: #F17
         expression: expression_16
       getter: <testLibrary>::@getter::vLess
-    const hasInitializer vLessEqual
+    const hasImplicitType hasInitializer vLessEqual
       reference: <testLibrary>::@topLevelVariable::vLessEqual
       firstFragment: #F18
       type: bool
@@ -8532,7 +8532,7 @@
         #F2 synthetic vConditional (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::vConditional
   topLevelVariables
-    const hasInitializer vConditional
+    const hasImplicitType hasInitializer vConditional
       reference: <testLibrary>::@topLevelVariable::vConditional
       firstFragment: #F1
       type: int
@@ -8592,7 +8592,7 @@
         #F2 synthetic vIdentical (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::vIdentical
   topLevelVariables
-    const hasInitializer vIdentical
+    const hasImplicitType hasInitializer vIdentical
       reference: <testLibrary>::@topLevelVariable::vIdentical
       firstFragment: #F1
       type: int
@@ -8638,7 +8638,7 @@
         #F2 synthetic vIfNull (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::vIfNull
   topLevelVariables
-    const hasInitializer vIfNull
+    const hasImplicitType hasInitializer vIfNull
       reference: <testLibrary>::@topLevelVariable::vIfNull
       firstFragment: #F1
       type: num
@@ -8817,7 +8817,7 @@
         #F26 synthetic vSymbol (nameOffset:<null>) (firstTokenOffset:<null>) (offset:372)
           element: <testLibrary>::@getter::vSymbol
   topLevelVariables
-    const hasInitializer vNull
+    const hasImplicitType hasInitializer vNull
       reference: <testLibrary>::@topLevelVariable::vNull
       firstFragment: #F1
       type: dynamic
@@ -8825,7 +8825,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::vNull
-    const hasInitializer vBoolFalse
+    const hasImplicitType hasInitializer vBoolFalse
       reference: <testLibrary>::@topLevelVariable::vBoolFalse
       firstFragment: #F2
       type: bool
@@ -8833,7 +8833,7 @@
         fragment: #F2
         expression: expression_1
       getter: <testLibrary>::@getter::vBoolFalse
-    const hasInitializer vBoolTrue
+    const hasImplicitType hasInitializer vBoolTrue
       reference: <testLibrary>::@topLevelVariable::vBoolTrue
       firstFragment: #F3
       type: bool
@@ -8841,7 +8841,7 @@
         fragment: #F3
         expression: expression_2
       getter: <testLibrary>::@getter::vBoolTrue
-    const hasInitializer vIntPositive
+    const hasImplicitType hasInitializer vIntPositive
       reference: <testLibrary>::@topLevelVariable::vIntPositive
       firstFragment: #F4
       type: int
@@ -8849,7 +8849,7 @@
         fragment: #F4
         expression: expression_3
       getter: <testLibrary>::@getter::vIntPositive
-    const hasInitializer vIntNegative
+    const hasImplicitType hasInitializer vIntNegative
       reference: <testLibrary>::@topLevelVariable::vIntNegative
       firstFragment: #F5
       type: int
@@ -8857,7 +8857,7 @@
         fragment: #F5
         expression: expression_4
       getter: <testLibrary>::@getter::vIntNegative
-    const hasInitializer vIntLong1
+    const hasImplicitType hasInitializer vIntLong1
       reference: <testLibrary>::@topLevelVariable::vIntLong1
       firstFragment: #F6
       type: int
@@ -8865,7 +8865,7 @@
         fragment: #F6
         expression: expression_5
       getter: <testLibrary>::@getter::vIntLong1
-    const hasInitializer vIntLong2
+    const hasImplicitType hasInitializer vIntLong2
       reference: <testLibrary>::@topLevelVariable::vIntLong2
       firstFragment: #F7
       type: int
@@ -8873,7 +8873,7 @@
         fragment: #F7
         expression: expression_6
       getter: <testLibrary>::@getter::vIntLong2
-    const hasInitializer vIntLong3
+    const hasImplicitType hasInitializer vIntLong3
       reference: <testLibrary>::@topLevelVariable::vIntLong3
       firstFragment: #F8
       type: int
@@ -8881,7 +8881,7 @@
         fragment: #F8
         expression: expression_7
       getter: <testLibrary>::@getter::vIntLong3
-    const hasInitializer vDouble
+    const hasImplicitType hasInitializer vDouble
       reference: <testLibrary>::@topLevelVariable::vDouble
       firstFragment: #F9
       type: double
@@ -8889,7 +8889,7 @@
         fragment: #F9
         expression: expression_8
       getter: <testLibrary>::@getter::vDouble
-    const hasInitializer vString
+    const hasImplicitType hasInitializer vString
       reference: <testLibrary>::@topLevelVariable::vString
       firstFragment: #F10
       type: String
@@ -8897,7 +8897,7 @@
         fragment: #F10
         expression: expression_9
       getter: <testLibrary>::@getter::vString
-    const hasInitializer vStringConcat
+    const hasImplicitType hasInitializer vStringConcat
       reference: <testLibrary>::@topLevelVariable::vStringConcat
       firstFragment: #F11
       type: String
@@ -8905,7 +8905,7 @@
         fragment: #F11
         expression: expression_10
       getter: <testLibrary>::@getter::vStringConcat
-    const hasInitializer vStringInterpolation
+    const hasImplicitType hasInitializer vStringInterpolation
       reference: <testLibrary>::@topLevelVariable::vStringInterpolation
       firstFragment: #F12
       type: String
@@ -8913,7 +8913,7 @@
         fragment: #F12
         expression: expression_11
       getter: <testLibrary>::@getter::vStringInterpolation
-    const hasInitializer vSymbol
+    const hasImplicitType hasInitializer vSymbol
       reference: <testLibrary>::@topLevelVariable::vSymbol
       firstFragment: #F13
       type: Symbol
@@ -9040,7 +9040,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: String?
@@ -9115,7 +9115,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: int?
@@ -9415,7 +9415,7 @@
         #F8 synthetic vComplement (nameOffset:<null>) (firstTokenOffset:<null>) (offset:72)
           element: <testLibrary>::@getter::vComplement
   topLevelVariables
-    const hasInitializer vNotEqual
+    const hasImplicitType hasInitializer vNotEqual
       reference: <testLibrary>::@topLevelVariable::vNotEqual
       firstFragment: #F1
       type: bool
@@ -9423,7 +9423,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::vNotEqual
-    const hasInitializer vNot
+    const hasImplicitType hasInitializer vNot
       reference: <testLibrary>::@topLevelVariable::vNot
       firstFragment: #F2
       type: bool
@@ -9431,7 +9431,7 @@
         fragment: #F2
         expression: expression_1
       getter: <testLibrary>::@getter::vNot
-    const hasInitializer vNegate
+    const hasImplicitType hasInitializer vNegate
       reference: <testLibrary>::@topLevelVariable::vNegate
       firstFragment: #F3
       type: int
@@ -9439,7 +9439,7 @@
         fragment: #F3
         expression: expression_2
       getter: <testLibrary>::@getter::vNegate
-    const hasInitializer vComplement
+    const hasImplicitType hasInitializer vComplement
       reference: <testLibrary>::@topLevelVariable::vComplement
       firstFragment: #F4
       type: int
@@ -9492,7 +9492,7 @@
         #F2 synthetic vSuper (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::vSuper
   topLevelVariables
-    const hasInitializer vSuper
+    const hasImplicitType hasInitializer vSuper
       reference: <testLibrary>::@topLevelVariable::vSuper
       firstFragment: #F1
       type: InvalidType
@@ -9530,7 +9530,7 @@
         #F2 synthetic vThis (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::vThis
   topLevelVariables
-    const hasInitializer vThis
+    const hasImplicitType hasInitializer vThis
       reference: <testLibrary>::@topLevelVariable::vThis
       firstFragment: #F1
       type: dynamic
@@ -9571,7 +9571,7 @@
         #F2 synthetic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::c
   topLevelVariables
-    const hasInitializer c
+    const hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F1
       type: Never
@@ -9762,7 +9762,7 @@
         #F12 synthetic vInterfaceWithTypeArguments2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:246)
           element: <testLibrary>::@getter::vInterfaceWithTypeArguments2
   topLevelVariables
-    const hasInitializer vNull
+    const hasImplicitType hasInitializer vNull
       reference: <testLibrary>::@topLevelVariable::vNull
       firstFragment: #F1
       type: List<Null>
@@ -9770,7 +9770,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::vNull
-    const hasInitializer vDynamic
+    const hasImplicitType hasInitializer vDynamic
       reference: <testLibrary>::@topLevelVariable::vDynamic
       firstFragment: #F2
       type: List<dynamic>
@@ -9778,7 +9778,7 @@
         fragment: #F2
         expression: expression_1
       getter: <testLibrary>::@getter::vDynamic
-    const hasInitializer vInterfaceNoTypeParameters
+    const hasImplicitType hasInitializer vInterfaceNoTypeParameters
       reference: <testLibrary>::@topLevelVariable::vInterfaceNoTypeParameters
       firstFragment: #F3
       type: List<int>
@@ -9786,7 +9786,7 @@
         fragment: #F3
         expression: expression_2
       getter: <testLibrary>::@getter::vInterfaceNoTypeParameters
-    const hasInitializer vInterfaceNoTypeArguments
+    const hasImplicitType hasInitializer vInterfaceNoTypeArguments
       reference: <testLibrary>::@topLevelVariable::vInterfaceNoTypeArguments
       firstFragment: #F4
       type: List<List<dynamic>>
@@ -9794,7 +9794,7 @@
         fragment: #F4
         expression: expression_3
       getter: <testLibrary>::@getter::vInterfaceNoTypeArguments
-    const hasInitializer vInterfaceWithTypeArguments
+    const hasImplicitType hasInitializer vInterfaceWithTypeArguments
       reference: <testLibrary>::@topLevelVariable::vInterfaceWithTypeArguments
       firstFragment: #F5
       type: List<List<String>>
@@ -9802,7 +9802,7 @@
         fragment: #F5
         expression: expression_4
       getter: <testLibrary>::@getter::vInterfaceWithTypeArguments
-    const hasInitializer vInterfaceWithTypeArguments2
+    const hasImplicitType hasInitializer vInterfaceWithTypeArguments2
       reference: <testLibrary>::@topLevelVariable::vInterfaceWithTypeArguments2
       firstFragment: #F6
       type: List<Map<int, List<String>>>
@@ -9879,7 +9879,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: List<C>
@@ -9938,7 +9938,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: List<C>
@@ -9996,7 +9996,7 @@
       firstFragment: #F1
       aliasedType: int Function(String)
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F2
       type: List<int Function(String)>
@@ -10129,7 +10129,7 @@
         #F8 synthetic vInterfaceWithTypeArguments (nameOffset:<null>) (firstTokenOffset:<null>) (offset:132)
           element: <testLibrary>::@getter::vInterfaceWithTypeArguments
   topLevelVariables
-    const hasInitializer vDynamic1
+    const hasImplicitType hasInitializer vDynamic1
       reference: <testLibrary>::@topLevelVariable::vDynamic1
       firstFragment: #F1
       type: Map<dynamic, int>
@@ -10137,7 +10137,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::vDynamic1
-    const hasInitializer vDynamic2
+    const hasImplicitType hasInitializer vDynamic2
       reference: <testLibrary>::@topLevelVariable::vDynamic2
       firstFragment: #F2
       type: Map<int, dynamic>
@@ -10145,7 +10145,7 @@
         fragment: #F2
         expression: expression_1
       getter: <testLibrary>::@getter::vDynamic2
-    const hasInitializer vInterface
+    const hasImplicitType hasInitializer vInterface
       reference: <testLibrary>::@topLevelVariable::vInterface
       firstFragment: #F3
       type: Map<int, String>
@@ -10153,7 +10153,7 @@
         fragment: #F3
         expression: expression_2
       getter: <testLibrary>::@getter::vInterface
-    const hasInitializer vInterfaceWithTypeArguments
+    const hasImplicitType hasInitializer vInterfaceWithTypeArguments
       reference: <testLibrary>::@topLevelVariable::vInterfaceWithTypeArguments
       firstFragment: #F4
       type: Map<int, List<String>>
@@ -10265,7 +10265,7 @@
         #F6 synthetic vInterfaceWithTypeArguments (nameOffset:<null>) (firstTokenOffset:<null>) (offset:77)
           element: <testLibrary>::@getter::vInterfaceWithTypeArguments
   topLevelVariables
-    const hasInitializer vDynamic1
+    const hasImplicitType hasInitializer vDynamic1
       reference: <testLibrary>::@topLevelVariable::vDynamic1
       firstFragment: #F1
       type: Set<dynamic>
@@ -10273,7 +10273,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::vDynamic1
-    const hasInitializer vInterface
+    const hasImplicitType hasInitializer vInterface
       reference: <testLibrary>::@topLevelVariable::vInterface
       firstFragment: #F2
       type: Set<int>
@@ -10281,7 +10281,7 @@
         fragment: #F2
         expression: expression_1
       getter: <testLibrary>::@getter::vInterface
-    const hasInitializer vInterfaceWithTypeArguments
+    const hasImplicitType hasInitializer vInterfaceWithTypeArguments
       reference: <testLibrary>::@topLevelVariable::vInterfaceWithTypeArguments
       firstFragment: #F3
       type: Set<List<String>>
@@ -10341,7 +10341,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: List<int>
@@ -10404,7 +10404,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: Map<int, String>
@@ -10455,7 +10455,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: Set<int>
@@ -10504,7 +10504,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: Type
@@ -10633,7 +10633,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer a
+        static const enumConstant hasImplicitType hasInitializer a
           reference: <testLibrary>::@enum::E::@field::a
           firstFragment: #F2
           type: E
@@ -10641,7 +10641,7 @@
             fragment: #F2
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::a
-        static const enumConstant hasInitializer b
+        static const enumConstant hasImplicitType hasInitializer b
           reference: <testLibrary>::@enum::E::@field::b
           firstFragment: #F3
           type: E
@@ -10649,7 +10649,7 @@
             fragment: #F3
             expression: expression_1
           getter: <testLibrary>::@enum::E::@getter::b
-        static const enumConstant hasInitializer c
+        static const enumConstant hasImplicitType hasInitializer c
           reference: <testLibrary>::@enum::E::@field::c
           firstFragment: #F4
           type: E
@@ -10691,17 +10691,17 @@
           returnType: List<E>
           variable: <testLibrary>::@enum::E::@field::values
   topLevelVariables
-    final hasInitializer vValue
+    final hasImplicitType hasInitializer vValue
       reference: <testLibrary>::@topLevelVariable::vValue
       firstFragment: #F11
       type: E
       getter: <testLibrary>::@getter::vValue
-    final hasInitializer vValues
+    final hasImplicitType hasInitializer vValues
       reference: <testLibrary>::@topLevelVariable::vValues
       firstFragment: #F12
       type: List<E>
       getter: <testLibrary>::@getter::vValues
-    final hasInitializer vIndex
+    final hasImplicitType hasInitializer vIndex
       reference: <testLibrary>::@topLevelVariable::vIndex
       firstFragment: #F13
       type: int
@@ -10787,7 +10787,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer a
+        static const enumConstant hasImplicitType hasInitializer a
           reference: <testLibrary>::@enum::E::@field::a
           firstFragment: #F2
           type: E
@@ -10819,7 +10819,7 @@
           returnType: List<E>
           variable: <testLibrary>::@enum::E::@field::values
   topLevelVariables
-    final hasInitializer vToString
+    final hasImplicitType hasInitializer vToString
       reference: <testLibrary>::@topLevelVariable::vToString
       firstFragment: #F7
       type: String
@@ -10877,7 +10877,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        static const hasInitializer a
+        static const hasImplicitType hasInitializer a
           reference: <testLibrary>::@class::C::@field::a
           firstFragment: #F2
           type: dynamic
@@ -10885,7 +10885,7 @@
             fragment: #F2
             expression: expression_0
           getter: <testLibrary>::@class::C::@getter::a
-        static const hasInitializer b
+        static const hasImplicitType hasInitializer b
           reference: <testLibrary>::@class::C::@field::b
           firstFragment: #F3
           type: dynamic
@@ -10950,7 +10950,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        static const hasInitializer a
+        static const hasImplicitType hasInitializer a
           reference: <testLibrary>::@class::C::@field::a
           firstFragment: #F2
           type: dynamic Function()
diff --git a/pkg/analyzer/test/src/summary/elements/duplicate_declaration_test.dart b/pkg/analyzer/test/src/summary/elements/duplicate_declaration_test.dart
index 3741518..8ea19cd 100644
--- a/pkg/analyzer/test/src/summary/elements/duplicate_declaration_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/duplicate_declaration_test.dart
@@ -121,7 +121,7 @@
       reference: <testLibrary>::@class::A::@def::0
       firstFragment: #F1
       fields
-        static const hasInitializer f01
+        static const hasImplicitType hasInitializer f01
           reference: <testLibrary>::@class::A::@def::0::@field::f01
           firstFragment: #F2
           type: int
@@ -129,7 +129,7 @@
             fragment: #F2
             expression: expression_0
           getter: <testLibrary>::@class::A::@def::0::@getter::f01
-        static const hasInitializer f02
+        static const hasImplicitType hasInitializer f02
           reference: <testLibrary>::@class::A::@def::0::@field::f02
           firstFragment: #F3
           type: int
@@ -156,7 +156,7 @@
       reference: <testLibrary>::@class::A::@def::1
       firstFragment: #F7
       fields
-        static const hasInitializer f11
+        static const hasImplicitType hasInitializer f11
           reference: <testLibrary>::@class::A::@def::1::@field::f11
           firstFragment: #F8
           type: int
@@ -164,7 +164,7 @@
             fragment: #F8
             expression: expression_2
           getter: <testLibrary>::@class::A::@def::1::@getter::f11
-        static const hasInitializer f12
+        static const hasImplicitType hasInitializer f12
           reference: <testLibrary>::@class::A::@def::1::@field::f12
           firstFragment: #F9
           type: int
@@ -191,7 +191,7 @@
       reference: <testLibrary>::@class::A::@def::2
       firstFragment: #F13
       fields
-        static const hasInitializer f21
+        static const hasImplicitType hasInitializer f21
           reference: <testLibrary>::@class::A::@def::2::@field::f21
           firstFragment: #F14
           type: int
@@ -199,7 +199,7 @@
             fragment: #F14
             expression: expression_4
           getter: <testLibrary>::@class::A::@def::2::@getter::f21
-        static const hasInitializer f22
+        static const hasImplicitType hasInitializer f22
           reference: <testLibrary>::@class::A::@def::2::@field::f22
           firstFragment: #F15
           type: int
@@ -665,7 +665,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer a
+        static const enumConstant hasImplicitType hasInitializer a
           reference: <testLibrary>::@enum::E::@def::0::@field::a
           firstFragment: #F2
           type: E
@@ -673,7 +673,7 @@
             fragment: #F2
             expression: expression_0
           getter: <testLibrary>::@enum::E::@def::0::@getter::a
-        static const enumConstant hasInitializer b
+        static const enumConstant hasImplicitType hasInitializer b
           reference: <testLibrary>::@enum::E::@def::0::@field::b
           firstFragment: #F3
           type: E
@@ -714,7 +714,7 @@
       firstFragment: #F9
       supertype: Enum
       fields
-        static const enumConstant hasInitializer c
+        static const enumConstant hasImplicitType hasInitializer c
           reference: <testLibrary>::@enum::E::@def::1::@field::c
           firstFragment: #F10
           type: E
@@ -722,7 +722,7 @@
             fragment: #F10
             expression: expression_3
           getter: <testLibrary>::@enum::E::@def::1::@getter::c
-        static const enumConstant hasInitializer d
+        static const enumConstant hasImplicitType hasInitializer d
           reference: <testLibrary>::@enum::E::@def::1::@field::d
           firstFragment: #F11
           type: E
@@ -730,7 +730,7 @@
             fragment: #F11
             expression: expression_4
           getter: <testLibrary>::@enum::E::@def::1::@getter::d
-        static const enumConstant hasInitializer e
+        static const enumConstant hasImplicitType hasInitializer e
           reference: <testLibrary>::@enum::E::@def::1::@field::e
           firstFragment: #F12
           type: E
@@ -834,7 +834,7 @@
       extendedType: int
       onDeclaration: dart:core::@class::int
       fields
-        static x
+        static hasImplicitType x
           reference: <testLibrary>::@extension::E::@def::1::@field::x
           firstFragment: #F3
           type: dynamic
@@ -862,7 +862,7 @@
       extendedType: int
       onDeclaration: dart:core::@class::int
       fields
-        static hasInitializer y
+        static hasImplicitType hasInitializer y
           reference: <testLibrary>::@extension::E::@def::2::@field::y
           firstFragment: #F8
           type: int
@@ -1177,7 +1177,7 @@
       superclassConstraints
         Object
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@mixin::A::@def::1::@field::x
           firstFragment: #F3
           type: dynamic
@@ -1205,7 +1205,7 @@
       superclassConstraints
         Object
       fields
-        hasInitializer y
+        hasImplicitType hasInitializer y
           reference: <testLibrary>::@mixin::A::@def::2::@field::y
           firstFragment: #F8
           type: int
@@ -1284,18 +1284,18 @@
       type: bool
       getter: <testLibrary>::@getter::x::@def::0
       setter: <testLibrary>::@setter::x::@def::0
-    x
+    hasImplicitType x
       reference: <testLibrary>::@topLevelVariable::x::@def::1
       firstFragment: #F2
       type: dynamic
       getter: <testLibrary>::@getter::x::@def::1
       setter: <testLibrary>::@setter::x::@def::1
-    final hasInitializer x
+    final hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x::@def::2
       firstFragment: #F3
       type: int
       getter: <testLibrary>::@getter::x::@def::2
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x::@def::3
       firstFragment: #F4
       type: double
diff --git a/pkg/analyzer/test/src/summary/elements/enum_test.dart b/pkg/analyzer/test/src/summary/elements/enum_test.dart
index aee28f2..d21547f 100644
--- a/pkg/analyzer/test/src/summary/elements/enum_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/enum_test.dart
@@ -120,7 +120,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer aaa
+        static const enumConstant hasImplicitType hasInitializer aaa
           reference: <testLibrary>::@enum::E::@field::aaa
           firstFragment: #F2
           type: E
@@ -128,7 +128,7 @@
             fragment: #F2
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::aaa
-        static const enumConstant hasInitializer bbb
+        static const enumConstant hasImplicitType hasInitializer bbb
           reference: <testLibrary>::@enum::E::@field::bbb
           firstFragment: #F3
           type: E
@@ -136,7 +136,7 @@
             fragment: #F3
             expression: expression_1
           getter: <testLibrary>::@enum::E::@getter::bbb
-        static const enumConstant hasInitializer ccc
+        static const enumConstant hasImplicitType hasInitializer ccc
           reference: <testLibrary>::@enum::E::@field::ccc
           firstFragment: #F4
           type: E
@@ -250,7 +250,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -387,7 +387,7 @@
           firstFragment: #F2
       supertype: Enum
       fields
-        static const enumConstant hasInitializer int
+        static const enumConstant hasImplicitType hasInitializer int
           reference: <testLibrary>::@enum::E::@field::int
           firstFragment: #F3
           type: E<int>
@@ -395,7 +395,7 @@
             fragment: #F3
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::int
-        static const enumConstant hasInitializer string
+        static const enumConstant hasImplicitType hasInitializer string
           reference: <testLibrary>::@enum::E::@field::string
           firstFragment: #F4
           type: E<String>
@@ -496,7 +496,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer _name
+        static const enumConstant hasImplicitType hasInitializer _name
           reference: <testLibrary>::@enum::E::@field::_name
           firstFragment: #F2
           type: E
@@ -612,7 +612,7 @@
           firstFragment: #F2
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F3
           type: E<double>
@@ -707,7 +707,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer _
+        static const enumConstant hasImplicitType hasInitializer _
           reference: <testLibrary>::@enum::E::@field::_
           firstFragment: #F2
           type: E
@@ -804,7 +804,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -900,7 +900,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -1004,7 +1004,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -1020,7 +1020,7 @@
             fragment: #F3
             expression: expression_1
           getter: <testLibrary>::@enum::E::@getter::values
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@enum::E::@field::x
           firstFragment: #F4
           type: dynamic
@@ -1130,7 +1130,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -1251,7 +1251,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -1369,7 +1369,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -1488,7 +1488,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -1604,7 +1604,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -1620,7 +1620,7 @@
             fragment: #F3
             expression: expression_1
           getter: <testLibrary>::@enum::E::@getter::values
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@enum::E::@field::x
           firstFragment: #F4
           type: dynamic
@@ -1720,7 +1720,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -1736,7 +1736,7 @@
             fragment: #F3
             expression: expression_1
           getter: <testLibrary>::@enum::E::@getter::values
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@enum::E::@field::x
           firstFragment: #F4
           type: dynamic
@@ -1841,7 +1841,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -1945,7 +1945,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -2058,7 +2058,7 @@
           firstFragment: #F2
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F3
           type: E<dynamic>
@@ -2190,7 +2190,7 @@
       documentationComment: /**\n * Docs\n */
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -2290,7 +2290,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -2306,7 +2306,7 @@
             fragment: #F3
             expression: expression_1
           getter: <testLibrary>::@enum::E::@getter::values
-        final hasInitializer foo
+        final hasImplicitType hasInitializer foo
           reference: <testLibrary>::@enum::E::@field::foo
           firstFragment: #F4
           type: int
@@ -2425,7 +2425,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -2544,7 +2544,7 @@
       interfaces
         I
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F4
           type: E
@@ -2659,7 +2659,7 @@
         A
         C
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F4
           type: E
@@ -2798,7 +2798,7 @@
       interfaces
         I<U>
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F6
           type: E<dynamic>
@@ -2922,7 +2922,7 @@
         X
         Z
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F6
           type: E
@@ -3033,7 +3033,7 @@
           firstFragment: #F2
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F3
           type: E<dynamic>
@@ -3144,7 +3144,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -3238,7 +3238,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::0::@field::v
           firstFragment: #F2
           type: InvalidType
@@ -3335,7 +3335,7 @@
       mixins
         M
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -3456,7 +3456,7 @@
         A
         C
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F4
           type: E
@@ -3579,7 +3579,7 @@
         M1<int>
         M2<int>
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -3696,7 +3696,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -3810,7 +3810,7 @@
           firstFragment: #F2
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F3
           type: E<dynamic>
@@ -3915,7 +3915,7 @@
           bound: T
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F4
           type: E<num, num>
@@ -4478,7 +4478,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer a
+        static const enumConstant hasImplicitType hasInitializer a
           reference: <testLibrary>::@enum::E::@field::a
           firstFragment: #F2
           type: E
@@ -4486,7 +4486,7 @@
             fragment: #F2
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::a
-        static const enumConstant hasInitializer b
+        static const enumConstant hasImplicitType hasInitializer b
           reference: <testLibrary>::@enum::E::@field::b
           firstFragment: #F3
           type: E
@@ -4621,7 +4621,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer a
+        static const enumConstant hasImplicitType hasInitializer a
           reference: <testLibrary>::@enum::E::@field::a
           firstFragment: #F2
           type: E
@@ -4629,7 +4629,7 @@
             fragment: #F2
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::a
-        static const enumConstant hasInitializer b
+        static const enumConstant hasImplicitType hasInitializer b
           reference: <testLibrary>::@enum::E::@field::b
           firstFragment: #F3
           type: E
@@ -4758,7 +4758,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -4766,7 +4766,7 @@
             fragment: #F2
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::v
-        static const enumConstant hasInitializer <null-name>
+        static const enumConstant hasImplicitType hasInitializer <null-name>
           reference: <testLibrary>::@enum::E::@field::0
           firstFragment: #F3
           type: E
@@ -4878,7 +4878,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v1
+        static const enumConstant hasImplicitType hasInitializer v1
           reference: <testLibrary>::@enum::E::@field::v1
           firstFragment: #F2
           type: E
@@ -4886,7 +4886,7 @@
             fragment: #F2
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::v1
-        static const enumConstant hasInitializer v2
+        static const enumConstant hasImplicitType hasInitializer v2
           reference: <testLibrary>::@enum::E::@field::v2
           firstFragment: #F3
           type: E
@@ -5016,7 +5016,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v1
+        static const enumConstant hasImplicitType hasInitializer v1
           reference: <testLibrary>::@enum::E1::@field::v1
           firstFragment: #F2
           type: E1
@@ -5052,7 +5052,7 @@
       firstFragment: #F7
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v2
+        static const enumConstant hasImplicitType hasInitializer v2
           reference: <testLibrary>::@enum::E2::@field::v2
           firstFragment: #F8
           type: E2
@@ -5303,7 +5303,7 @@
       firstFragment: #F14
       supertype: Enum
       fields
-        static const enumConstant hasInitializer a
+        static const enumConstant hasImplicitType hasInitializer a
           reference: <testLibrary>::@enum::E::@field::a
           firstFragment: #F15
           type: E
@@ -5311,7 +5311,7 @@
             fragment: #F15
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::a
-        static const enumConstant hasInitializer b
+        static const enumConstant hasImplicitType hasInitializer b
           reference: <testLibrary>::@enum::E::@field::b
           firstFragment: #F16
           type: E
@@ -5319,7 +5319,7 @@
             fragment: #F16
             expression: expression_1
           getter: <testLibrary>::@enum::E::@getter::b
-        static const enumConstant hasInitializer c
+        static const enumConstant hasImplicitType hasInitializer c
           reference: <testLibrary>::@enum::E::@field::c
           firstFragment: #F17
           type: E
@@ -5426,7 +5426,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -5458,7 +5458,7 @@
           returnType: List<E>
           variable: <testLibrary>::@enum::E::@field::values
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F7
       type: int
@@ -5621,7 +5621,7 @@
       firstFragment: #F6
       supertype: Enum
       fields
-        static const enumConstant hasInitializer a
+        static const enumConstant hasImplicitType hasInitializer a
           reference: <testLibrary>::@enum::E::@field::a
           firstFragment: #F7
           type: E
@@ -5629,7 +5629,7 @@
             fragment: #F7
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::a
-        static const enumConstant hasInitializer b
+        static const enumConstant hasImplicitType hasInitializer b
           reference: <testLibrary>::@enum::E::@field::b
           firstFragment: #F8
           type: E
@@ -5637,7 +5637,7 @@
             fragment: #F8
             expression: expression_1
           getter: <testLibrary>::@enum::E::@getter::b
-        static const enumConstant hasInitializer c
+        static const enumConstant hasImplicitType hasInitializer c
           reference: <testLibrary>::@enum::E::@field::c
           firstFragment: #F9
           type: E
@@ -5739,7 +5739,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -5852,7 +5852,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -5892,7 +5892,7 @@
           returnType: List<E>
           variable: <testLibrary>::@enum::E::@field::values
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F7
       type: int
@@ -5990,7 +5990,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -6035,7 +6035,7 @@
               element: <testLibrary>::@getter::a
           returnType: void
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F8
       type: int
@@ -6168,7 +6168,7 @@
               element: <testLibrary>::@getter::foo
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F3
           type: E<dynamic>
@@ -6184,7 +6184,7 @@
             fragment: #F4
             expression: expression_1
           getter: <testLibrary>::@enum::E::@getter::values
-        static const hasInitializer foo
+        static const hasImplicitType hasInitializer foo
           reference: <testLibrary>::@enum::E::@field::foo
           firstFragment: #F5
           type: int
@@ -6226,7 +6226,7 @@
               element: <testLibrary>::@enum::E::@getter::foo
           returnType: void
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F11
       type: int
@@ -6335,7 +6335,7 @@
               element: <testLibrary>::@getter::a
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F3
           type: E<dynamic>
@@ -6367,7 +6367,7 @@
           returnType: List<E<dynamic>>
           variable: <testLibrary>::@enum::E::@field::values
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F8
       type: int
@@ -6447,7 +6447,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
@@ -6479,7 +6479,7 @@
           returnType: List<E>
           variable: <testLibrary>::@enum::E::@field::values
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F7
       type: int
@@ -6572,7 +6572,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -6799,7 +6799,7 @@
       firstFragment: #F3
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F5
           type: A
@@ -6964,7 +6964,7 @@
       firstFragment: #F6
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@def::1::@field::v
           firstFragment: #F8
           type: A
@@ -7176,7 +7176,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v1
+        static const enumConstant hasImplicitType hasInitializer v1
           reference: <testLibrary>::@enum::A::@field::v1
           firstFragment: #F3
           type: A
@@ -7192,7 +7192,7 @@
             fragment: #F4
             expression: expression_1
           getter: <testLibrary>::@enum::A::@getter::values
-        static const enumConstant hasInitializer v2
+        static const enumConstant hasImplicitType hasInitializer v2
           reference: <testLibrary>::@enum::A::@field::v2
           firstFragment: #F8
           type: A
@@ -7341,7 +7341,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v1
+        static const enumConstant hasImplicitType hasInitializer v1
           reference: <testLibrary>::@enum::A::@field::v1
           firstFragment: #F3
           type: A
@@ -7357,7 +7357,7 @@
             fragment: #F4
             expression: expression_1
           getter: <testLibrary>::@enum::A::@getter::values
-        static const enumConstant hasInitializer v2
+        static const enumConstant hasImplicitType hasInitializer v2
           reference: <testLibrary>::@enum::A::@field::v2
           firstFragment: #F9
           type: A
@@ -7365,7 +7365,7 @@
             fragment: #F9
             expression: expression_2
           getter: <testLibrary>::@enum::A::@getter::v2
-        static const enumConstant hasInitializer v3
+        static const enumConstant hasImplicitType hasInitializer v3
           reference: <testLibrary>::@enum::A::@field::v3
           firstFragment: #F11
           type: A
@@ -7510,7 +7510,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v1
+        static const enumConstant hasImplicitType hasInitializer v1
           reference: <testLibrary>::@enum::A::@field::v1
           firstFragment: #F3
           type: A
@@ -7526,7 +7526,7 @@
             fragment: #F4
             expression: expression_1
           getter: <testLibrary>::@enum::A::@getter::values
-        static const enumConstant hasInitializer v2
+        static const enumConstant hasImplicitType hasInitializer v2
           reference: <testLibrary>::@enum::A::@field::v2
           firstFragment: #F8
           type: A
@@ -7684,7 +7684,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v1
+        static const enumConstant hasImplicitType hasInitializer v1
           reference: <testLibrary>::@enum::A::@field::v1
           firstFragment: #F3
           type: A
@@ -7692,7 +7692,7 @@
             fragment: #F3
             expression: expression_0
           getter: <testLibrary>::@enum::A::@getter::v1
-        static const enumConstant hasInitializer v2
+        static const enumConstant hasImplicitType hasInitializer v2
           reference: <testLibrary>::@enum::A::@field::v2
           firstFragment: #F4
           type: A
@@ -7700,7 +7700,7 @@
             fragment: #F5
             expression: expression_4
           getter: <testLibrary>::@enum::A::@getter::v2
-        static const enumConstant hasInitializer v3
+        static const enumConstant hasImplicitType hasInitializer v3
           reference: <testLibrary>::@enum::A::@field::v3
           firstFragment: #F6
           type: A
@@ -7868,7 +7868,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v1
+        static const enumConstant hasImplicitType hasInitializer v1
           reference: <testLibrary>::@enum::A::@field::v1
           firstFragment: #F3
           type: A
@@ -7876,7 +7876,7 @@
             fragment: #F4
             expression: expression_3
           getter: <testLibrary>::@enum::A::@getter::v1
-        static const enumConstant hasInitializer v2
+        static const enumConstant hasImplicitType hasInitializer v2
           reference: <testLibrary>::@enum::A::@field::v2
           firstFragment: #F5
           type: A
@@ -8025,7 +8025,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -8033,7 +8033,7 @@
             fragment: #F4
             expression: expression_3
           getter: <testLibrary>::@enum::A::@getter::v
-        static const enumConstant hasInitializer v2
+        static const enumConstant hasImplicitType hasInitializer v2
           reference: <testLibrary>::@enum::A::@field::v2
           firstFragment: #F5
           type: A
@@ -8142,7 +8142,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -8276,7 +8276,7 @@
           firstFragment: #F3
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F5
           type: A<int>
@@ -8389,7 +8389,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -8494,7 +8494,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -8603,7 +8603,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -8721,7 +8721,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -8844,7 +8844,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -8983,7 +8983,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -9132,7 +9132,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -9277,7 +9277,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -9423,7 +9423,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -9566,7 +9566,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -9703,7 +9703,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -9833,7 +9833,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -9966,7 +9966,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -10125,7 +10125,7 @@
           firstFragment: #F3
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F5
           type: A<int>
@@ -10265,7 +10265,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -10389,7 +10389,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -10521,7 +10521,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -10674,7 +10674,7 @@
           firstFragment: #F3
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F5
           type: A<int>
@@ -10813,7 +10813,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -10954,7 +10954,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -11083,7 +11083,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -11219,7 +11219,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -11353,7 +11353,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -11468,7 +11468,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -11606,7 +11606,7 @@
         I1
         I2
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F7
           type: A
@@ -11759,7 +11759,7 @@
         I2
         I3
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F9
           type: A
@@ -11918,7 +11918,7 @@
         I1
         I2<T>
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F10
           type: A<int>
@@ -12069,7 +12069,7 @@
         I1
         I2<T>
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F10
           type: A<dynamic>
@@ -12177,7 +12177,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -12296,7 +12296,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -12421,7 +12421,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -12545,7 +12545,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -12672,7 +12672,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -12800,7 +12800,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -12934,7 +12934,7 @@
           firstFragment: #F3
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F5
           type: A<int>
@@ -13076,7 +13076,7 @@
           firstFragment: #F3
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F5
           type: A<int>
@@ -13191,7 +13191,7 @@
         M1
         M2
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -13356,7 +13356,7 @@
         M2<T>
         M3<T>
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F5
           type: A<int>
@@ -13500,7 +13500,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -13645,7 +13645,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -13779,7 +13779,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -13920,7 +13920,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -14053,7 +14053,7 @@
       firstFragment: #F3
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F4
           type: A
@@ -14161,7 +14161,7 @@
       firstFragment: #F2
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@def::0::@field::v
           firstFragment: #F3
           type: A
@@ -14309,7 +14309,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -14425,7 +14425,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -14534,7 +14534,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A
@@ -14652,7 +14652,7 @@
       interfaces
         A
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::B::@field::v
           firstFragment: #F3
           type: B
@@ -14779,7 +14779,7 @@
       interfaces
         A
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::B::@field::v
           firstFragment: #F3
           type: B
@@ -14906,7 +14906,7 @@
       mixins
         A
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::B::@field::v
           firstFragment: #F3
           type: B
@@ -15044,7 +15044,7 @@
           bound: B
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F7
           type: A<B>
@@ -15168,7 +15168,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
@@ -15285,7 +15285,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
@@ -15409,7 +15409,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
@@ -15526,7 +15526,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
@@ -15643,7 +15643,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
@@ -15766,7 +15766,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
@@ -15902,7 +15902,7 @@
           firstFragment: #F2
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F3
           type: A<int>
@@ -16017,7 +16017,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
@@ -16118,7 +16118,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
@@ -16226,7 +16226,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
@@ -16337,7 +16337,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
@@ -16433,7 +16433,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
@@ -16523,7 +16523,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
@@ -16613,7 +16613,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::A::@field::v
           firstFragment: #F2
           type: A
diff --git a/pkg/analyzer/test/src/summary/elements/extension_test.dart b/pkg/analyzer/test/src/summary/elements/extension_test.dart
index 3942f38..c88574c 100644
--- a/pkg/analyzer/test/src/summary/elements/extension_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/extension_test.dart
@@ -102,7 +102,7 @@
       extendedType: int
       onDeclaration: dart:core::@class::int
       fields
-        static const hasInitializer x
+        static const hasImplicitType hasInitializer x
           reference: <testLibrary>::@extension::E::@field::x
           firstFragment: #F2
           type: int
@@ -356,7 +356,7 @@
       extendedType: int
       onDeclaration: dart:core::@class::int
       fields
-        static const hasInitializer foo
+        static const hasImplicitType hasInitializer foo
           reference: <testLibrary>::@extension::E::@field::foo
           firstFragment: #F3
           type: int
@@ -384,7 +384,7 @@
               element: <testLibrary>::@extension::E::@getter::foo
           returnType: void
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F6
       type: int
@@ -449,7 +449,7 @@
       extendedType: A
       onDeclaration: <testLibrary>::@class::A
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F4
       type: dynamic
@@ -796,7 +796,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer foo
+        static const enumConstant hasImplicitType hasInitializer foo
           reference: <testLibrary>::@enum::A::@field::foo
           firstFragment: #F2
           type: A
diff --git a/pkg/analyzer/test/src/summary/elements/extension_type_test.dart b/pkg/analyzer/test/src/summary/elements/extension_type_test.dart
index 131f49b..f4ca5a1 100644
--- a/pkg/analyzer/test/src/summary/elements/extension_type_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/extension_type_test.dart
@@ -714,7 +714,7 @@
           type: int
           getter: <testLibrary>::@extensionType::A::@getter::it
           declaringFormalParameter: <testLibrary>::@extensionType::A::@constructor::new::@formalParameter::it
-        static const hasInitializer foo
+        static const hasImplicitType hasInitializer foo
           reference: <testLibrary>::@extensionType::A::@field::foo
           firstFragment: #F3
           type: int
@@ -777,7 +777,7 @@
           type: int
           getter: <testLibrary>::@extensionType::A::@getter::it
           declaringFormalParameter: <testLibrary>::@extensionType::A::@constructor::new::@formalParameter::it
-        final hasInitializer foo
+        final hasImplicitType hasInitializer foo
           reference: <testLibrary>::@extensionType::A::@field::foo
           firstFragment: #F3
           type: int
diff --git a/pkg/analyzer/test/src/summary/elements/formal_parameter_test.dart b/pkg/analyzer/test/src/summary/elements/formal_parameter_test.dart
index 794a13a..3bdecaa 100644
--- a/pkg/analyzer/test/src/summary/elements/formal_parameter_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/formal_parameter_test.dart
@@ -720,7 +720,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
diff --git a/pkg/analyzer/test/src/summary/elements/function_type_annotation_test.dart b/pkg/analyzer/test/src/summary/elements/function_type_annotation_test.dart
index 86bcaf4..340adfa 100644
--- a/pkg/analyzer/test/src/summary/elements/function_type_annotation_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/function_type_annotation_test.dart
@@ -450,7 +450,7 @@
           reference: <testLibrary>::@class::A::@constructor::new
           firstFragment: #F3
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F4
       metadata
@@ -614,7 +614,7 @@
           reference: <testLibrary>::@class::A::@constructor::new
           firstFragment: #F3
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F4
       type: A<String Function({int? a})>
@@ -726,7 +726,7 @@
           reference: <testLibrary>::@class::A::@constructor::new
           firstFragment: #F3
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F4
       type: A<String Function([int?])>
@@ -838,7 +838,7 @@
           reference: <testLibrary>::@class::A::@constructor::new
           firstFragment: #F3
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F4
       type: A<String Function({required int a})>
@@ -943,7 +943,7 @@
           reference: <testLibrary>::@class::A::@constructor::new
           firstFragment: #F3
   topLevelVariables
-    const hasInitializer v
+    const hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F4
       type: A<String Function(int)>
diff --git a/pkg/analyzer/test/src/summary/elements/library_export_test.dart b/pkg/analyzer/test/src/summary/elements/library_export_test.dart
index 680b57a..0773eed 100644
--- a/pkg/analyzer/test/src/summary/elements/library_export_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/library_export_test.dart
@@ -1392,7 +1392,7 @@
         #F3 synthetic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27)
           element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F2
       type: int
diff --git a/pkg/analyzer/test/src/summary/elements/library_import_test.dart b/pkg/analyzer/test/src/summary/elements/library_import_test.dart
index 0cb1f96..cac1002 100644
--- a/pkg/analyzer/test/src/summary/elements/library_import_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/library_import_test.dart
@@ -988,7 +988,7 @@
         #F2 synthetic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29)
           element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -1049,7 +1049,7 @@
         #F2 synthetic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:42)
           element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
diff --git a/pkg/analyzer/test/src/summary/elements/metadata_test.dart b/pkg/analyzer/test/src/summary/elements/metadata_test.dart
index 2b4d1af..462e1b8 100644
--- a/pkg/analyzer/test/src/summary/elements/metadata_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/metadata_test.dart
@@ -279,7 +279,7 @@
           returnType: void
           variable: <testLibrary>::@class::C::@field::x
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F7
       type: int
@@ -378,7 +378,7 @@
                 staticType: null
               element: <testLibrary>::@getter::foo
       fields
-        static const hasInitializer foo
+        static const hasImplicitType hasInitializer foo
           reference: <testLibrary>::@class::C::@field::foo
           firstFragment: #F3
           type: int
@@ -410,7 +410,7 @@
               element: <testLibrary>::@class::C::@getter::foo
           returnType: void
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F7
       type: int
@@ -474,7 +474,7 @@
           reference: <testLibrary>::@class::C::@constructor::new
           firstFragment: #F2
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F3
       type: dynamic
@@ -482,7 +482,7 @@
         fragment: #F3
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F4
       type: dynamic
@@ -577,7 +577,7 @@
           reference: <testLibrary>::@class::E::@constructor::new
           firstFragment: #F6
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F7
       type: dynamic
@@ -1581,7 +1581,7 @@
                 staticType: null
               element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F3
       type: dynamic
@@ -1649,7 +1649,7 @@
                 staticType: null
               element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F3
       type: dynamic
@@ -1710,7 +1710,7 @@
         #F2 synthetic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -1796,7 +1796,7 @@
           returnType: void
           variable: <testLibrary>::@class::C::@field::x
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F7
       type: dynamic
@@ -1873,7 +1873,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -1913,7 +1913,7 @@
           returnType: void
           variable: <testLibrary>::@class::C::@field::x
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F8
       type: dynamic
@@ -1990,7 +1990,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F2
           type: dynamic
@@ -2033,7 +2033,7 @@
           returnType: void
           variable: <testLibrary>::@class::C::@field::x
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F8
       type: dynamic
@@ -2084,7 +2084,7 @@
                 staticType: null
               element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -2145,7 +2145,7 @@
                 staticType: null
               element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -2215,7 +2215,7 @@
             #F5 requiredPositional value (nameOffset:25) (firstTokenOffset:25) (offset:25)
               element: <testLibrary>::@setter::f::@formalParameter::value
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -2298,7 +2298,7 @@
           element: <testLibrary>::@getter::a
       aliasedType: dynamic Function()
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F2
       type: dynamic
@@ -2348,7 +2348,7 @@
                     staticType: null
                   element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -2419,7 +2419,7 @@
                   literal: null @28
                   staticType: Null
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -2526,7 +2526,7 @@
           element: <testLibrary>::@getter::b
       aliasedType: void Function()
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F2
       type: dynamic
@@ -2534,7 +2534,7 @@
         fragment: #F2
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F3
       type: dynamic
@@ -2600,7 +2600,7 @@
         #F2 synthetic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28)
           element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -2647,7 +2647,7 @@
       firstFragment: #F1
       aliasedType: void Function(int)
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F2
       type: int
@@ -2694,7 +2694,7 @@
       firstFragment: #F1
       aliasedType: void Function(int Function(int))
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F2
       type: int
@@ -2741,7 +2741,7 @@
       firstFragment: #F1
       aliasedType: void Function<T>(int)
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F2
       type: int
@@ -2905,7 +2905,7 @@
         #F2 synthetic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20)
           element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -2992,7 +2992,7 @@
           returnType: dynamic
           variable: <testLibrary>::@class::C::@field::m
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F5
       type: dynamic
@@ -3097,7 +3097,7 @@
               element: <testLibrary>::@getter::b
           returnType: dynamic
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F4
       type: dynamic
@@ -3105,7 +3105,7 @@
         fragment: #F4
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F5
       type: dynamic
@@ -3209,7 +3209,7 @@
               element: <testLibrary>::@getter::b
           returnType: dynamic
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F3
       type: dynamic
@@ -3217,7 +3217,7 @@
         fragment: #F3
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F4
       type: dynamic
@@ -3320,7 +3320,7 @@
           returnType: void
           variable: <testLibrary>::@class::C::@field::m
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F6
       type: dynamic
@@ -3417,7 +3417,7 @@
       superclassConstraints
         Object
       fields
-        static const hasInitializer foo
+        static const hasImplicitType hasInitializer foo
           reference: <testLibrary>::@mixin::M::@field::foo
           firstFragment: #F3
           type: int
@@ -3445,7 +3445,7 @@
               element: <testLibrary>::@mixin::M::@getter::foo
           returnType: void
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F6
       type: int
@@ -3503,7 +3503,7 @@
       superclassConstraints
         Object
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F2
       type: dynamic
@@ -3511,7 +3511,7 @@
         fragment: #F2
         expression: expression_0
       getter: <testLibrary>::@getter::a
-    const hasInitializer b
+    const hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F3
       type: dynamic
@@ -3594,7 +3594,7 @@
           reference: <testLibrary>::@class::A::@constructor::new
           firstFragment: #F3
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F4
       type: int
@@ -3692,7 +3692,7 @@
                     staticType: null
                   element: <testLibrary>::@getter::foo
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F4
       type: int
@@ -3784,7 +3784,7 @@
           returnType: int
           variable: <testLibrary>::@class::A::@field::getter
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F5
       type: int
@@ -3911,7 +3911,7 @@
                   element: <testLibrary>::@getter::foo
           returnType: void
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F6
       type: int
@@ -4026,7 +4026,7 @@
           returnType: void
           variable: <testLibrary>::@class::A::@field::setter
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F6
       type: int
@@ -4140,7 +4140,7 @@
       superclassConstraints
         Object
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F7
       type: int
@@ -4269,7 +4269,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer e1
+        static const enumConstant hasImplicitType hasInitializer e1
           reference: <testLibrary>::@enum::E::@field::e1
           firstFragment: #F2
           type: E
@@ -4277,7 +4277,7 @@
             fragment: #F2
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::e1
-        static const enumConstant hasInitializer e2
+        static const enumConstant hasImplicitType hasInitializer e2
           reference: <testLibrary>::@enum::E::@field::e2
           firstFragment: #F3
           type: E
@@ -4285,7 +4285,7 @@
             fragment: #F3
             expression: expression_1
           getter: <testLibrary>::@enum::E::@getter::e2
-        static const enumConstant hasInitializer e3
+        static const enumConstant hasImplicitType hasInitializer e3
           reference: <testLibrary>::@enum::E::@field::e3
           firstFragment: #F4
           type: E
@@ -4327,7 +4327,7 @@
           returnType: List<E>
           variable: <testLibrary>::@enum::E::@field::values
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F11
       type: int
@@ -4399,7 +4399,7 @@
       extendedType: List<T>
       onDeclaration: dart:core::@class::List
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F3
       type: int
@@ -4488,13 +4488,13 @@
       reference: <testLibrary>::@class::A
       firstFragment: #F1
       fields
-        static hasInitializer isStatic
+        static hasImplicitType hasInitializer isStatic
           reference: <testLibrary>::@class::A::@field::isStatic
           firstFragment: #F2
           type: int
           getter: <testLibrary>::@class::A::@getter::isStatic
           setter: <testLibrary>::@class::A::@setter::isStatic
-        static const hasInitializer isStaticConst
+        static const hasImplicitType hasInitializer isStaticConst
           reference: <testLibrary>::@class::A::@field::isStaticConst
           firstFragment: #F3
           type: int
@@ -4502,7 +4502,7 @@
             fragment: #F3
             expression: expression_0
           getter: <testLibrary>::@class::A::@getter::isStaticConst
-        hasInitializer isInstance
+        hasImplicitType hasInitializer isInstance
           reference: <testLibrary>::@class::A::@field::isInstance
           firstFragment: #F4
           type: int
@@ -4548,7 +4548,7 @@
           returnType: void
           variable: <testLibrary>::@class::A::@field::isInstance
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F13
       type: int
@@ -4600,7 +4600,7 @@
         #F2 synthetic foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:52)
           element: <testLibrary>::@getter::foo
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F1
       type: int
@@ -4672,7 +4672,7 @@
       superclassConstraints
         Object
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F3
       type: int
@@ -4759,7 +4759,7 @@
               element: <testLibrary>::@getter::foo
       aliasedType: void Function(int)
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F3
       type: int
@@ -4846,7 +4846,7 @@
               element: <testLibrary>::@getter::foo
       aliasedType: void Function<U>(int)
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F3
       type: int
@@ -4936,7 +4936,7 @@
       enclosingFragment: #F0
       previousFragment: #F1
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F3
       type: int
@@ -5014,7 +5014,7 @@
                   literal: 42 @51
                   staticType: int
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F1
       type: int
@@ -5106,7 +5106,7 @@
                 staticType: null
               element: <testLibrary>::@getter::foo
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F1
       type: int
@@ -5189,7 +5189,7 @@
                     staticType: null
                   element: <testLibrary>::@getter::foo
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F1
       type: int
@@ -5298,7 +5298,7 @@
             #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25)
               element: <testLibrary>::@setter::isNotConst::@formalParameter::value
   topLevelVariables
-    const hasInitializer foo
+    const hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F1
       type: int
@@ -5306,7 +5306,7 @@
         fragment: #F1
         expression: expression_0
       getter: <testLibrary>::@getter::foo
-    hasInitializer isNotConst
+    hasImplicitType hasInitializer isNotConst
       reference: <testLibrary>::@topLevelVariable::isNotConst
       firstFragment: #F2
       metadata
@@ -5320,7 +5320,7 @@
       type: int
       getter: <testLibrary>::@getter::isNotConst
       setter: <testLibrary>::@setter::isNotConst
-    const hasInitializer isConst
+    const hasImplicitType hasInitializer isConst
       reference: <testLibrary>::@topLevelVariable::isConst
       firstFragment: #F3
       metadata
@@ -5419,7 +5419,7 @@
       enclosingFragment: #F0
       previousFragment: #F0
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F2
       type: int
@@ -5479,7 +5479,7 @@
       enclosingFragment: #F0
       previousFragment: #F0
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F2
       type: dynamic
@@ -5749,7 +5749,7 @@
                     staticType: null
                   element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -5854,7 +5854,7 @@
                   element: <testLibrary>::@getter::a
           returnType: dynamic
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F5
       type: dynamic
@@ -5910,7 +5910,7 @@
                     staticType: null
                   element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -5987,7 +5987,7 @@
                   literal: null @26
                   staticType: Null
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -6116,7 +6116,7 @@
               superConstructorParameter: <testLibrary>::@class::A::@constructor::new::@formalParameter::x
           superConstructor: <testLibrary>::@class::A::@constructor::new
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F7
       type: dynamic
@@ -6170,7 +6170,7 @@
             #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
               element: <testLibrary>::@setter::v::@formalParameter::value
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -6272,7 +6272,7 @@
           reference: <testLibrary>::@class::C::@constructor::new
           firstFragment: #F3
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F4
       type: dynamic
@@ -6386,7 +6386,7 @@
           reference: <testLibrary>::@class::E::@constructor::new
           firstFragment: #F7
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F8
       type: dynamic
@@ -6436,7 +6436,7 @@
                     staticType: null
                   element: <testLibrary>::@getter::a
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -6518,7 +6518,7 @@
               element: <testLibrary>::@getter::a
       aliasedType: dynamic Function()
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F3
       type: dynamic
@@ -6580,7 +6580,7 @@
             #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    const hasInitializer a
+    const hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
@@ -6668,7 +6668,7 @@
       reference: <testLibrary>::@class::A
       firstFragment: #F1
       fields
-        static const hasInitializer x
+        static const hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::A::@field::x
           firstFragment: #F2
           type: int
@@ -6808,7 +6808,7 @@
       firstFragment: #F3
       supertype: Enum
       fields
-        static const enumConstant hasInitializer a
+        static const enumConstant hasImplicitType hasInitializer a
           reference: <testLibrary>::@enum::E::@field::a
           firstFragment: #F4
           type: E
@@ -6816,7 +6816,7 @@
             fragment: #F4
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::a
-        static const enumConstant hasInitializer b
+        static const enumConstant hasImplicitType hasInitializer b
           reference: <testLibrary>::@enum::E::@field::b
           firstFragment: #F5
           type: E
@@ -6824,7 +6824,7 @@
             fragment: #F5
             expression: expression_1
           getter: <testLibrary>::@enum::E::@getter::b
-        static const enumConstant hasInitializer c
+        static const enumConstant hasImplicitType hasInitializer c
           reference: <testLibrary>::@enum::E::@field::c
           firstFragment: #F6
           type: E
@@ -6917,7 +6917,7 @@
       extendedType: int
       onDeclaration: dart:core::@class::int
       fields
-        static const hasInitializer x
+        static const hasImplicitType hasInitializer x
           reference: <testLibrary>::@extension::E::@field::x
           firstFragment: #F4
           type: int
@@ -6967,7 +6967,7 @@
       extendedType: Object
       onDeclaration: dart:core::@class::Object
       fields
-        static const hasInitializer foo
+        static const hasImplicitType hasInitializer foo
           reference: <testLibrary>::@extension::0::@field::foo
           firstFragment: #F2
           type: int
diff --git a/pkg/analyzer/test/src/summary/elements/mixin_test.dart b/pkg/analyzer/test/src/summary/elements/mixin_test.dart
index b039b78..5168954 100644
--- a/pkg/analyzer/test/src/summary/elements/mixin_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/mixin_test.dart
@@ -563,7 +563,7 @@
       superclassConstraints
         Object
       fields
-        hasInitializer x
+        hasImplicitType hasInitializer x
           reference: <testLibrary>::@mixin::M::@field::x
           firstFragment: #F2
           type: int
@@ -615,7 +615,7 @@
       superclassConstraints
         Object
       fields
-        final hasInitializer x
+        final hasImplicitType hasInitializer x
           reference: <testLibrary>::@mixin::M::@field::x
           firstFragment: #F2
           type: int
diff --git a/pkg/analyzer/test/src/summary/elements/non_synthetic_test.dart b/pkg/analyzer/test/src/summary/elements/non_synthetic_test.dart
index ac8cc6d4..434f0ec 100644
--- a/pkg/analyzer/test/src/summary/elements/non_synthetic_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/non_synthetic_test.dart
@@ -265,7 +265,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer a
+        static const enumConstant hasImplicitType hasInitializer a
           reference: <testLibrary>::@enum::E::@field::a
           firstFragment: #F2
           type: E
@@ -273,7 +273,7 @@
             fragment: #F2
             expression: expression_0
           getter: <testLibrary>::@enum::E::@getter::a
-        static const enumConstant hasInitializer b
+        static const enumConstant hasImplicitType hasInitializer b
           reference: <testLibrary>::@enum::E::@field::b
           firstFragment: #F3
           type: E
diff --git a/pkg/analyzer/test/src/summary/elements/record_type_test.dart b/pkg/analyzer/test/src/summary/elements/record_type_test.dart
index c3a72ad..f1a698e 100644
--- a/pkg/analyzer/test/src/summary/elements/record_type_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/record_type_test.dart
@@ -94,7 +94,7 @@
       reference: <testLibrary>::@class::A
       firstFragment: #F1
       fields
-        final hasInitializer x
+        final hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::A::@field::x
           firstFragment: #F2
           type: (int, bool)
@@ -558,7 +558,7 @@
         #F2 synthetic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::x
   topLevelVariables
-    final hasInitializer x
+    final hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: (int, bool)
@@ -620,7 +620,7 @@
         #F2 synthetic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::x
   topLevelVariables
-    const hasInitializer x
+    const hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: Type
@@ -681,7 +681,7 @@
         #F2 synthetic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::x
   topLevelVariables
-    const hasInitializer x
+    const hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: Type
diff --git a/pkg/analyzer/test/src/summary/elements/since_sdk_version_test.dart b/pkg/analyzer/test/src/summary/elements/since_sdk_version_test.dart
index 3e47e53..f6d3ba2 100644
--- a/pkg/analyzer/test/src/summary/elements/since_sdk_version_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/since_sdk_version_test.dart
@@ -436,7 +436,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v1
+        static const enumConstant hasImplicitType hasInitializer v1
           reference: dart:foo::@enum::E::@field::v1
           firstFragment: #F2
           type: E
@@ -444,7 +444,7 @@
             fragment: #F2
             expression: expression_0
           getter: dart:foo::@enum::E::@getter::v1
-        static const enumConstant hasInitializer v2
+        static const enumConstant hasImplicitType hasInitializer v2
           reference: dart:foo::@enum::E::@field::v2
           firstFragment: #F3
           sinceSdkVersion: 2.15.0
@@ -543,7 +543,7 @@
       sinceSdkVersion: 2.15.0
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: dart:foo::@enum::E::@field::v
           firstFragment: #F2
           sinceSdkVersion: 2.15.0
@@ -926,7 +926,7 @@
         #F2 synthetic foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:47)
           element: dart:foo::@getter::foo
   topLevelVariables
-    final hasInitializer foo
+    final hasImplicitType hasInitializer foo
       reference: dart:foo::@topLevelVariable::foo
       firstFragment: #F1
       sinceSdkVersion: 2.15.0
diff --git a/pkg/analyzer/test/src/summary/elements/top_level_function_test.dart b/pkg/analyzer/test/src/summary/elements/top_level_function_test.dart
index 03abc90..1c7cc36 100644
--- a/pkg/analyzer/test/src/summary/elements/top_level_function_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/top_level_function_test.dart
@@ -1141,7 +1141,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::main::@formalParameter::value
   topLevelVariables
-    main
+    hasImplicitType main
       reference: <testLibrary>::@topLevelVariable::main
       firstFragment: #F1
       type: dynamic
diff --git a/pkg/analyzer/test/src/summary/elements/top_level_variable_test.dart b/pkg/analyzer/test/src/summary/elements/top_level_variable_test.dart
index f1bbb5e..efd1b66 100644
--- a/pkg/analyzer/test/src/summary/elements/top_level_variable_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/top_level_variable_test.dart
@@ -733,7 +733,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13)
               element: <testLibrary>::@setter::i::@formalParameter::value
   topLevelVariables
-    i
+    external i
       reference: <testLibrary>::@topLevelVariable::i
       firstFragment: #F1
       type: int
@@ -1265,7 +1265,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:64)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    x
+    hasImplicitType x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       documentationComment: /**\n * Docs\n */
@@ -1588,7 +1588,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    x
+    hasImplicitType x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: dynamic
@@ -1703,7 +1703,7 @@
         #F2 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::v
   topLevelVariables
-    final hasInitializer v
+    final hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int
@@ -1746,7 +1746,7 @@
         #F2 synthetic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::x
   topLevelVariables
-    const hasInitializer x
+    const hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: (int, bool)
@@ -1822,7 +1822,7 @@
           firstFragment: #F4
           returnType: int
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F5
       type: int
@@ -1868,7 +1868,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::v::@formalParameter::value
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int
@@ -2110,7 +2110,7 @@
         #F2 synthetic i (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::i
   topLevelVariables
-    const hasInitializer i
+    const hasImplicitType hasInitializer i
       reference: <testLibrary>::@topLevelVariable::i
       firstFragment: #F1
       type: int
@@ -2145,7 +2145,7 @@
         #F2 synthetic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::b
   topLevelVariables
-    final hasInitializer b
+    final hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F1
       type: double
@@ -2194,12 +2194,12 @@
         #F5 synthetic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19)
           element: <testLibrary>::@getter::a
   topLevelVariables
-    final hasInitializer b
+    final hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: double
       getter: <testLibrary>::@getter::b
-    final hasInitializer a
+    final hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F4
       type: int
@@ -2233,7 +2233,7 @@
         #F2 synthetic i (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::i
   topLevelVariables
-    final hasInitializer i
+    final hasImplicitType hasInitializer i
       reference: <testLibrary>::@topLevelVariable::i
       firstFragment: #F1
       type: int
@@ -2267,7 +2267,7 @@
         #F2 synthetic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23)
           element: <testLibrary>::@getter::x
   topLevelVariables
-    final hasInitializer x
+    final hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: C
@@ -2375,7 +2375,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::v::@formalParameter::value
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int
@@ -2424,7 +2424,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::a::@formalParameter::value
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: Never
@@ -2473,7 +2473,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::a::@formalParameter::value
   topLevelVariables
-    a
+    hasImplicitType a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -3188,7 +3188,7 @@
               element: dart:core::@getter::deprecated
           previousFragment: #F2
   topLevelVariables
-    final hasInitializer foo
+    final hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F1
       type: int
@@ -3981,7 +3981,7 @@
             #F4 requiredPositional _ (nameOffset:47) (firstTokenOffset:43) (offset:47)
               element: <testLibrary>::@setter::foo::@formalParameter::_
   topLevelVariables
-    final hasInitializer foo
+    final hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F1
       type: int
@@ -4652,7 +4652,7 @@
         #F3 synthetic foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::foo
   topLevelVariables
-    final hasInitializer foo
+    final hasImplicitType hasInitializer foo
       reference: <testLibrary>::@topLevelVariable::foo
       firstFragment: #F1
       metadata
@@ -4817,7 +4817,7 @@
             #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27)
               element: <testLibrary>::@setter::foo::@formalParameter::value
   topLevelVariables
-    final hasInitializer int
+    final hasImplicitType hasInitializer int
       reference: <testLibrary>::@topLevelVariable::int
       firstFragment: #F1
       type: int
diff --git a/pkg/analyzer/test/src/summary/elements/type_inference_test.dart b/pkg/analyzer/test/src/summary/elements/type_inference_test.dart
index 60201db..e95f11c 100644
--- a/pkg/analyzer/test/src/summary/elements/type_inference_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/type_inference_test.dart
@@ -36,7 +36,7 @@
         #F2 synthetic f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6)
           element: <testLibrary>::@getter::f
   topLevelVariables
-    final hasInitializer f
+    final hasImplicitType hasInitializer f
       reference: <testLibrary>::@topLevelVariable::f
       firstFragment: #F1
       type: V Function<U, V>(U, V)
@@ -83,7 +83,7 @@
         #F3 synthetic f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19)
           element: <testLibrary>::@getter::f
   topLevelVariables
-    final hasInitializer f
+    final hasImplicitType hasInitializer f
       reference: <testLibrary>::@topLevelVariable::f
       firstFragment: #F2
       type: double Function(int)
@@ -133,7 +133,7 @@
         #E0 T
           firstFragment: #F2
       fields
-        final hasInitializer f
+        final hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::C::@field::f
           firstFragment: #F3
           type: InvalidType
@@ -269,7 +269,7 @@
           firstFragment: #F10
       aliasedType: D<T, U> Function<U>()
   topLevelVariables
-    const hasInitializer x
+    const hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F11
       type: C<int>
@@ -392,7 +392,7 @@
       firstFragment: #F7
       aliasedType: D<T> Function<T>()
   topLevelVariables
-    const hasInitializer x
+    const hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F8
       type: C
@@ -506,7 +506,7 @@
               firstFragment: #F8
               type: T
   topLevelVariables
-    hasInitializer s
+    hasImplicitType hasInitializer s
       reference: <testLibrary>::@topLevelVariable::s
       firstFragment: #F9
       type: S<B>
@@ -699,13 +699,13 @@
           firstFragment: #F16
           superConstructor: <testLibrary>::@class::C::@constructor::new
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F17
       type: A
       getter: <testLibrary>::@getter::a
       setter: <testLibrary>::@setter::a
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F18
       type: C
@@ -788,19 +788,19 @@
             #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:53)
               element: <testLibrary>::@setter::z::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: Iterable<String>
       getter: <testLibrary>::@getter::x
       setter: <testLibrary>::@setter::x
-    hasInitializer y
+    hasImplicitType hasInitializer y
       reference: <testLibrary>::@topLevelVariable::y
       firstFragment: #F2
       type: List<int>
       getter: <testLibrary>::@getter::y
       setter: <testLibrary>::@setter::y
-    hasInitializer z
+    hasImplicitType hasInitializer z
       reference: <testLibrary>::@topLevelVariable::z
       firstFragment: #F3
       type: List<String>
@@ -939,13 +939,13 @@
           returnType: void
           variable: <testLibrary>::@class::C::@field::p
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F7
       type: List<C>
       getter: <testLibrary>::@getter::x
       setter: <testLibrary>::@setter::x
-    hasInitializer y
+    hasImplicitType hasInitializer y
       reference: <testLibrary>::@topLevelVariable::y
       firstFragment: #F8
       type: Iterable<int>
@@ -1063,7 +1063,7 @@
         #E1 V
           firstFragment: #F3
       fields
-        final x
+        final hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F4
           type: dynamic
@@ -1397,7 +1397,7 @@
           reference: <testLibrary>::@class::C::@constructor::_
           firstFragment: #F5
   topLevelVariables
-    hasInitializer c
+    hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F6
       type: C<num>
@@ -1462,12 +1462,12 @@
       reference: <testLibrary>::@class::A
       firstFragment: #F1
       fields
-        static final hasInitializer foo
+        static final hasImplicitType hasInitializer foo
           reference: <testLibrary>::@class::A::@field::foo
           firstFragment: #F2
           type: int
           getter: <testLibrary>::@class::A::@getter::foo
-        static final hasInitializer bar
+        static final hasImplicitType hasInitializer bar
           reference: <testLibrary>::@class::A::@field::bar
           firstFragment: #F3
           type: int Function(double)
@@ -1528,7 +1528,7 @@
             #F6 T (nameOffset:6) (firstTokenOffset:6) (offset:6)
               element: #E0 T
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: int
@@ -1619,7 +1619,7 @@
       type: int Function<T>()
       getter: <testLibrary>::@getter::n
       setter: <testLibrary>::@setter::n
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F3
       type: int
@@ -1701,7 +1701,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:30)
               element: <testLibrary>::@setter::m::@formalParameter::value
   topLevelVariables
-    hasInitializer m
+    hasImplicitType hasInitializer m
       reference: <testLibrary>::@topLevelVariable::m
       firstFragment: #F1
       type: HashMap<dynamic, dynamic>
@@ -1779,25 +1779,25 @@
             #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49)
               element: <testLibrary>::@setter::d::@formalParameter::value
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
       getter: <testLibrary>::@getter::a
       setter: <testLibrary>::@setter::a
-    hasInitializer b
+    hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: dynamic
       getter: <testLibrary>::@getter::b
       setter: <testLibrary>::@setter::b
-    hasInitializer c
+    hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F3
       type: dynamic
       getter: <testLibrary>::@getter::c
       setter: <testLibrary>::@setter::c
-    hasInitializer d
+    hasImplicitType hasInitializer d
       reference: <testLibrary>::@topLevelVariable::d
       firstFragment: #F4
       type: int
@@ -1916,7 +1916,7 @@
       firstFragment: #F1
       supertype: D
       fields
-        v
+        hasImplicitType v
           reference: <testLibrary>::@class::C::@field::v
           firstFragment: #F2
           type: int Function(String)
@@ -2002,7 +2002,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: int
@@ -2054,7 +2054,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: int?
@@ -2106,7 +2106,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: void Function()
@@ -2158,7 +2158,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: void Function()?
@@ -2246,7 +2246,7 @@
           firstFragment: #F2
       supertype: D<int, T>
       fields
-        v
+        hasImplicitType v
           reference: <testLibrary>::@class::C::@field::v
           firstFragment: #F3
           hasEnclosingTypeParameterReference: true
@@ -2346,7 +2346,7 @@
       firstFragment: #F1
       aliasedType: void Function(int Function(String))
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F2
       type: dynamic
@@ -2689,7 +2689,7 @@
                 #F8 requiredPositional h (nameOffset:21) (firstTokenOffset:16) (offset:21)
                   element: h@21
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: dynamic
@@ -2765,7 +2765,7 @@
                 #F8 requiredPositional h (nameOffset:22) (firstTokenOffset:17) (offset:22)
                   element: h@22
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: dynamic
@@ -3034,13 +3034,13 @@
           reference: <testLibrary>::@class::A::@constructor::named
           firstFragment: #F3
   topLevelVariables
-    hasInitializer a1
+    hasImplicitType hasInitializer a1
       reference: <testLibrary>::@topLevelVariable::a1
       firstFragment: #F4
       type: A
       getter: <testLibrary>::@getter::a1
       setter: <testLibrary>::@setter::a1
-    hasInitializer a2
+    hasImplicitType hasInitializer a2
       reference: <testLibrary>::@topLevelVariable::a2
       firstFragment: #F5
       type: A
@@ -3124,13 +3124,13 @@
             #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:48)
               element: <testLibrary>::@setter::a2::@formalParameter::value
   topLevelVariables
-    hasInitializer a1
+    hasImplicitType hasInitializer a1
       reference: <testLibrary>::@topLevelVariable::a1
       firstFragment: #F1
       type: A
       getter: <testLibrary>::@getter::a1
       setter: <testLibrary>::@setter::a1
-    hasInitializer a2
+    hasImplicitType hasInitializer a2
       reference: <testLibrary>::@topLevelVariable::a2
       firstFragment: #F2
       type: A
@@ -3213,7 +3213,7 @@
                 #F10 requiredPositional y (nameOffset:54) (firstTokenOffset:47) (offset:54)
                   element: y@54
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: List<Object Function(int Function(String))>
@@ -3368,7 +3368,7 @@
       firstFragment: #F9
       supertype: C
       fields
-        f
+        hasImplicitType f
           reference: <testLibrary>::@class::D::@field::f
           firstFragment: #F10
           type: dynamic
@@ -3498,7 +3498,7 @@
           returnType: void
           variable: <testLibrary>::@class::B::@field::a
   topLevelVariables
-    hasInitializer c
+    hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F10
       type: double
@@ -3559,13 +3559,13 @@
             #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:42)
               element: <testLibrary>::@setter::b::@formalParameter::value
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int Function()
       getter: <testLibrary>::@getter::a
       setter: <testLibrary>::@setter::a
-    hasInitializer b
+    hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: int
@@ -3634,7 +3634,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:35)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: Future<dynamic> Function()
@@ -3682,7 +3682,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: int Function(int Function(String))
@@ -3730,7 +3730,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: int Function(int Function(String))
@@ -3783,7 +3783,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21)
               element: <testLibrary>::@setter::y::@formalParameter::value
   topLevelVariables
-    hasInitializer y
+    hasImplicitType hasInitializer y
       reference: <testLibrary>::@topLevelVariable::y
       firstFragment: #F1
       type: int
@@ -3843,12 +3843,12 @@
       reference: <testLibrary>::@class::A
       firstFragment: #F1
       fields
-        static final hasInitializer x
+        static final hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::A::@field::x
           firstFragment: #F2
           type: dynamic
           getter: <testLibrary>::@class::A::@getter::x
-        static final hasInitializer y
+        static final hasImplicitType hasInitializer y
           reference: <testLibrary>::@class::A::@field::y
           firstFragment: #F3
           type: dynamic
@@ -3911,17 +3911,17 @@
       reference: <testLibrary>::@class::A
       firstFragment: #F1
       fields
-        static final hasInitializer a
+        static final hasImplicitType hasInitializer a
           reference: <testLibrary>::@class::A::@field::a
           firstFragment: #F2
           type: dynamic
           getter: <testLibrary>::@class::A::@getter::a
-        static final hasInitializer b
+        static final hasImplicitType hasInitializer b
           reference: <testLibrary>::@class::A::@field::b
           firstFragment: #F3
           type: A
           getter: <testLibrary>::@class::A::@getter::b
-        final hasInitializer c
+        final hasImplicitType hasInitializer c
           reference: <testLibrary>::@class::A::@field::c
           firstFragment: #F4
           type: dynamic
@@ -4057,7 +4057,7 @@
       reference: <testLibrary>::@class::B
       firstFragment: #F9
       fields
-        hasInitializer a
+        hasImplicitType hasInitializer a
           reference: <testLibrary>::@class::B::@field::a
           firstFragment: #F10
           type: A<String>
@@ -4245,7 +4245,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F13
       fields
-        hasInitializer a
+        hasImplicitType hasInitializer a
           reference: <testLibrary>::@class::C::@field::a
           firstFragment: #F14
           type: B<int>
@@ -4327,7 +4327,7 @@
         #E0 T
           firstFragment: #F2
       fields
-        hasInitializer f
+        hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::A::@field::f
           firstFragment: #F3
           type: int
@@ -4409,12 +4409,12 @@
               firstFragment: #F3
               type: dynamic
   topLevelVariables
-    final hasInitializer a
+    final hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F4
       type: dynamic
       getter: <testLibrary>::@getter::a
-    final hasInitializer b
+    final hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F5
       type: dynamic
@@ -4463,7 +4463,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38)
               element: <testLibrary>::@setter::v::@formalParameter::value
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: InvalidType
@@ -4511,7 +4511,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: dynamic Function(dynamic) Function(dynamic)
@@ -4559,7 +4559,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: int Function(int) Function(int)
@@ -4607,7 +4607,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: dynamic Function([dynamic])
@@ -4660,17 +4660,17 @@
         #F6 synthetic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:32)
           element: <testLibrary>::@getter::c
   topLevelVariables
-    final hasInitializer a
+    final hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
       getter: <testLibrary>::@getter::a
-    final hasInitializer b
+    final hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: dynamic
       getter: <testLibrary>::@getter::b
-    final hasInitializer c
+    final hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F3
       type: dynamic
@@ -4722,17 +4722,17 @@
         #F6 synthetic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:32)
           element: <testLibrary>::@getter::c
   topLevelVariables
-    final hasInitializer a
+    final hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
       getter: <testLibrary>::@getter::a
-    final hasInitializer b
+    final hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: dynamic
       getter: <testLibrary>::@getter::b
-    final hasInitializer c
+    final hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F3
       type: dynamic
@@ -4790,22 +4790,22 @@
         #F8 synthetic d (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49)
           element: <testLibrary>::@getter::d
   topLevelVariables
-    final hasInitializer a
+    final hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
       getter: <testLibrary>::@getter::a
-    final hasInitializer b
+    final hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: dynamic
       getter: <testLibrary>::@getter::b
-    final hasInitializer c
+    final hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F3
       type: dynamic
       getter: <testLibrary>::@getter::c
-    final hasInitializer d
+    final hasImplicitType hasInitializer d
       reference: <testLibrary>::@topLevelVariable::d
       firstFragment: #F4
       type: dynamic
@@ -4868,17 +4868,17 @@
         #F6 synthetic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36)
           element: <testLibrary>::@getter::c
   topLevelVariables
-    final hasInitializer a
+    final hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
       getter: <testLibrary>::@getter::a
-    final hasInitializer b
+    final hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: dynamic
       getter: <testLibrary>::@getter::b
-    final hasInitializer c
+    final hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F3
       type: dynamic
@@ -5012,12 +5012,12 @@
           returnType: T
           variable: <testLibrary>::@class::C::@field::f
   topLevelVariables
-    final hasInitializer b
+    final hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F11
       type: B
       getter: <testLibrary>::@getter::b
-    final hasInitializer c
+    final hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F12
       type: C<B>
@@ -5089,7 +5089,7 @@
           returnType: int
           variable: <testLibrary>::@extension::0::@field::foo
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F4
       type: int
@@ -5273,7 +5273,7 @@
             #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22)
               element: <testLibrary>::@setter::V2::@formalParameter::value
   topLevelVariables
-    V
+    hasImplicitType V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: dynamic
@@ -5718,7 +5718,7 @@
       firstFragment: #F3
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F4
           type: E
@@ -5941,7 +5941,7 @@
       firstFragment: #F16
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F17
           type: E
@@ -6161,7 +6161,7 @@
       firstFragment: #F4
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F5
           type: E
@@ -6394,7 +6394,7 @@
       firstFragment: #F5
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F6
           type: E
@@ -6615,7 +6615,7 @@
       firstFragment: #F4
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F5
           type: E
@@ -6988,7 +6988,7 @@
       firstFragment: #F1
       supertype: Enum
       fields
-        static const enumConstant hasInitializer v
+        static const enumConstant hasImplicitType hasInitializer v
           reference: <testLibrary>::@enum::E::@field::v
           firstFragment: #F2
           type: E
diff --git a/pkg/analyzer/test/src/summary/elements/types_test.dart b/pkg/analyzer/test/src/summary/elements/types_test.dart
index 6a90385..b184a84 100644
--- a/pkg/analyzer/test/src/summary/elements/types_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/types_test.dart
@@ -155,7 +155,7 @@
         #F2 synthetic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27)
           element: <testLibrary>::@getter::x
   topLevelVariables
-    const hasInitializer x
+    const hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: Type
@@ -217,13 +217,13 @@
         #F9 f (nameOffset:35) (firstTokenOffset:21) (offset:35)
           element: <testLibrary>::@function::f
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: FutureOr<int>
       getter: <testLibrary>::@getter::x
       setter: <testLibrary>::@setter::x
-    hasInitializer y
+    hasImplicitType hasInitializer y
       reference: <testLibrary>::@topLevelVariable::y
       firstFragment: #F2
       type: InvalidType
@@ -470,7 +470,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::v::@formalParameter::value
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int Function()
@@ -516,7 +516,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::v::@formalParameter::value
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: Future<dynamic> Function(dynamic)
@@ -568,7 +568,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25)
               element: <testLibrary>::@setter::v::@formalParameter::value
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: Future<int> Function(Future<Future<Future<int>>>)
@@ -619,7 +619,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25)
               element: <testLibrary>::@setter::v::@formalParameter::value
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: Future<int> Function(Future<int>)
@@ -670,7 +670,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25)
               element: <testLibrary>::@setter::v::@formalParameter::value
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: Future<dynamic> Function(Future<dynamic>)
@@ -731,7 +731,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        hasInitializer v
+        hasImplicitType hasInitializer v
           reference: <testLibrary>::@class::C::@field::v
           firstFragment: #F2
           type: int Function()
@@ -1067,7 +1067,7 @@
       reference: <testLibrary>::@class::B
       firstFragment: #F4
       fields
-        hasInitializer c3
+        hasImplicitType hasInitializer c3
           reference: <testLibrary>::@class::B::@field::c3
           firstFragment: #F5
           type: C<C<Object?>>
@@ -1100,7 +1100,7 @@
       type: C<C<dynamic>>
       getter: <testLibrary>::@getter::c
       setter: <testLibrary>::@setter::c
-    hasInitializer c2
+    hasImplicitType hasInitializer c2
       reference: <testLibrary>::@topLevelVariable::c2
       firstFragment: #F11
       type: C<C<Object?>>
@@ -1555,7 +1555,7 @@
           firstFragment: #F2
           bound: B<num>
       fields
-        final hasInitializer values
+        final hasImplicitType hasInitializer values
           reference: <testLibrary>::@class::A::@field::values
           firstFragment: #F3
           type: List<B<num>>
@@ -1856,7 +1856,7 @@
         #F7 V (nameOffset:16) (firstTokenOffset:16) (offset:16)
           element: <testLibrary>::@function::V
   topLevelVariables
-    V
+    hasImplicitType V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: dynamic
@@ -2322,7 +2322,7 @@
         #F3 f (nameOffset:52) (firstTokenOffset:47) (offset:52)
           element: <testLibrary>::@function::f
   topLevelVariables
-    final hasInitializer v
+    final hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int Function<T>(T)
@@ -2431,7 +2431,7 @@
         #E1 U
           firstFragment: #F3
       fields
-        hasInitializer v
+        hasImplicitType hasInitializer v
           reference: <testLibrary>::@class::C::@field::v
           firstFragment: #F4
           hasEnclosingTypeParameterReference: true
@@ -2529,7 +2529,7 @@
         #F3 f (nameOffset:40) (firstTokenOffset:35) (offset:40)
           element: <testLibrary>::@function::f
   topLevelVariables
-    final hasInitializer v
+    final hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int Function()
@@ -2569,7 +2569,7 @@
         #F3 f (nameOffset:70) (firstTokenOffset:65) (offset:70)
           element: <testLibrary>::@function::f
   topLevelVariables
-    final hasInitializer v
+    final hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int Function(int, String)
diff --git a/pkg/analyzer/test/src/summary/top_level_inference_test.dart b/pkg/analyzer/test/src/summary/top_level_inference_test.dart
index fe8bc7b..09b55ef 100644
--- a/pkg/analyzer/test/src/summary/top_level_inference_test.dart
+++ b/pkg/analyzer/test/src/summary/top_level_inference_test.dart
@@ -454,49 +454,49 @@
             #F32 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:212)
               element: <testLibrary>::@setter::vMinusDoubleDouble::@formalParameter::value
   topLevelVariables
-    hasInitializer vPlusIntInt
+    hasImplicitType hasInitializer vPlusIntInt
       reference: <testLibrary>::@topLevelVariable::vPlusIntInt
       firstFragment: #F1
       type: int
       getter: <testLibrary>::@getter::vPlusIntInt
       setter: <testLibrary>::@setter::vPlusIntInt
-    hasInitializer vPlusIntDouble
+    hasImplicitType hasInitializer vPlusIntDouble
       reference: <testLibrary>::@topLevelVariable::vPlusIntDouble
       firstFragment: #F2
       type: double
       getter: <testLibrary>::@getter::vPlusIntDouble
       setter: <testLibrary>::@setter::vPlusIntDouble
-    hasInitializer vPlusDoubleInt
+    hasImplicitType hasInitializer vPlusDoubleInt
       reference: <testLibrary>::@topLevelVariable::vPlusDoubleInt
       firstFragment: #F3
       type: double
       getter: <testLibrary>::@getter::vPlusDoubleInt
       setter: <testLibrary>::@setter::vPlusDoubleInt
-    hasInitializer vPlusDoubleDouble
+    hasImplicitType hasInitializer vPlusDoubleDouble
       reference: <testLibrary>::@topLevelVariable::vPlusDoubleDouble
       firstFragment: #F4
       type: double
       getter: <testLibrary>::@getter::vPlusDoubleDouble
       setter: <testLibrary>::@setter::vPlusDoubleDouble
-    hasInitializer vMinusIntInt
+    hasImplicitType hasInitializer vMinusIntInt
       reference: <testLibrary>::@topLevelVariable::vMinusIntInt
       firstFragment: #F5
       type: int
       getter: <testLibrary>::@getter::vMinusIntInt
       setter: <testLibrary>::@setter::vMinusIntInt
-    hasInitializer vMinusIntDouble
+    hasImplicitType hasInitializer vMinusIntDouble
       reference: <testLibrary>::@topLevelVariable::vMinusIntDouble
       firstFragment: #F6
       type: double
       getter: <testLibrary>::@getter::vMinusIntDouble
       setter: <testLibrary>::@setter::vMinusIntDouble
-    hasInitializer vMinusDoubleInt
+    hasImplicitType hasInitializer vMinusDoubleInt
       reference: <testLibrary>::@topLevelVariable::vMinusDoubleInt
       firstFragment: #F7
       type: double
       getter: <testLibrary>::@getter::vMinusDoubleInt
       setter: <testLibrary>::@setter::vMinusDoubleInt
-    hasInitializer vMinusDoubleDouble
+    hasImplicitType hasInitializer vMinusDoubleDouble
       reference: <testLibrary>::@topLevelVariable::vMinusDoubleDouble
       firstFragment: #F8
       type: double
@@ -642,7 +642,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::V::@formalParameter::value
   topLevelVariables
-    hasInitializer V
+    hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: num
@@ -710,19 +710,19 @@
             #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:33)
               element: <testLibrary>::@setter::t2::@formalParameter::value
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
       getter: <testLibrary>::@getter::a
       setter: <testLibrary>::@setter::a
-    hasInitializer t1
+    hasImplicitType hasInitializer t1
       reference: <testLibrary>::@topLevelVariable::t1
       firstFragment: #F2
       type: int
       getter: <testLibrary>::@getter::t1
       setter: <testLibrary>::@setter::t1
-    hasInitializer t2
+    hasImplicitType hasInitializer t2
       reference: <testLibrary>::@topLevelVariable::t2
       firstFragment: #F3
       type: int
@@ -818,19 +818,19 @@
             #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38)
               element: <testLibrary>::@setter::t2::@formalParameter::value
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: List<int>
       getter: <testLibrary>::@getter::a
       setter: <testLibrary>::@setter::a
-    hasInitializer t1
+    hasImplicitType hasInitializer t1
       reference: <testLibrary>::@topLevelVariable::t1
       firstFragment: #F2
       type: int
       getter: <testLibrary>::@getter::t1
       setter: <testLibrary>::@setter::t1
-    hasInitializer t2
+    hasImplicitType hasInitializer t2
       reference: <testLibrary>::@topLevelVariable::t2
       firstFragment: #F3
       type: int
@@ -979,19 +979,19 @@
           returnType: void
           variable: <testLibrary>::@class::A::@field::f
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F7
       type: A
       getter: <testLibrary>::@getter::a
       setter: <testLibrary>::@setter::a
-    hasInitializer t1
+    hasImplicitType hasInitializer t1
       reference: <testLibrary>::@topLevelVariable::t1
       firstFragment: #F8
       type: int
       getter: <testLibrary>::@getter::t1
       setter: <testLibrary>::@setter::t1
-    hasInitializer t2
+    hasImplicitType hasInitializer t2
       reference: <testLibrary>::@topLevelVariable::t2
       firstFragment: #F9
       type: int
@@ -1162,13 +1162,13 @@
       type: C
       getter: <testLibrary>::@getter::c
       setter: <testLibrary>::@setter::c
-    hasInitializer t1
+    hasImplicitType hasInitializer t1
       reference: <testLibrary>::@topLevelVariable::t1
       firstFragment: #F10
       type: int
       getter: <testLibrary>::@getter::t1
       setter: <testLibrary>::@setter::t1
-    hasInitializer t2
+    hasImplicitType hasInitializer t2
       reference: <testLibrary>::@topLevelVariable::t2
       firstFragment: #F11
       type: int
@@ -1327,13 +1327,13 @@
           reference: <testLibrary>::@class::C::@constructor::new
           firstFragment: #F8
   topLevelVariables
-    hasInitializer t1
+    hasImplicitType hasInitializer t1
       reference: <testLibrary>::@topLevelVariable::t1
       firstFragment: #F9
       type: int
       getter: <testLibrary>::@getter::t1
       setter: <testLibrary>::@setter::t1
-    hasInitializer t2
+    hasImplicitType hasInitializer t2
       reference: <testLibrary>::@topLevelVariable::t2
       firstFragment: #F10
       type: int
@@ -1420,13 +1420,13 @@
         #F10 fFuture (nameOffset:53) (firstTokenOffset:41) (offset:53)
           element: <testLibrary>::@function::fFuture
   topLevelVariables
-    hasInitializer uValue
+    hasImplicitType hasInitializer uValue
       reference: <testLibrary>::@topLevelVariable::uValue
       firstFragment: #F1
       type: Future<int> Function()
       getter: <testLibrary>::@getter::uValue
       setter: <testLibrary>::@setter::uValue
-    hasInitializer uFuture
+    hasImplicitType hasInitializer uFuture
       reference: <testLibrary>::@topLevelVariable::uFuture
       firstFragment: #F2
       type: Future<int> Function()
@@ -1537,31 +1537,31 @@
             #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:94)
               element: <testLibrary>::@setter::vBitShiftRight::@formalParameter::value
   topLevelVariables
-    hasInitializer vBitXor
+    hasImplicitType hasInitializer vBitXor
       reference: <testLibrary>::@topLevelVariable::vBitXor
       firstFragment: #F1
       type: int
       getter: <testLibrary>::@getter::vBitXor
       setter: <testLibrary>::@setter::vBitXor
-    hasInitializer vBitAnd
+    hasImplicitType hasInitializer vBitAnd
       reference: <testLibrary>::@topLevelVariable::vBitAnd
       firstFragment: #F2
       type: int
       getter: <testLibrary>::@getter::vBitAnd
       setter: <testLibrary>::@setter::vBitAnd
-    hasInitializer vBitOr
+    hasImplicitType hasInitializer vBitOr
       reference: <testLibrary>::@topLevelVariable::vBitOr
       firstFragment: #F3
       type: int
       getter: <testLibrary>::@getter::vBitOr
       setter: <testLibrary>::@setter::vBitOr
-    hasInitializer vBitShiftLeft
+    hasImplicitType hasInitializer vBitShiftLeft
       reference: <testLibrary>::@topLevelVariable::vBitShiftLeft
       firstFragment: #F4
       type: int
       getter: <testLibrary>::@getter::vBitShiftLeft
       setter: <testLibrary>::@setter::vBitShiftLeft
-    hasInitializer vBitShiftRight
+    hasImplicitType hasInitializer vBitShiftRight
       reference: <testLibrary>::@topLevelVariable::vBitShiftRight
       firstFragment: #F5
       type: int
@@ -1747,19 +1747,19 @@
           firstFragment: #F7
           returnType: void
   topLevelVariables
-    hasInitializer vSetField
+    hasImplicitType hasInitializer vSetField
       reference: <testLibrary>::@topLevelVariable::vSetField
       firstFragment: #F8
       type: A
       getter: <testLibrary>::@getter::vSetField
       setter: <testLibrary>::@setter::vSetField
-    hasInitializer vInvokeMethod
+    hasImplicitType hasInitializer vInvokeMethod
       reference: <testLibrary>::@topLevelVariable::vInvokeMethod
       firstFragment: #F9
       type: A
       getter: <testLibrary>::@getter::vInvokeMethod
       setter: <testLibrary>::@setter::vInvokeMethod
-    hasInitializer vBoth
+    hasImplicitType hasInitializer vBoth
       reference: <testLibrary>::@topLevelVariable::vBoth
       firstFragment: #F10
       type: A
@@ -2143,55 +2143,55 @@
           type: C
           getter: <testLibrary>::@class::X::@getter::c
           setter: <testLibrary>::@class::X::@setter::c
-        hasInitializer t01
+        hasImplicitType hasInitializer t01
           reference: <testLibrary>::@class::X::@field::t01
           firstFragment: #F23
           type: int
           getter: <testLibrary>::@class::X::@getter::t01
           setter: <testLibrary>::@class::X::@setter::t01
-        hasInitializer t02
+        hasImplicitType hasInitializer t02
           reference: <testLibrary>::@class::X::@field::t02
           firstFragment: #F24
           type: int
           getter: <testLibrary>::@class::X::@getter::t02
           setter: <testLibrary>::@class::X::@setter::t02
-        hasInitializer t03
+        hasImplicitType hasInitializer t03
           reference: <testLibrary>::@class::X::@field::t03
           firstFragment: #F25
           type: int
           getter: <testLibrary>::@class::X::@getter::t03
           setter: <testLibrary>::@class::X::@setter::t03
-        hasInitializer t11
+        hasImplicitType hasInitializer t11
           reference: <testLibrary>::@class::X::@field::t11
           firstFragment: #F26
           type: int
           getter: <testLibrary>::@class::X::@getter::t11
           setter: <testLibrary>::@class::X::@setter::t11
-        hasInitializer t12
+        hasImplicitType hasInitializer t12
           reference: <testLibrary>::@class::X::@field::t12
           firstFragment: #F27
           type: int
           getter: <testLibrary>::@class::X::@getter::t12
           setter: <testLibrary>::@class::X::@setter::t12
-        hasInitializer t13
+        hasImplicitType hasInitializer t13
           reference: <testLibrary>::@class::X::@field::t13
           firstFragment: #F28
           type: int
           getter: <testLibrary>::@class::X::@getter::t13
           setter: <testLibrary>::@class::X::@setter::t13
-        hasInitializer t21
+        hasImplicitType hasInitializer t21
           reference: <testLibrary>::@class::X::@field::t21
           firstFragment: #F29
           type: int
           getter: <testLibrary>::@class::X::@getter::t21
           setter: <testLibrary>::@class::X::@setter::t21
-        hasInitializer t22
+        hasImplicitType hasInitializer t22
           reference: <testLibrary>::@class::X::@field::t22
           firstFragment: #F30
           type: int
           getter: <testLibrary>::@class::X::@getter::t22
           setter: <testLibrary>::@class::X::@setter::t22
-        hasInitializer t23
+        hasImplicitType hasInitializer t23
           reference: <testLibrary>::@class::X::@field::t23
           firstFragment: #F31
           type: int
@@ -2410,7 +2410,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::V::@formalParameter::value
   topLevelVariables
-    hasInitializer V
+    hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: num
@@ -2468,13 +2468,13 @@
             #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22)
               element: <testLibrary>::@setter::vNotEq::@formalParameter::value
   topLevelVariables
-    hasInitializer vEq
+    hasImplicitType hasInitializer vEq
       reference: <testLibrary>::@topLevelVariable::vEq
       firstFragment: #F1
       type: bool
       getter: <testLibrary>::@getter::vEq
       setter: <testLibrary>::@setter::vEq
-    hasInitializer vNotEq
+    hasImplicitType hasInitializer vNotEq
       reference: <testLibrary>::@topLevelVariable::vNotEq
       firstFragment: #F2
       type: bool
@@ -2546,13 +2546,13 @@
             #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21)
               element: <testLibrary>::@setter::b::@formalParameter::value
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
       getter: <testLibrary>::@getter::a
       setter: <testLibrary>::@setter::a
-    hasInitializer b
+    hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: dynamic
@@ -2614,7 +2614,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::a::@formalParameter::value
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
@@ -2682,19 +2682,19 @@
             #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37)
               element: <testLibrary>::@setter::b1::@formalParameter::value
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: List<num>
       getter: <testLibrary>::@getter::a
       setter: <testLibrary>::@setter::a
-    hasInitializer b0
+    hasImplicitType hasInitializer b0
       reference: <testLibrary>::@topLevelVariable::b0
       firstFragment: #F2
       type: num
       getter: <testLibrary>::@getter::b0
       setter: <testLibrary>::@setter::b0
-    hasInitializer b1
+    hasImplicitType hasInitializer b1
       reference: <testLibrary>::@topLevelVariable::b1
       firstFragment: #F3
       type: num
@@ -2778,7 +2778,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: int
@@ -2879,7 +2879,7 @@
           returnType: void
           variable: <testLibrary>::@class::C::@field::f
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F7
       type: int
@@ -2936,7 +2936,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: int
@@ -2992,7 +2992,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: int
@@ -3066,7 +3066,7 @@
       reference: <testLibrary>::@class::C
       firstFragment: #F1
       fields
-        hasInitializer f
+        hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::C::@field::f
           firstFragment: #F2
           type: int
@@ -3093,7 +3093,7 @@
           returnType: void
           variable: <testLibrary>::@class::C::@field::f
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F7
       type: int
@@ -3150,7 +3150,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21)
               element: <testLibrary>::@setter::x::@formalParameter::value
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F1
       type: int
@@ -3262,7 +3262,7 @@
       reference: <testLibrary>::@class::B
       firstFragment: #F7
       fields
-        static hasInitializer t
+        static hasImplicitType hasInitializer t
           reference: <testLibrary>::@class::B::@field::t
           firstFragment: #F8
           type: int
@@ -3383,7 +3383,7 @@
       type: C
       getter: <testLibrary>::@getter::c
       setter: <testLibrary>::@setter::c
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F8
       type: bool
@@ -3530,7 +3530,7 @@
       type: C
       getter: <testLibrary>::@getter::c
       setter: <testLibrary>::@setter::c
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F10
       type: bool
@@ -3665,7 +3665,7 @@
           reference: <testLibrary>::@class::C::@constructor::new
           firstFragment: #F8
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F9
       type: bool
@@ -3780,13 +3780,13 @@
           firstFragment: #F6
           returnType: int
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F7
       type: int
       getter: <testLibrary>::@getter::x
       setter: <testLibrary>::@setter::x
-    hasInitializer y
+    hasImplicitType hasInitializer y
       reference: <testLibrary>::@topLevelVariable::y
       firstFragment: #F8
       type: int
@@ -3901,37 +3901,37 @@
             #F24 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:282)
               element: <testLibrary>::@setter::v_async_returnFuture::@formalParameter::value
   topLevelVariables
-    hasInitializer vFuture
+    hasImplicitType hasInitializer vFuture
       reference: <testLibrary>::@topLevelVariable::vFuture
       firstFragment: #F1
       type: Future<int>
       getter: <testLibrary>::@getter::vFuture
       setter: <testLibrary>::@setter::vFuture
-    hasInitializer v_noParameters_inferredReturnType
+    hasImplicitType hasInitializer v_noParameters_inferredReturnType
       reference: <testLibrary>::@topLevelVariable::v_noParameters_inferredReturnType
       firstFragment: #F2
       type: int Function()
       getter: <testLibrary>::@getter::v_noParameters_inferredReturnType
       setter: <testLibrary>::@setter::v_noParameters_inferredReturnType
-    hasInitializer v_hasParameter_withType_inferredReturnType
+    hasImplicitType hasInitializer v_hasParameter_withType_inferredReturnType
       reference: <testLibrary>::@topLevelVariable::v_hasParameter_withType_inferredReturnType
       firstFragment: #F3
       type: int Function(String)
       getter: <testLibrary>::@getter::v_hasParameter_withType_inferredReturnType
       setter: <testLibrary>::@setter::v_hasParameter_withType_inferredReturnType
-    hasInitializer v_hasParameter_withType_returnParameter
+    hasImplicitType hasInitializer v_hasParameter_withType_returnParameter
       reference: <testLibrary>::@topLevelVariable::v_hasParameter_withType_returnParameter
       firstFragment: #F4
       type: String Function(String)
       getter: <testLibrary>::@getter::v_hasParameter_withType_returnParameter
       setter: <testLibrary>::@setter::v_hasParameter_withType_returnParameter
-    hasInitializer v_async_returnValue
+    hasImplicitType hasInitializer v_async_returnValue
       reference: <testLibrary>::@topLevelVariable::v_async_returnValue
       firstFragment: #F5
       type: Future<int> Function()
       getter: <testLibrary>::@getter::v_async_returnValue
       setter: <testLibrary>::@setter::v_async_returnValue
-    hasInitializer v_async_returnFuture
+    hasImplicitType hasInitializer v_async_returnFuture
       reference: <testLibrary>::@topLevelVariable::v_async_returnFuture
       firstFragment: #F6
       type: Future<int> Function()
@@ -4050,7 +4050,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::v::@formalParameter::value
   topLevelVariables
-    hasInitializer v
+    hasImplicitType hasInitializer v
       reference: <testLibrary>::@topLevelVariable::v
       firstFragment: #F1
       type: int
@@ -4115,13 +4115,13 @@
             #F10 T (nameOffset:4) (firstTokenOffset:4) (offset:4)
               element: #E0 T
   topLevelVariables
-    hasInitializer vHasTypeArgument
+    hasImplicitType hasInitializer vHasTypeArgument
       reference: <testLibrary>::@topLevelVariable::vHasTypeArgument
       firstFragment: #F1
       type: int
       getter: <testLibrary>::@getter::vHasTypeArgument
       setter: <testLibrary>::@setter::vHasTypeArgument
-    hasInitializer vNoTypeArgument
+    hasImplicitType hasInitializer vNoTypeArgument
       reference: <testLibrary>::@topLevelVariable::vNoTypeArgument
       firstFragment: #F2
       type: dynamic
@@ -4208,13 +4208,13 @@
             #F10 requiredPositional p (nameOffset:13) (firstTokenOffset:9) (offset:13)
               element: <testLibrary>::@function::f::@formalParameter::p
   topLevelVariables
-    hasInitializer vOkArgumentType
+    hasImplicitType hasInitializer vOkArgumentType
       reference: <testLibrary>::@topLevelVariable::vOkArgumentType
       firstFragment: #F1
       type: String
       getter: <testLibrary>::@getter::vOkArgumentType
       setter: <testLibrary>::@setter::vOkArgumentType
-    hasInitializer vWrongArgumentType
+    hasImplicitType hasInitializer vWrongArgumentType
       reference: <testLibrary>::@topLevelVariable::vWrongArgumentType
       firstFragment: #F2
       type: String
@@ -4421,7 +4421,7 @@
       reference: <testLibrary>::@class::A
       firstFragment: #F1
       fields
-        static hasInitializer staticClassVariable
+        static hasImplicitType hasInitializer staticClassVariable
           reference: <testLibrary>::@class::A::@field::staticClassVariable
           firstFragment: #F2
           type: int
@@ -4475,7 +4475,7 @@
               type: int
           returnType: String
   topLevelVariables
-    hasInitializer topLevelVariable
+    hasImplicitType hasInitializer topLevelVariable
       reference: <testLibrary>::@topLevelVariable::topLevelVariable
       firstFragment: #F13
       type: int
@@ -4486,49 +4486,49 @@
       firstFragment: #F14
       type: int
       getter: <testLibrary>::@getter::topLevelGetter
-    hasInitializer r_topLevelFunction
+    hasImplicitType hasInitializer r_topLevelFunction
       reference: <testLibrary>::@topLevelVariable::r_topLevelFunction
       firstFragment: #F15
       type: String Function(int)
       getter: <testLibrary>::@getter::r_topLevelFunction
       setter: <testLibrary>::@setter::r_topLevelFunction
-    hasInitializer r_topLevelVariable
+    hasImplicitType hasInitializer r_topLevelVariable
       reference: <testLibrary>::@topLevelVariable::r_topLevelVariable
       firstFragment: #F16
       type: int
       getter: <testLibrary>::@getter::r_topLevelVariable
       setter: <testLibrary>::@setter::r_topLevelVariable
-    hasInitializer r_topLevelGetter
+    hasImplicitType hasInitializer r_topLevelGetter
       reference: <testLibrary>::@topLevelVariable::r_topLevelGetter
       firstFragment: #F17
       type: int
       getter: <testLibrary>::@getter::r_topLevelGetter
       setter: <testLibrary>::@setter::r_topLevelGetter
-    hasInitializer r_staticClassVariable
+    hasImplicitType hasInitializer r_staticClassVariable
       reference: <testLibrary>::@topLevelVariable::r_staticClassVariable
       firstFragment: #F18
       type: int
       getter: <testLibrary>::@getter::r_staticClassVariable
       setter: <testLibrary>::@setter::r_staticClassVariable
-    hasInitializer r_staticGetter
+    hasImplicitType hasInitializer r_staticGetter
       reference: <testLibrary>::@topLevelVariable::r_staticGetter
       firstFragment: #F19
       type: int
       getter: <testLibrary>::@getter::r_staticGetter
       setter: <testLibrary>::@setter::r_staticGetter
-    hasInitializer r_staticClassMethod
+    hasImplicitType hasInitializer r_staticClassMethod
       reference: <testLibrary>::@topLevelVariable::r_staticClassMethod
       firstFragment: #F20
       type: String Function(int)
       getter: <testLibrary>::@getter::r_staticClassMethod
       setter: <testLibrary>::@setter::r_staticClassMethod
-    hasInitializer instanceOfA
+    hasImplicitType hasInitializer instanceOfA
       reference: <testLibrary>::@topLevelVariable::instanceOfA
       firstFragment: #F21
       type: A
       getter: <testLibrary>::@getter::instanceOfA
       setter: <testLibrary>::@setter::instanceOfA
-    hasInitializer r_instanceClassMethod
+    hasImplicitType hasInitializer r_instanceClassMethod
       reference: <testLibrary>::@topLevelVariable::r_instanceClassMethod
       firstFragment: #F22
       type: String Function(int)
@@ -4749,7 +4749,7 @@
       reference: <testLibrary>::@class::A
       firstFragment: #F1
       fields
-        static hasInitializer a
+        static hasImplicitType hasInitializer a
           reference: <testLibrary>::@class::A::@field::a
           firstFragment: #F2
           type: dynamic
@@ -4779,7 +4779,7 @@
       reference: <testLibrary>::@class::B
       firstFragment: #F7
       fields
-        static hasInitializer b
+        static hasImplicitType hasInitializer b
           reference: <testLibrary>::@class::B::@field::b
           firstFragment: #F8
           type: dynamic
@@ -4806,7 +4806,7 @@
           returnType: void
           variable: <testLibrary>::@class::B::@field::b
   topLevelVariables
-    hasInitializer c
+    hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F13
       type: dynamic
@@ -4890,7 +4890,7 @@
       reference: <testLibrary>::@class::A
       firstFragment: #F1
       fields
-        static hasInitializer a
+        static hasImplicitType hasInitializer a
           reference: <testLibrary>::@class::A::@field::a
           firstFragment: #F2
           type: dynamic
@@ -4917,13 +4917,13 @@
           returnType: void
           variable: <testLibrary>::@class::A::@field::a
   topLevelVariables
-    hasInitializer b
+    hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F7
       type: dynamic
       getter: <testLibrary>::@getter::b
       setter: <testLibrary>::@setter::b
-    hasInitializer c
+    hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F8
       type: dynamic
@@ -4994,22 +4994,22 @@
         #F8 synthetic d (nameOffset:<null>) (firstTokenOffset:<null>) (offset:45)
           element: <testLibrary>::@getter::d
   topLevelVariables
-    final hasInitializer a
+    final hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: dynamic
       getter: <testLibrary>::@getter::a
-    final hasInitializer b
+    final hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: dynamic
       getter: <testLibrary>::@getter::b
-    final hasInitializer c
+    final hasImplicitType hasInitializer c
       reference: <testLibrary>::@topLevelVariable::c
       firstFragment: #F3
       type: dynamic
       getter: <testLibrary>::@getter::c
-    final hasInitializer d
+    final hasImplicitType hasInitializer d
       reference: <testLibrary>::@topLevelVariable::d
       firstFragment: #F4
       type: dynamic
@@ -5097,7 +5097,7 @@
           reference: <testLibrary>::@class::A::@constructor::new
           firstFragment: #F2
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F3
       type: A
@@ -5159,13 +5159,13 @@
         #F9 f (nameOffset:8) (firstTokenOffset:0) (offset:8)
           element: <testLibrary>::@function::f
   topLevelVariables
-    hasInitializer s
+    hasImplicitType hasInitializer s
       reference: <testLibrary>::@topLevelVariable::s
       firstFragment: #F1
       type: String
       getter: <testLibrary>::@getter::s
       setter: <testLibrary>::@setter::s
-    hasInitializer h
+    hasImplicitType hasInitializer h
       reference: <testLibrary>::@topLevelVariable::h
       firstFragment: #F2
       type: int
@@ -5258,13 +5258,13 @@
       type: dynamic
       getter: <testLibrary>::@getter::d
       setter: <testLibrary>::@setter::d
-    hasInitializer s
+    hasImplicitType hasInitializer s
       reference: <testLibrary>::@topLevelVariable::s
       firstFragment: #F2
       type: String
       getter: <testLibrary>::@getter::s
       setter: <testLibrary>::@setter::s
-    hasInitializer h
+    hasImplicitType hasInitializer h
       reference: <testLibrary>::@topLevelVariable::h
       firstFragment: #F3
       type: int
@@ -5350,13 +5350,13 @@
             #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17)
               element: <testLibrary>::@setter::b::@formalParameter::value
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: double
       getter: <testLibrary>::@getter::a
       setter: <testLibrary>::@setter::a
-    hasInitializer b
+    hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: bool
@@ -5476,25 +5476,25 @@
             #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89)
               element: <testLibrary>::@setter::vInt::@formalParameter::value
   topLevelVariables
-    hasInitializer vObject
+    hasImplicitType hasInitializer vObject
       reference: <testLibrary>::@topLevelVariable::vObject
       firstFragment: #F1
       type: List<Object>
       getter: <testLibrary>::@getter::vObject
       setter: <testLibrary>::@setter::vObject
-    hasInitializer vNum
+    hasImplicitType hasInitializer vNum
       reference: <testLibrary>::@topLevelVariable::vNum
       firstFragment: #F2
       type: List<num>
       getter: <testLibrary>::@getter::vNum
       setter: <testLibrary>::@setter::vNum
-    hasInitializer vNumEmpty
+    hasImplicitType hasInitializer vNumEmpty
       reference: <testLibrary>::@topLevelVariable::vNumEmpty
       firstFragment: #F3
       type: List<num>
       getter: <testLibrary>::@getter::vNumEmpty
       setter: <testLibrary>::@setter::vNumEmpty
-    hasInitializer vInt
+    hasImplicitType hasInitializer vInt
       reference: <testLibrary>::@topLevelVariable::vInt
       firstFragment: #F4
       type: List<int>
@@ -5604,19 +5604,19 @@
             #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:47)
               element: <testLibrary>::@setter::vObject::@formalParameter::value
   topLevelVariables
-    hasInitializer vInt
+    hasImplicitType hasInitializer vInt
       reference: <testLibrary>::@topLevelVariable::vInt
       firstFragment: #F1
       type: List<int>
       getter: <testLibrary>::@getter::vInt
       setter: <testLibrary>::@setter::vInt
-    hasInitializer vNum
+    hasImplicitType hasInitializer vNum
       reference: <testLibrary>::@topLevelVariable::vNum
       firstFragment: #F2
       type: List<num>
       getter: <testLibrary>::@getter::vNum
       setter: <testLibrary>::@setter::vNum
-    hasInitializer vObject
+    hasImplicitType hasInitializer vObject
       reference: <testLibrary>::@topLevelVariable::vObject
       firstFragment: #F3
       type: List<Object>
@@ -5744,31 +5744,31 @@
             #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:188)
               element: <testLibrary>::@setter::vIntString::@formalParameter::value
   topLevelVariables
-    hasInitializer vObjectObject
+    hasImplicitType hasInitializer vObjectObject
       reference: <testLibrary>::@topLevelVariable::vObjectObject
       firstFragment: #F1
       type: Map<Object, Object>
       getter: <testLibrary>::@getter::vObjectObject
       setter: <testLibrary>::@setter::vObjectObject
-    hasInitializer vComparableObject
+    hasImplicitType hasInitializer vComparableObject
       reference: <testLibrary>::@topLevelVariable::vComparableObject
       firstFragment: #F2
       type: Map<Comparable<int>, Object>
       getter: <testLibrary>::@getter::vComparableObject
       setter: <testLibrary>::@setter::vComparableObject
-    hasInitializer vNumString
+    hasImplicitType hasInitializer vNumString
       reference: <testLibrary>::@topLevelVariable::vNumString
       firstFragment: #F3
       type: Map<num, String>
       getter: <testLibrary>::@getter::vNumString
       setter: <testLibrary>::@setter::vNumString
-    hasInitializer vNumStringEmpty
+    hasImplicitType hasInitializer vNumStringEmpty
       reference: <testLibrary>::@topLevelVariable::vNumStringEmpty
       firstFragment: #F4
       type: Map<num, String>
       getter: <testLibrary>::@getter::vNumStringEmpty
       setter: <testLibrary>::@setter::vNumStringEmpty
-    hasInitializer vIntString
+    hasImplicitType hasInitializer vIntString
       reference: <testLibrary>::@topLevelVariable::vIntString
       firstFragment: #F5
       type: Map<int, String>
@@ -5892,19 +5892,19 @@
             #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:76)
               element: <testLibrary>::@setter::vIntObject::@formalParameter::value
   topLevelVariables
-    hasInitializer vIntString
+    hasImplicitType hasInitializer vIntString
       reference: <testLibrary>::@topLevelVariable::vIntString
       firstFragment: #F1
       type: Map<int, String>
       getter: <testLibrary>::@getter::vIntString
       setter: <testLibrary>::@setter::vIntString
-    hasInitializer vNumString
+    hasImplicitType hasInitializer vNumString
       reference: <testLibrary>::@topLevelVariable::vNumString
       firstFragment: #F2
       type: Map<num, String>
       getter: <testLibrary>::@getter::vNumString
       setter: <testLibrary>::@setter::vNumString
-    hasInitializer vIntObject
+    hasImplicitType hasInitializer vIntObject
       reference: <testLibrary>::@topLevelVariable::vIntObject
       firstFragment: #F3
       type: Map<int, Object>
@@ -6032,31 +6032,31 @@
             #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:69)
               element: <testLibrary>::@setter::vOr::@formalParameter::value
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: bool
       getter: <testLibrary>::@getter::a
       setter: <testLibrary>::@setter::a
-    hasInitializer b
+    hasImplicitType hasInitializer b
       reference: <testLibrary>::@topLevelVariable::b
       firstFragment: #F2
       type: bool
       getter: <testLibrary>::@getter::b
       setter: <testLibrary>::@setter::b
-    hasInitializer vEq
+    hasImplicitType hasInitializer vEq
       reference: <testLibrary>::@topLevelVariable::vEq
       firstFragment: #F3
       type: bool
       getter: <testLibrary>::@getter::vEq
       setter: <testLibrary>::@setter::vEq
-    hasInitializer vAnd
+    hasImplicitType hasInitializer vAnd
       reference: <testLibrary>::@topLevelVariable::vAnd
       firstFragment: #F4
       type: bool
       getter: <testLibrary>::@getter::vAnd
       setter: <testLibrary>::@setter::vAnd
-    hasInitializer vOr
+    hasImplicitType hasInitializer vOr
       reference: <testLibrary>::@topLevelVariable::vOr
       firstFragment: #F5
       type: bool
@@ -6232,19 +6232,19 @@
               type: int
           returnType: String
   topLevelVariables
-    hasInitializer instanceOfA
+    hasImplicitType hasInitializer instanceOfA
       reference: <testLibrary>::@topLevelVariable::instanceOfA
       firstFragment: #F5
       type: A
       getter: <testLibrary>::@getter::instanceOfA
       setter: <testLibrary>::@setter::instanceOfA
-    hasInitializer v1
+    hasImplicitType hasInitializer v1
       reference: <testLibrary>::@topLevelVariable::v1
       firstFragment: #F6
       type: String
       getter: <testLibrary>::@getter::v1
       setter: <testLibrary>::@setter::v1
-    hasInitializer v2
+    hasImplicitType hasInitializer v2
       reference: <testLibrary>::@topLevelVariable::v2
       firstFragment: #F7
       type: String
@@ -6420,67 +6420,67 @@
             #F44 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:327)
               element: <testLibrary>::@setter::vFloorDivide::@formalParameter::value
   topLevelVariables
-    hasInitializer vModuloIntInt
+    hasImplicitType hasInitializer vModuloIntInt
       reference: <testLibrary>::@topLevelVariable::vModuloIntInt
       firstFragment: #F1
       type: int
       getter: <testLibrary>::@getter::vModuloIntInt
       setter: <testLibrary>::@setter::vModuloIntInt
-    hasInitializer vModuloIntDouble
+    hasImplicitType hasInitializer vModuloIntDouble
       reference: <testLibrary>::@topLevelVariable::vModuloIntDouble
       firstFragment: #F2
       type: double
       getter: <testLibrary>::@getter::vModuloIntDouble
       setter: <testLibrary>::@setter::vModuloIntDouble
-    hasInitializer vMultiplyIntInt
+    hasImplicitType hasInitializer vMultiplyIntInt
       reference: <testLibrary>::@topLevelVariable::vMultiplyIntInt
       firstFragment: #F3
       type: int
       getter: <testLibrary>::@getter::vMultiplyIntInt
       setter: <testLibrary>::@setter::vMultiplyIntInt
-    hasInitializer vMultiplyIntDouble
+    hasImplicitType hasInitializer vMultiplyIntDouble
       reference: <testLibrary>::@topLevelVariable::vMultiplyIntDouble
       firstFragment: #F4
       type: double
       getter: <testLibrary>::@getter::vMultiplyIntDouble
       setter: <testLibrary>::@setter::vMultiplyIntDouble
-    hasInitializer vMultiplyDoubleInt
+    hasImplicitType hasInitializer vMultiplyDoubleInt
       reference: <testLibrary>::@topLevelVariable::vMultiplyDoubleInt
       firstFragment: #F5
       type: double
       getter: <testLibrary>::@getter::vMultiplyDoubleInt
       setter: <testLibrary>::@setter::vMultiplyDoubleInt
-    hasInitializer vMultiplyDoubleDouble
+    hasImplicitType hasInitializer vMultiplyDoubleDouble
       reference: <testLibrary>::@topLevelVariable::vMultiplyDoubleDouble
       firstFragment: #F6
       type: double
       getter: <testLibrary>::@getter::vMultiplyDoubleDouble
       setter: <testLibrary>::@setter::vMultiplyDoubleDouble
-    hasInitializer vDivideIntInt
+    hasImplicitType hasInitializer vDivideIntInt
       reference: <testLibrary>::@topLevelVariable::vDivideIntInt
       firstFragment: #F7
       type: double
       getter: <testLibrary>::@getter::vDivideIntInt
       setter: <testLibrary>::@setter::vDivideIntInt
-    hasInitializer vDivideIntDouble
+    hasImplicitType hasInitializer vDivideIntDouble
       reference: <testLibrary>::@topLevelVariable::vDivideIntDouble
       firstFragment: #F8
       type: double
       getter: <testLibrary>::@getter::vDivideIntDouble
       setter: <testLibrary>::@setter::vDivideIntDouble
-    hasInitializer vDivideDoubleInt
+    hasImplicitType hasInitializer vDivideDoubleInt
       reference: <testLibrary>::@topLevelVariable::vDivideDoubleInt
       firstFragment: #F9
       type: double
       getter: <testLibrary>::@getter::vDivideDoubleInt
       setter: <testLibrary>::@setter::vDivideDoubleInt
-    hasInitializer vDivideDoubleDouble
+    hasImplicitType hasInitializer vDivideDoubleDouble
       reference: <testLibrary>::@topLevelVariable::vDivideDoubleDouble
       firstFragment: #F10
       type: double
       getter: <testLibrary>::@getter::vDivideDoubleDouble
       setter: <testLibrary>::@setter::vDivideDoubleDouble
-    hasInitializer vFloorDivide
+    hasImplicitType hasInitializer vFloorDivide
       reference: <testLibrary>::@topLevelVariable::vFloorDivide
       firstFragment: #F11
       type: int
@@ -6688,19 +6688,19 @@
             #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46)
               element: <testLibrary>::@setter::vNotEq::@formalParameter::value
   topLevelVariables
-    hasInitializer a
+    hasImplicitType hasInitializer a
       reference: <testLibrary>::@topLevelVariable::a
       firstFragment: #F1
       type: int
       getter: <testLibrary>::@getter::a
       setter: <testLibrary>::@setter::a
-    hasInitializer vEq
+    hasImplicitType hasInitializer vEq
       reference: <testLibrary>::@topLevelVariable::vEq
       firstFragment: #F2
       type: bool
       getter: <testLibrary>::@getter::vEq
       setter: <testLibrary>::@setter::vEq
-    hasInitializer vNotEq
+    hasImplicitType hasInitializer vNotEq
       reference: <testLibrary>::@topLevelVariable::vNotEq
       firstFragment: #F3
       type: bool
@@ -6776,7 +6776,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::V::@formalParameter::value
   topLevelVariables
-    hasInitializer V
+    hasImplicitType hasInitializer V
       reference: <testLibrary>::@topLevelVariable::V
       firstFragment: #F1
       type: int
@@ -6874,37 +6874,37 @@
             #F24 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:109)
               element: <testLibrary>::@setter::vDecDouble::@formalParameter::value
   topLevelVariables
-    hasInitializer vInt
+    hasImplicitType hasInitializer vInt
       reference: <testLibrary>::@topLevelVariable::vInt
       firstFragment: #F1
       type: int
       getter: <testLibrary>::@getter::vInt
       setter: <testLibrary>::@setter::vInt
-    hasInitializer vDouble
+    hasImplicitType hasInitializer vDouble
       reference: <testLibrary>::@topLevelVariable::vDouble
       firstFragment: #F2
       type: double
       getter: <testLibrary>::@getter::vDouble
       setter: <testLibrary>::@setter::vDouble
-    hasInitializer vIncInt
+    hasImplicitType hasInitializer vIncInt
       reference: <testLibrary>::@topLevelVariable::vIncInt
       firstFragment: #F3
       type: int
       getter: <testLibrary>::@getter::vIncInt
       setter: <testLibrary>::@setter::vIncInt
-    hasInitializer vDecInt
+    hasImplicitType hasInitializer vDecInt
       reference: <testLibrary>::@topLevelVariable::vDecInt
       firstFragment: #F4
       type: int
       getter: <testLibrary>::@getter::vDecInt
       setter: <testLibrary>::@setter::vDecInt
-    hasInitializer vIncDouble
+    hasImplicitType hasInitializer vIncDouble
       reference: <testLibrary>::@topLevelVariable::vIncDouble
       firstFragment: #F5
       type: double
       getter: <testLibrary>::@getter::vIncDouble
       setter: <testLibrary>::@setter::vIncDouble
-    hasInitializer vDecDouble
+    hasImplicitType hasInitializer vDecDouble
       reference: <testLibrary>::@topLevelVariable::vDecDouble
       firstFragment: #F6
       type: double
@@ -7072,37 +7072,37 @@
             #F24 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:122)
               element: <testLibrary>::@setter::vDecDouble::@formalParameter::value
   topLevelVariables
-    hasInitializer vInt
+    hasImplicitType hasInitializer vInt
       reference: <testLibrary>::@topLevelVariable::vInt
       firstFragment: #F1
       type: List<int>
       getter: <testLibrary>::@getter::vInt
       setter: <testLibrary>::@setter::vInt
-    hasInitializer vDouble
+    hasImplicitType hasInitializer vDouble
       reference: <testLibrary>::@topLevelVariable::vDouble
       firstFragment: #F2
       type: List<double>
       getter: <testLibrary>::@getter::vDouble
       setter: <testLibrary>::@setter::vDouble
-    hasInitializer vIncInt
+    hasImplicitType hasInitializer vIncInt
       reference: <testLibrary>::@topLevelVariable::vIncInt
       firstFragment: #F3
       type: int
       getter: <testLibrary>::@getter::vIncInt
       setter: <testLibrary>::@setter::vIncInt
-    hasInitializer vDecInt
+    hasImplicitType hasInitializer vDecInt
       reference: <testLibrary>::@topLevelVariable::vDecInt
       firstFragment: #F4
       type: int
       getter: <testLibrary>::@getter::vDecInt
       setter: <testLibrary>::@setter::vDecInt
-    hasInitializer vIncDouble
+    hasImplicitType hasInitializer vIncDouble
       reference: <testLibrary>::@topLevelVariable::vIncDouble
       firstFragment: #F5
       type: double
       getter: <testLibrary>::@getter::vIncDouble
       setter: <testLibrary>::@setter::vIncDouble
-    hasInitializer vDecDouble
+    hasImplicitType hasInitializer vDecDouble
       reference: <testLibrary>::@topLevelVariable::vDecDouble
       firstFragment: #F6
       type: double
@@ -7270,37 +7270,37 @@
             #F24 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:109)
               element: <testLibrary>::@setter::vDecInt::@def::1::@formalParameter::value
   topLevelVariables
-    hasInitializer vInt
+    hasImplicitType hasInitializer vInt
       reference: <testLibrary>::@topLevelVariable::vInt
       firstFragment: #F1
       type: int
       getter: <testLibrary>::@getter::vInt
       setter: <testLibrary>::@setter::vInt
-    hasInitializer vDouble
+    hasImplicitType hasInitializer vDouble
       reference: <testLibrary>::@topLevelVariable::vDouble
       firstFragment: #F2
       type: double
       getter: <testLibrary>::@getter::vDouble
       setter: <testLibrary>::@setter::vDouble
-    hasInitializer vIncInt
+    hasImplicitType hasInitializer vIncInt
       reference: <testLibrary>::@topLevelVariable::vIncInt
       firstFragment: #F3
       type: int
       getter: <testLibrary>::@getter::vIncInt
       setter: <testLibrary>::@setter::vIncInt
-    hasInitializer vDecInt
+    hasImplicitType hasInitializer vDecInt
       reference: <testLibrary>::@topLevelVariable::vDecInt::@def::0
       firstFragment: #F4
       type: int
       getter: <testLibrary>::@getter::vDecInt::@def::0
       setter: <testLibrary>::@setter::vDecInt::@def::0
-    hasInitializer vIncDouble
+    hasImplicitType hasInitializer vIncDouble
       reference: <testLibrary>::@topLevelVariable::vIncDouble
       firstFragment: #F5
       type: double
       getter: <testLibrary>::@getter::vIncDouble
       setter: <testLibrary>::@setter::vIncDouble
-    hasInitializer vDecInt
+    hasImplicitType hasInitializer vDecInt
       reference: <testLibrary>::@topLevelVariable::vDecInt::@def::1
       firstFragment: #F6
       type: double
@@ -7486,37 +7486,37 @@
             #F24 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:122)
               element: <testLibrary>::@setter::vDecInt::@def::1::@formalParameter::value
   topLevelVariables
-    hasInitializer vInt
+    hasImplicitType hasInitializer vInt
       reference: <testLibrary>::@topLevelVariable::vInt
       firstFragment: #F1
       type: List<int>
       getter: <testLibrary>::@getter::vInt
       setter: <testLibrary>::@setter::vInt
-    hasInitializer vDouble
+    hasImplicitType hasInitializer vDouble
       reference: <testLibrary>::@topLevelVariable::vDouble
       firstFragment: #F2
       type: List<double>
       getter: <testLibrary>::@getter::vDouble
       setter: <testLibrary>::@setter::vDouble
-    hasInitializer vIncInt
+    hasImplicitType hasInitializer vIncInt
       reference: <testLibrary>::@topLevelVariable::vIncInt
       firstFragment: #F3
       type: int
       getter: <testLibrary>::@getter::vIncInt
       setter: <testLibrary>::@setter::vIncInt
-    hasInitializer vDecInt
+    hasImplicitType hasInitializer vDecInt
       reference: <testLibrary>::@topLevelVariable::vDecInt::@def::0
       firstFragment: #F4
       type: int
       getter: <testLibrary>::@getter::vDecInt::@def::0
       setter: <testLibrary>::@setter::vDecInt::@def::0
-    hasInitializer vIncDouble
+    hasImplicitType hasInitializer vIncDouble
       reference: <testLibrary>::@topLevelVariable::vIncDouble
       firstFragment: #F5
       type: double
       getter: <testLibrary>::@getter::vIncDouble
       setter: <testLibrary>::@setter::vIncDouble
-    hasInitializer vDecInt
+    hasImplicitType hasInitializer vDecInt
       reference: <testLibrary>::@topLevelVariable::vDecInt::@def::1
       firstFragment: #F6
       type: double
@@ -7634,7 +7634,7 @@
             #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4)
               element: <testLibrary>::@setter::vNot::@formalParameter::value
   topLevelVariables
-    hasInitializer vNot
+    hasImplicitType hasInitializer vNot
       reference: <testLibrary>::@topLevelVariable::vNot
       firstFragment: #F1
       type: bool
@@ -7702,19 +7702,19 @@
             #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:51)
               element: <testLibrary>::@setter::vComplement::@formalParameter::value
   topLevelVariables
-    hasInitializer vNegateInt
+    hasImplicitType hasInitializer vNegateInt
       reference: <testLibrary>::@topLevelVariable::vNegateInt
       firstFragment: #F1
       type: int
       getter: <testLibrary>::@getter::vNegateInt
       setter: <testLibrary>::@setter::vNegateInt
-    hasInitializer vNegateDouble
+    hasImplicitType hasInitializer vNegateDouble
       reference: <testLibrary>::@topLevelVariable::vNegateDouble
       firstFragment: #F2
       type: double
       getter: <testLibrary>::@getter::vNegateDouble
       setter: <testLibrary>::@setter::vNegateDouble
-    hasInitializer vComplement
+    hasImplicitType hasInitializer vComplement
       reference: <testLibrary>::@topLevelVariable::vComplement
       firstFragment: #F3
       type: int
@@ -7888,7 +7888,7 @@
           returnType: void
           variable: <testLibrary>::@class::D::@field::i
   topLevelVariables
-    final hasInitializer x
+    final hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F13
       type: int
@@ -8012,7 +8012,7 @@
           returnType: void
           variable: <testLibrary>::@class::D::@field::i
   topLevelVariables
-    hasInitializer x
+    hasImplicitType hasInitializer x
       reference: <testLibrary>::@topLevelVariable::x
       firstFragment: #F11
       type: int
@@ -8090,25 +8090,25 @@
             #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:72)
               element: <testLibrary>::@setter::vGreaterOrEqual::@formalParameter::value
   topLevelVariables
-    hasInitializer vLess
+    hasImplicitType hasInitializer vLess
       reference: <testLibrary>::@topLevelVariable::vLess
       firstFragment: #F1
       type: bool
       getter: <testLibrary>::@getter::vLess
       setter: <testLibrary>::@setter::vLess
-    hasInitializer vLessOrEqual
+    hasImplicitType hasInitializer vLessOrEqual
       reference: <testLibrary>::@topLevelVariable::vLessOrEqual
       firstFragment: #F2
       type: bool
       getter: <testLibrary>::@getter::vLessOrEqual
       setter: <testLibrary>::@setter::vLessOrEqual
-    hasInitializer vGreater
+    hasImplicitType hasInitializer vGreater
       reference: <testLibrary>::@topLevelVariable::vGreater
       firstFragment: #F3
       type: bool
       getter: <testLibrary>::@getter::vGreater
       setter: <testLibrary>::@setter::vGreater
-    hasInitializer vGreaterOrEqual
+    hasImplicitType hasInitializer vGreaterOrEqual
       reference: <testLibrary>::@topLevelVariable::vGreaterOrEqual
       firstFragment: #F4
       type: bool
@@ -8337,7 +8337,7 @@
       reference: <testLibrary>::@class::A
       firstFragment: #F1
       fields
-        hasInitializer f
+        hasImplicitType hasInitializer f
           reference: <testLibrary>::@class::A::@field::f
           firstFragment: #F2
           type: int
@@ -8536,7 +8536,7 @@
       interfaces
         A
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::B::@field::x
           firstFragment: #F16
           type: int
@@ -8678,7 +8678,7 @@
       interfaces
         A
       fields
-        hasInitializer x
+        hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::B::@field::x
           firstFragment: #F8
           type: dynamic
@@ -9009,7 +9009,7 @@
       interfaces
         A<T>
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::B::@field::x
           firstFragment: #F18
           hasEnclosingTypeParameterReference: true
@@ -9126,7 +9126,7 @@
       reference: <testLibrary>::@class::A
       firstFragment: #F1
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::A::@field::x
           firstFragment: #F2
           type: dynamic
@@ -9158,7 +9158,7 @@
       interfaces
         A
       fields
-        hasInitializer x
+        hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::B::@field::x
           firstFragment: #F8
           type: dynamic
@@ -9276,7 +9276,7 @@
       interfaces
         A
       fields
-        hasInitializer x
+        hasImplicitType hasInitializer x
           reference: <testLibrary>::@class::B::@field::x
           firstFragment: #F8
           type: num
@@ -9420,7 +9420,7 @@
       interfaces
         A
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::B::@field::x
           firstFragment: #F10
           type: int
@@ -9606,7 +9606,7 @@
       interfaces
         A<T>
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::B::@field::x
           firstFragment: #F12
           hasEnclosingTypeParameterReference: true
@@ -10404,13 +10404,13 @@
         A
         B
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F16
           type: dynamic
           getter: <testLibrary>::@class::C::@getter::x
           setter: <testLibrary>::@class::C::@setter::x
-        final y
+        final hasImplicitType y
           reference: <testLibrary>::@class::C::@field::y
           firstFragment: #F17
           type: int
@@ -10817,7 +10817,7 @@
         A
         B
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::C::@field::x
           firstFragment: #F11
           type: int
@@ -11241,7 +11241,7 @@
       interfaces
         A
       fields
-        x
+        hasImplicitType x
           reference: <testLibrary>::@class::B::@field::x
           firstFragment: #F13
           type: int
@@ -11999,19 +11999,19 @@
       reference: <testLibrary>::@class::A
       firstFragment: #F1
       fields
-        hasInitializer t1
+        hasImplicitType hasInitializer t1
           reference: <testLibrary>::@class::A::@field::t1
           firstFragment: #F2
           type: int
           getter: <testLibrary>::@class::A::@getter::t1
           setter: <testLibrary>::@class::A::@setter::t1
-        hasInitializer t2
+        hasImplicitType hasInitializer t2
           reference: <testLibrary>::@class::A::@field::t2
           firstFragment: #F3
           type: double
           getter: <testLibrary>::@class::A::@getter::t2
           setter: <testLibrary>::@class::A::@setter::t2
-        hasInitializer t3
+        hasImplicitType hasInitializer t3
           reference: <testLibrary>::@class::A::@field::t3
           firstFragment: #F4
           type: dynamic
diff --git a/runtime/platform/atomic.h b/runtime/platform/atomic.h
index cbba54e..8b6180c 100644
--- a/runtime/platform/atomic.h
+++ b/runtime/platform/atomic.h
@@ -153,6 +153,28 @@
       std::memory_order_relaxed);
 }
 
+inline void StoreStoreFence() {
+#if defined(HOST_ARCH_ARM) && defined(_MSC_VER)
+  __dmb(_ARM_BARRIER_ISHST);
+#elif defined(HOST_ARCH_ARM64) && defined(_MSC_VER)
+  __dmb(_ARM64_BARRIER_ISHST);
+#elif defined(HOST_ARCH_ARM64) && defined(__GNUC__)
+  __asm__ __volatile__("dmb ishst" : : : "memory");
+#elif defined(HOST_ARCH_ARM) && defined(__GNUC__)
+  __asm__ __volatile__("dmb ishst" : : : "memory");
+#elif defined(HOST_ARCH_RISCV32) && defined(__GNUC__)
+  __asm__ __volatile__("fence w,w" : : : "memory");
+#elif defined(HOST_ARCH_RISCV64) && defined(__GNUC__)
+  __asm__ __volatile__("fence w,w" : : : "memory");
+#else
+  // GCC warns that TSAN doesn't understand thread fences.
+#if defined(__GNUC__) && !defined(__clang__)
+#pragma GCC diagnostic ignored "-Wtsan"
+#endif
+  std::atomic_thread_fence(std::memory_order_release);
+#endif
+}
+
 }  // namespace dart
 
 #endif  // RUNTIME_PLATFORM_ATOMIC_H_
diff --git a/runtime/vm/compiler/assembler/assembler_arm.cc b/runtime/vm/compiler/assembler/assembler_arm.cc
index 0f815dc..cce91ac 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm.cc
@@ -527,11 +527,6 @@
   Emit(encoding);
 }
 
-void Assembler::dmb() {
-  // Emit a `dmb ish` instruction.
-  Emit(kDataMemoryBarrier);
-}
-
 static int32_t BitFieldExtractEncoding(bool sign_extend,
                                        Register rd,
                                        Register rn,
diff --git a/runtime/vm/compiler/assembler/assembler_arm.h b/runtime/vm/compiler/assembler/assembler_arm.h
index b526c7d..7d2bcf4 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.h
+++ b/runtime/vm/compiler/assembler/assembler_arm.h
@@ -438,12 +438,12 @@
                    const Address& address,
                    OperandSize size = kFourBytes) override {
     Load(dst, address, size);
-    dmb();
+    dmb_ish();
   }
   void StoreRelease(Register src,
                     const Address& address,
                     OperandSize size = kFourBytes) override {
-    dmb();
+    dmb_ish();
     Store(src, address, size);
   }
 
@@ -469,6 +469,8 @@
   // Debugging and bringup support.
   void Breakpoint() override { bkpt(0); }
 
+  void StoreStoreFence() override { dmb_ishst(); }
+
   // Data-processing instructions.
   void and_(Register rd, Register rn, Operand o, Condition cond = AL);
   void ands(Register rd, Register rn, Operand o, Condition cond = AL);
@@ -601,7 +603,8 @@
   void ldrex(Register rd, Register rn, Condition cond = AL);
   void strex(Register rd, Register rt, Register rn, Condition cond = AL);
 
-  void dmb();
+  void dmb_ish() { Emit(kDMB_ISH); }
+  void dmb_ishst() { Emit(kDMB_ISHST); }
 
   // Media instructions.
   void sbfx(Register rd,
@@ -1041,13 +1044,13 @@
   void InitializeHeader(Register tags, Register object) {
     str(tags, FieldAddress(object, target::Object::tags_offset()));
 #if defined(TARGET_HAS_FAST_WRITE_WRITE_FENCE)
-    dmb();
+    StoreStoreFence();
 #endif
   }
   void InitializeHeaderUntagged(Register tags, Register object) {
     str(tags, Address(object, target::Object::tags_offset()));
 #if defined(TARGET_HAS_FAST_WRITE_WRITE_FENCE)
-    dmb();
+    StoreStoreFence();
 #endif
   }
 
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.h b/runtime/vm/compiler/assembler/assembler_arm64.h
index a12aa1d..aca4775 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.h
+++ b/runtime/vm/compiler/assembler/assembler_arm64.h
@@ -564,6 +564,8 @@
   // Debugging and bringup support.
   void Breakpoint() override { brk(0); }
 
+  void StoreStoreFence() override { dmb_ishst(); }
+
   void SetPrologueOffset() {
     if (prologue_offset_ == -1) {
       prologue_offset_ = CodeSize();
@@ -1242,7 +1244,8 @@
   // Breakpoint.
   void brk(uint16_t imm) { EmitExceptionGenOp(BRK, imm); }
 
-  void dmb() { Emit(kDataMemoryBarrier); }
+  void dmb_ish() { Emit(kDMB_ISH); }
+  void dmb_ishst() { Emit(kDMB_ISHST); }
 
   // Double floating point.
   bool fmovdi(VRegister vd, double immd) {
@@ -1963,13 +1966,13 @@
   void InitializeHeader(Register header, Register object) {
     str(header, FieldAddress(object, target::Object::tags_offset()));
 #if defined(TARGET_HAS_FAST_WRITE_WRITE_FENCE)
-    dmb();
+    StoreStoreFence();
 #endif
   }
   void InitializeHeaderUntagged(Register header, Register object) {
     str(header, Address(object, target::Object::tags_offset()));
 #if defined(TARGET_HAS_FAST_WRITE_WRITE_FENCE)
-    dmb();
+    StoreStoreFence();
 #endif
   }
 
diff --git a/runtime/vm/compiler/assembler/assembler_base.h b/runtime/vm/compiler/assembler/assembler_base.h
index ce77b10..5962840 100644
--- a/runtime/vm/compiler/assembler/assembler_base.h
+++ b/runtime/vm/compiler/assembler/assembler_base.h
@@ -630,6 +630,8 @@
 
   virtual void Breakpoint() = 0;
 
+  virtual void StoreStoreFence() = 0;
+
   virtual void SmiTag(Register r) = 0;
 
   virtual void Bind(Label* label) = 0;
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.h b/runtime/vm/compiler/assembler/assembler_ia32.h
index 177f5e0..823bb16 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.h
+++ b/runtime/vm/compiler/assembler/assembler_ia32.h
@@ -1199,6 +1199,8 @@
   // Debugging and bringup support.
   void Breakpoint() override { int3(); }
 
+  void StoreStoreFence() override {}
+
   // Check if the given value is an integer value that can be directly
   // embedded into the code without additional XORing with jit_cookie.
   // We consider 16-bit integers, powers of two and corresponding masks
diff --git a/runtime/vm/compiler/assembler/assembler_riscv.h b/runtime/vm/compiler/assembler/assembler_riscv.h
index 144a949..b5f361b 100644
--- a/runtime/vm/compiler/assembler/assembler_riscv.h
+++ b/runtime/vm/compiler/assembler/assembler_riscv.h
@@ -1027,6 +1027,8 @@
   // Debugging and bringup support.
   void Breakpoint() override { trap(); }
 
+  void StoreStoreFence() override { fence(kWrite, kWrite); }
+
   void SetPrologueOffset() {
     if (prologue_offset_ == -1) {
       prologue_offset_ = CodeSize();
diff --git a/runtime/vm/compiler/assembler/assembler_x64.h b/runtime/vm/compiler/assembler/assembler_x64.h
index cdf1202..be1c9ac 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.h
+++ b/runtime/vm/compiler/assembler/assembler_x64.h
@@ -1345,6 +1345,8 @@
   // Debugging and bringup support.
   void Breakpoint() override { int3(); }
 
+  void StoreStoreFence() override {}
+
   static bool AddressCanHoldConstantIndex(const Object& constant,
                                           bool is_external,
                                           intptr_t cid,
diff --git a/runtime/vm/compiler/assembler/disassembler_arm.cc b/runtime/vm/compiler/assembler/disassembler_arm.cc
index 1bdabf7..57f3979 100644
--- a/runtime/vm/compiler/assembler/disassembler_arm.cc
+++ b/runtime/vm/compiler/assembler/disassembler_arm.cc
@@ -1444,9 +1444,10 @@
   if (instr->ConditionField() == kSpecialCondition) {
     if (instr->InstructionBits() == static_cast<int32_t>(0xf57ff01f)) {
       Format(instr, "clrex");
-    } else if (instr->InstructionBits() ==
-               static_cast<int32_t>(kDataMemoryBarrier)) {
+    } else if (instr->InstructionBits() == static_cast<int32_t>(kDMB_ISH)) {
       Format(instr, "dmb ish");
+    } else if (instr->InstructionBits() == static_cast<int32_t>(kDMB_ISHST)) {
+      Format(instr, "dmb ishst");
     } else {
       if (instr->IsSIMDDataProcessing()) {
         DecodeSIMDDataProcessing(instr);
diff --git a/runtime/vm/compiler/assembler/disassembler_arm64.cc b/runtime/vm/compiler/assembler/disassembler_arm64.cc
index 6d6bcfa..5b693b7 100644
--- a/runtime/vm/compiler/assembler/disassembler_arm64.cc
+++ b/runtime/vm/compiler/assembler/disassembler_arm64.cc
@@ -994,10 +994,14 @@
     return;
   }
 
-  if (instr->InstructionBits() == kDataMemoryBarrier) {
+  if (instr->InstructionBits() == kDMB_ISH) {
     Format(instr, "dmb ish");
     return;
   }
+  if (instr->InstructionBits() == kDMB_ISHST) {
+    Format(instr, "dmb ishst");
+    return;
+  }
 
   if ((instr->Bits(0, 8) == 0x1f) && (instr->Bits(12, 4) == 2) &&
       (instr->Bits(16, 3) == 3) && (instr->Bits(19, 2) == 0) &&
diff --git a/runtime/vm/constants_arm.h b/runtime/vm/constants_arm.h
index 19f2ceb..5267665d 100644
--- a/runtime/vm/constants_arm.h
+++ b/runtime/vm/constants_arm.h
@@ -1318,8 +1318,9 @@
 float ReciprocalSqrtEstimate(float op);
 float ReciprocalSqrtStep(float op1, float op2);
 
-constexpr uword kBreakInstructionFiller = 0xE1200070;   // bkpt #0
-constexpr uword kDataMemoryBarrier = 0xf57ff050 | 0xb;  // dmb ish
+constexpr uword kBreakInstructionFiller = 0xE1200070;  // bkpt #0
+constexpr uword kDMB_ISH = 0xf57ff05b;                 // dmb ish
+constexpr uword kDMB_ISHST = 0xf57ff05a;               // dmb ishst
 
 struct LinkRegister {
   const int32_t code = LR;
diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h
index 3f980ed..9c5b730 100644
--- a/runtime/vm/constants_arm64.h
+++ b/runtime/vm/constants_arm64.h
@@ -1633,7 +1633,8 @@
 };
 
 const uint64_t kBreakInstructionFiller = 0xD4200000D4200000L;  // brk #0; brk #0
-constexpr int32_t kDataMemoryBarrier = 0xD5033BBF;             // dmb ish
+constexpr int32_t kDMB_ISH = 0xD5033BBF;                       // dmb ish
+constexpr int32_t kDMB_ISHST = 0xD5033ABF;                     // dmb ishst
 
 struct LinkRegister {};
 
diff --git a/runtime/vm/heap/heap_test.cc b/runtime/vm/heap/heap_test.cc
index 1d1c3c7..f7b5c1d 100644
--- a/runtime/vm/heap/heap_test.cc
+++ b/runtime/vm/heap/heap_test.cc
@@ -1555,7 +1555,7 @@
         for (size_t i = 0; i < kExistingObjectSlotCount; i++) {
           NewObject* new_object = &new_page->objects[i];
           new_object->header.store(2u, std::memory_order_relaxed);
-          std::atomic_thread_fence(std::memory_order_release);
+          StoreStoreFence();
           for (size_t j = 0; j < kNewObjectSlotCount; j++) {
             new_object->slots[j].store(existing_object,
                                        std::memory_order_relaxed);
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 868014c..b853c91 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -2846,11 +2846,7 @@
 
   reinterpret_cast<UntaggedObject*>(address)->tags_ = tags;
 #if defined(HOST_HAS_FAST_WRITE_WRITE_FENCE)
-  // GCC warns that TSAN doesn't understand thread fences.
-#if defined(__GNUC__) && !defined(__clang__)
-#pragma GCC diagnostic ignored "-Wtsan"
-#endif
-  std::atomic_thread_fence(std::memory_order_release);
+  StoreStoreFence();
 #endif
 }
 
diff --git a/runtime/vm/simulator_arm.cc b/runtime/vm/simulator_arm.cc
index b01fe1a..85b6aef 100644
--- a/runtime/vm/simulator_arm.cc
+++ b/runtime/vm/simulator_arm.cc
@@ -3413,11 +3413,14 @@
     if (instr->InstructionBits() == static_cast<int32_t>(0xf57ff01f)) {
       // Format(instr, "clrex");
       ClearExclusive();
-    } else if (instr->InstructionBits() ==
-               static_cast<int32_t>(kDataMemoryBarrier)) {
+    } else if (instr->InstructionBits() == static_cast<int32_t>(kDMB_ISH)) {
       // Format(instr, "dmb ish");
       memory_.FlushAll();
       std::atomic_thread_fence(std::memory_order_seq_cst);
+    } else if (instr->InstructionBits() == static_cast<int32_t>(kDMB_ISHST)) {
+      // Format(instr, "dmb ishst");
+      memory_.FlushAll();
+      StoreStoreFence();
     } else {
       if (instr->IsSIMDDataProcessing()) {
         DecodeSIMDDataProcessing(instr);
diff --git a/runtime/vm/simulator_arm64.cc b/runtime/vm/simulator_arm64.cc
index a8cdb70..c151428 100644
--- a/runtime/vm/simulator_arm64.cc
+++ b/runtime/vm/simulator_arm64.cc
@@ -1982,12 +1982,18 @@
     return;
   }
 
-  if (instr->InstructionBits() == kDataMemoryBarrier) {
+  if (instr->InstructionBits() == kDMB_ISH) {
     // Format(instr, "dmb ish");
     memory_.FlushAll();
     std::atomic_thread_fence(std::memory_order_seq_cst);
     return;
   }
+  if (instr->InstructionBits() == kDMB_ISHST) {
+    // Format(instr, "dmb ishst");
+    memory_.FlushAll();
+    StoreStoreFence();
+    return;
+  }
 
   if ((instr->Bits(0, 8) == 0x1f) && (instr->Bits(12, 4) == 2) &&
       (instr->Bits(16, 3) == 3) && (instr->Bits(19, 2) == 0) &&
diff --git a/tools/VERSION b/tools/VERSION
index ddd7a24..67107c5 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 3
 MINOR 11
 PATCH 0
-PRERELEASE 101
+PRERELEASE 102
 PRERELEASE_PATCH 0