Elements. Remove metadata3, store MetadataImpl directly.
This CL continues https://dart-review.googlesource.com/c/sdk/+/430261
Change-Id: I4f717dc25f84571e6f86a470e6ddfcf452928682
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/432161
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 3fb9960..4491cfb 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -110,7 +110,7 @@
// TODO(scheglov): Clean up the list of implicitly analyzed files.
class AnalysisDriver {
/// The version of data format, should be incremented on every format change.
- static const int DATA_VERSION = 463;
+ static const int DATA_VERSION = 464;
/// The number of exception contexts allowed to write. Once this field is
/// zero, we stop writing any new exception contexts in this process.
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 48524dd..044807ec 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -65,6 +65,11 @@
MetadataImpl get metadata;
}
+abstract class AnnotatableFragmentImpl implements FragmentImpl, Annotatable {
+ @override
+ abstract MetadataImpl metadata;
+}
+
/// Shared implementation for an augmentable [Fragment].
mixin AugmentableFragment on FragmentImpl {
bool get isAugmentation {
@@ -1517,6 +1522,9 @@
/// The unique instance of this class.
static final DynamicFragmentImpl instance = DynamicFragmentImpl._();
+ @override
+ final MetadataImpl metadata = MetadataImpl(const []);
+
/// Initialize a newly created instance of this class. Instances of this class
/// should <b>not</b> be created except as part of creating the type
/// associated with this element. The single instance of this class should be
@@ -1544,9 +1552,6 @@
@override
Null get libraryFragment => null;
- @override
- MetadataImpl get metadata => MetadataImpl(metadata3);
-
@Deprecated('Use metadata instead')
@override
MetadataImpl get metadata2 => metadata;
@@ -2523,9 +2528,9 @@
bool get isSynchronous => !isAsynchronous;
@override
- List<ElementAnnotationImpl> get metadata3 {
+ MetadataImpl get metadata {
linkedData?.read(this);
- return super.metadata3;
+ return super.metadata;
}
@Deprecated('Use name2 instead')
@@ -2695,9 +2700,9 @@
ElementKind get kind => ElementKind.EXTENSION;
@override
- List<ElementAnnotationImpl> get metadata3 {
+ MetadataImpl get metadata {
linkedData?.read(this);
- return super.metadata3;
+ return super.metadata;
}
@override
@@ -3150,9 +3155,9 @@
LibraryElementImpl get library2 => library;
@override
- List<ElementAnnotationImpl> get metadata3 {
+ MetadataImpl get metadata {
linkedData?.read(this);
- return super.metadata3;
+ return super.metadata;
}
@override
@@ -3375,6 +3380,9 @@
@override
int? nameOffset2;
+ @override
+ MetadataImpl metadata = MetadataImpl(const []);
+
/// A list containing all of the parameters defined by this parameter element.
/// There will only be parameters if this parameter is a function typed
/// parameter.
@@ -3508,9 +3516,6 @@
return enclosingFragment?.libraryFragment;
}
- @override
- MetadataImpl get metadata => MetadataImpl(metadata3);
-
@Deprecated('Use metadata instead')
@override
MetadataImpl get metadata2 => metadata;
@@ -3584,7 +3589,12 @@
MetadataImpl get metadata {
var annotations = <ElementAnnotationImpl>[];
for (var fragment in _fragments) {
- annotations.addAll((fragment as FragmentImpl).metadata3);
+ switch (fragment) {
+ case AnnotatableFragmentImpl fragment:
+ annotations.addAll(fragment.metadata.annotations);
+ default:
+ throw StateError('Must have annotatable fragments');
+ }
}
return MetadataImpl(annotations);
}
@@ -3764,9 +3774,6 @@
/// The modifiers associated with this element.
EnumSet<Modifier> _modifiers = EnumSet.empty();
- /// A list containing all of the metadata associated with this element.
- List<ElementAnnotationImpl> _metadata = const [];
-
/// The documentation comment for this element.
String? _docComment;
@@ -3860,15 +3867,6 @@
@override
Source? get librarySource => library?.source;
- @override
- List<ElementAnnotationImpl> get metadata3 {
- return _metadata;
- }
-
- set metadata3(List<ElementAnnotationImpl> metadata) {
- _metadata = metadata;
- }
-
@Deprecated('Use name2 instead')
@override
String? get name => _name;
@@ -4035,13 +4033,6 @@
/// library's defining compilation unit; otherwise return `null`.
Source? get librarySource;
- /// All of the metadata associated with this element.
- ///
- /// The array will be empty if the element does not have any metadata or if
- /// the library containing this element has not yet been resolved.
- // TODO(scheglov): replace with `metadata` in [Annotatable] fragments.
- List<ElementAnnotation> get metadata3;
-
/// The name of this element, or `null` if this element does not have a name.
@Deprecated('Use name2 instead')
String? get name;
@@ -4989,9 +4980,9 @@
}
@override
- List<ElementAnnotationImpl> get metadata3 {
+ MetadataImpl get metadata {
linkedData?.read(this);
- return super.metadata3;
+ return super.metadata;
}
@override
@@ -5784,6 +5775,8 @@
@override
Reference? reference;
+ MetadataImpl _metadata = MetadataImpl(const []);
+
@override
String? documentationComment;
@@ -5798,8 +5791,6 @@
bool hasTypeProviderSystemSet = false;
- List<ElementAnnotationImpl> _annotations = [];
-
@override
late TypeProviderImpl typeProvider;
@@ -5891,15 +5882,6 @@
this.featureSet,
);
- List<ElementAnnotationImpl> get annotations {
- linkedData?.read(this);
- return _annotations;
- }
-
- set annotations(List<ElementAnnotationImpl> value) {
- _annotations = value;
- }
-
@override
LibraryElementImpl get baseElement => this;
@@ -6061,7 +6043,12 @@
@override
MetadataImpl get metadata {
- return MetadataImpl(annotations);
+ linkedData?.read(this);
+ return _metadata;
+ }
+
+ set metadata(MetadataImpl value) {
+ _metadata = value;
}
@Deprecated('Use metadata instead')
@@ -6313,6 +6300,10 @@
@override
final LibraryElementImpl library;
+ @override
+ // TODO(scheglov): Why is it even annotatable?
+ final MetadataImpl metadata = MetadataImpl(const []);
+
/// The libraries exported by this unit.
List<LibraryExportImpl> _libraryExports = _Sentinel.libraryExport;
@@ -6564,19 +6555,10 @@
@override
Source get librarySource => library.source;
- @override
- MetadataImpl get metadata => MetadataImpl(metadata3);
-
@Deprecated('Use metadata instead')
@override
MetadataImpl get metadata2 => metadata;
- @override
- List<ElementAnnotationImpl> get metadata3 {
- linkedData?.read(this);
- return super.metadata3;
- }
-
List<MixinFragmentImpl> get mixins {
return _mixins;
}
@@ -7030,7 +7012,7 @@
}
@override
- MetadataImpl get metadata => MetadataImpl(_wrappedElement.metadata3);
+ MetadataImpl get metadata => _wrappedElement.metadata;
@Deprecated('Use metadata instead')
@override
@@ -7070,6 +7052,9 @@
String? name2;
@override
+ MetadataImpl metadata = MetadataImpl(const []);
+
+ @override
late bool hasInitializer;
/// Initialize a newly created method element to have the given [name] and
@@ -7108,6 +7093,10 @@
@override
LibraryFragmentImpl get libraryFragment => enclosingUnit;
+ @Deprecated('Use metadata instead')
+ @override
+ MetadataImpl get metadata2 => metadata;
+
@override
// TODO(scheglov): make it a nullable field
int? get nameOffset2 => nameOffset;
@@ -8186,6 +8175,9 @@
/// The unique instance of this class.
static final instance = NeverFragmentImpl._();
+ @override
+ final MetadataImpl metadata = MetadataImpl(const []);
+
/// Initialize a newly created instance of this class. Instances of this class
/// should <b>not</b> be created except as part of creating the type
/// associated with this element. The single instance of this class should be
@@ -8212,9 +8204,6 @@
@override
Null get libraryFragment => null;
- @override
- MetadataImpl get metadata => MetadataImpl(metadata3);
-
@Deprecated('Use metadata instead')
@override
MetadataImpl get metadata2 => metadata;
@@ -8416,6 +8405,9 @@
/// Whether the parameter is both a required and positional parameter.
bool get isRequiredPositional => parameterKind.isRequiredPositional;
+ @override
+ MetadataImpl get metadata;
+
ParameterKind get parameterKind;
/// The parameters defined by this parameter.
@@ -8989,9 +8981,9 @@
}
@override
- List<ElementAnnotationImpl> get metadata3 {
+ MetadataImpl get metadata {
linkedData?.read(this);
- return super.metadata3;
+ return super.metadata;
}
@Deprecated('Use name2 instead')
@@ -9050,6 +9042,9 @@
int? nameOffset2;
@override
+ MetadataImpl metadata = MetadataImpl(const []);
+
+ @override
PropertyInducingElementImpl? previousFragment;
@override
@@ -9129,9 +9124,6 @@
return enclosingFragment.libraryFragment!;
}
- @override
- MetadataImpl get metadata => MetadataImpl(metadata3);
-
@Deprecated('Use metadata instead')
@override
MetadataImpl get metadata2 => metadata;
@@ -9793,9 +9785,9 @@
LibraryElementImpl get library2 => library;
@override
- List<ElementAnnotationImpl> get metadata3 {
+ MetadataImpl get metadata {
linkedData?.read(this);
- return super.metadata3;
+ return super.metadata;
}
@override
@@ -10121,9 +10113,9 @@
}
@override
- List<ElementAnnotationImpl> get metadata3 {
+ MetadataImpl get metadata {
linkedData?.read(this);
- return super.metadata3;
+ return super.metadata;
}
@Deprecated('Use name2 instead')
@@ -10250,13 +10242,16 @@
}
class TypeParameterFragmentImpl extends FragmentImpl
- implements TypeParameterFragment {
+ implements AnnotatableFragmentImpl, TypeParameterFragment {
@override
String? name2;
@override
int? nameOffset2;
+ @override
+ MetadataImpl metadata = MetadataImpl(const []);
+
/// The default value of the type parameter. It is used to provide the
/// corresponding missing type argument in type annotations and as the
/// fall-back type value in type inference.
@@ -10359,9 +10354,6 @@
return enclosingFragment?.libraryFragment;
}
- @override
- MetadataImpl get metadata => MetadataImpl(metadata3);
-
@Deprecated('Use metadata instead')
@override
MetadataImpl get metadata2 => metadata;
@@ -10454,9 +10446,15 @@
/// Mixin representing an element which can have type parameters.
mixin TypeParameterizedElementMixin on FragmentImpl
- implements _ExistingElementImpl, TypeParameterizedFragment {
+ implements
+ _ExistingElementImpl,
+ AnnotatableFragmentImpl,
+ TypeParameterizedFragment {
List<TypeParameterFragmentImpl> _typeParameters = const [];
+ @override
+ MetadataImpl metadata = MetadataImpl(const []);
+
/// If the element defines a type, indicates whether the type may safely
/// appear without explicit type parameters as the bounds of a type parameter
/// declaration.
@@ -10469,9 +10467,6 @@
ElementLinkedData? get linkedData;
- @override
- MetadataImpl get metadata => MetadataImpl(metadata3);
-
@Deprecated('Use metadata instead')
@override
MetadataImpl get metadata2 => metadata;
@@ -10545,7 +10540,7 @@
/// Common base class for all analyzer-internal classes that implement
/// `VariableElement`.
abstract class VariableElementOrMember
- implements FragmentOrMember, ConstantEvaluationTarget {
+ implements FragmentOrMember, Annotatable, ConstantEvaluationTarget {
@override
VariableFragmentImpl get declaration;
@@ -10594,7 +10589,10 @@
}
abstract class VariableFragmentImpl extends FragmentImpl
- implements VariableElementOrMember, VariableFragment {
+ implements
+ VariableElementOrMember,
+ AnnotatableFragmentImpl,
+ VariableFragment {
/// The type of this variable.
TypeImpl? _type;
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index 7b5a75b..93adf35 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -803,9 +803,6 @@
@override
Source? get librarySource => _declaration.librarySource;
- @override
- List<ElementAnnotation> get metadata3 => _declaration.metadata3;
-
@Deprecated('Use name2 instead')
@override
String? get name => _declaration.name;
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
index 8d5a488..db94cde 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
@@ -1824,7 +1824,7 @@
}
void _setOrCreateMetadataElements(
- FragmentImpl element,
+ AnnotatableFragmentImpl element,
NodeList<AnnotationImpl> annotations, {
bool visitNodes = true,
}) {
@@ -1832,12 +1832,13 @@
annotations.accept(this);
}
if (_elementWalker != null) {
- _setElementAnnotations(annotations, element.metadata3);
+ _setElementAnnotations(annotations, element.metadata.annotations);
} else if (annotations.isNotEmpty) {
- element.metadata3 =
- annotations.map((annotation) {
- return annotation.elementAnnotation!;
- }).toList();
+ element.metadata = MetadataImpl(
+ annotations.map((annotation) {
+ return annotation.elementAnnotation!;
+ }).toList(),
+ );
}
}
diff --git a/pkg/analyzer/lib/src/summary2/bundle_reader.dart b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
index 6f852b0..91c723b 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
@@ -129,7 +129,7 @@
@override
void _read(element, reader) {
- element.metadata3 = reader._readAnnotationList(unitElement: unitElement);
+ element.metadata = reader._readMetadata(unitElement: unitElement);
_readTypeParameters(reader, element.typeParameters);
element.supertype = reader._readOptionalInterfaceType();
element.mixins = reader._readInterfaceTypeList();
@@ -217,7 +217,7 @@
void _read(element, reader) {
_addEnclosingElementTypeParameters(reader, element);
- element.metadata3 = reader._readAnnotationList(unitElement: unitElement);
+ element.metadata = reader._readMetadata(unitElement: unitElement);
reader._addFormalParameters(element.parameters);
_readFormalParameters(reader, element.parameters);
element.superConstructor =
@@ -302,9 +302,7 @@
List<FormalParameterFragmentImpl> parameters,
) {
for (var parameter in parameters) {
- parameter.metadata3 = reader._readAnnotationList(
- unitElement: unitElement,
- );
+ parameter.metadata = reader._readMetadata(unitElement: unitElement);
_readTypeParameters(reader, parameter.typeParameters);
_readFormalParameters(reader, parameter.parameters);
parameter.type = reader.readRequiredType();
@@ -327,9 +325,7 @@
) {
reader._addTypeParameters(typeParameters);
for (var typeParameter in typeParameters) {
- typeParameter.metadata3 = reader._readAnnotationList(
- unitElement: unitElement,
- );
+ typeParameter.metadata = reader._readMetadata(unitElement: unitElement);
typeParameter.bound = reader.readType();
typeParameter.defaultType = reader.readType();
}
@@ -353,7 +349,7 @@
@override
void _read(element, reader) {
- element.metadata3 = reader._readAnnotationList(
+ element.metadata = reader._readMetadata(
unitElement: element.enclosingElement3,
);
_readTypeParameters(reader, element.typeParameters);
@@ -382,7 +378,7 @@
@override
void _read(element, reader) {
- element.metadata3 = reader._readAnnotationList(
+ element.metadata = reader._readMetadata(
unitElement: element.enclosingElement3,
);
_readTypeParameters(reader, element.typeParameters);
@@ -412,7 +408,7 @@
@override
void _read(element, reader) {
- element.metadata3 = reader._readAnnotationList(
+ element.metadata = reader._readMetadata(
unitElement: element.enclosingElement3,
);
_readTypeParameters(reader, element.typeParameters);
@@ -440,7 +436,7 @@
@override
void _read(element, reader) {
_addEnclosingElementTypeParameters(reader, element);
- element.metadata3 = reader._readAnnotationList(unitElement: unitElement);
+ element.metadata = reader._readMetadata(unitElement: unitElement);
element.type = reader.readRequiredType();
if (element is ConstFieldFragmentImpl) {
@@ -472,7 +468,7 @@
@override
void _read(element, reader) {
- element.metadata3 = reader._readAnnotationList(unitElement: unitElement);
+ element.metadata = reader._readMetadata(unitElement: unitElement);
_readTypeParameters(reader, element.typeParameters);
element.returnType = reader.readRequiredType();
_readFormalParameters(reader, element.parameters);
@@ -529,7 +525,7 @@
@override
void _read(element, reader) {
- element.annotations = reader._readAnnotationList(unitElement: unitElement);
+ element.metadata = reader._readMetadata(unitElement: unitElement);
element.entryPoint2 = reader.readElement() as TopLevelFunctionElementImpl?;
@@ -1872,7 +1868,7 @@
@override
void _read(element, reader) {
_addEnclosingElementTypeParameters(reader, element);
- element.metadata3 = reader._readAnnotationList(unitElement: unitElement);
+ element.metadata = reader._readMetadata(unitElement: unitElement);
_readTypeParameters(reader, element.typeParameters);
_readFormalParameters(reader, element.parameters);
element.returnType = reader.readRequiredType();
@@ -1897,7 +1893,7 @@
@override
void _read(element, reader) {
- element.metadata3 = reader._readAnnotationList(
+ element.metadata = reader._readMetadata(
unitElement: element.enclosingElement3,
);
_readTypeParameters(reader, element.typeParameters);
@@ -1928,7 +1924,7 @@
void _read(element, reader) {
_addEnclosingElementTypeParameters(reader, element);
- element.metadata3 = reader._readAnnotationList(unitElement: unitElement);
+ element.metadata = reader._readMetadata(unitElement: unitElement);
element.returnType = reader.readRequiredType();
_readFormalParameters(reader, element.parameters);
@@ -2313,7 +2309,7 @@
// TODO(scheglov): reuse for formal parameters
_localElements.length -= typeParameters.length;
if (unitElement != null) {
- element.metadata3 = _readAnnotationList(unitElement: unitElement);
+ element.metadata = _readMetadata(unitElement: unitElement);
}
return element;
} else {
@@ -2330,7 +2326,7 @@
// TODO(scheglov): reuse for formal parameters
_localElements.length -= typeParameters.length;
if (unitElement != null) {
- element.metadata3 = _readAnnotationList(unitElement: unitElement);
+ element.metadata = _readMetadata(unitElement: unitElement);
}
return element;
}
@@ -2381,6 +2377,11 @@
return readTypedList(_readInterfaceType);
}
+ MetadataImpl _readMetadata({required LibraryFragmentImpl unitElement}) {
+ var annotations = _readAnnotationList(unitElement: unitElement);
+ return MetadataImpl(annotations);
+ }
+
List<T> _readNodeList<T>() {
return readTypedList(() {
return _readRequiredNode() as T;
@@ -2451,7 +2452,7 @@
for (var typeParameter in typeParameters) {
typeParameter.bound = readType();
if (unitElement != null) {
- typeParameter.metadata3 = _readAnnotationList(unitElement: unitElement);
+ typeParameter.metadata = _readMetadata(unitElement: unitElement);
}
}
return typeParameters;
@@ -2490,7 +2491,7 @@
@override
void _read(element, reader) {
- element.metadata3 = reader._readAnnotationList(unitElement: unitElement);
+ element.metadata = reader._readMetadata(unitElement: unitElement);
element.type = reader.readRequiredType();
if (element is ConstTopLevelVariableFragmentImpl) {
@@ -2522,7 +2523,7 @@
@override
void _read(element, reader) {
- element.metadata3 = reader._readAnnotationList(unitElement: unitElement);
+ element.metadata = reader._readMetadata(unitElement: unitElement);
_readTypeParameters(reader, element.typeParameters);
element.aliasedElement = reader._readAliasedElement(unitElement);
element.aliasedType = reader.readRequiredType();
diff --git a/pkg/analyzer/lib/src/summary2/bundle_writer.dart b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
index 1f2df75..de7a542 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
@@ -133,7 +133,7 @@
_writeFragmentName(fragment);
ClassElementFlags.write(_sink, fragment);
- _resolutionSink._writeAnnotationList(fragment.metadata3);
+ _resolutionSink._writeMetadata(fragment.metadata);
_writeTypeParameters(fragment.typeParameters, () {
_resolutionSink.writeType(fragment.supertype);
@@ -163,7 +163,7 @@
_sink._writeOptionalStringReference(element.typeName);
_sink._writeStringReference(element.name2);
ConstructorElementFlags.write(_sink, element);
- _resolutionSink._writeAnnotationList(element.metadata3);
+ _resolutionSink._writeMetadata(element.metadata);
_resolutionSink.localElements.withElements(element.parameters, () {
_writeList(element.parameters, _writeParameterElement);
@@ -216,7 +216,7 @@
_writeFragmentName(fragment);
EnumElementFlags.write(_sink, fragment);
- _resolutionSink._writeAnnotationList(fragment.metadata3);
+ _resolutionSink._writeMetadata(fragment.metadata);
_writeTypeParameters(fragment.typeParameters, () {
_resolutionSink.writeType(fragment.supertype);
@@ -267,7 +267,7 @@
_writeFragmentName(fragment);
ExtensionElementFlags.write(_sink, fragment);
- _resolutionSink._writeAnnotationList(fragment.metadata3);
+ _resolutionSink._writeMetadata(fragment.metadata);
_writeTypeParameters(fragment.typeParameters, () {
var element = fragment.element;
@@ -292,7 +292,7 @@
_writeFragmentName(fragment);
ExtensionTypeElementFlags.write(_sink, fragment);
- _resolutionSink._writeAnnotationList(fragment.metadata3);
+ _resolutionSink._writeMetadata(fragment.metadata);
_writeTypeParameters(fragment.typeParameters, () {
_resolutionSink._writeTypeList(fragment.interfaces);
@@ -327,7 +327,7 @@
_sink.writeBool(element is ConstFieldFragmentImpl);
FieldElementFlags.write(_sink, element);
_sink._writeTopLevelInferenceError(element.typeInferenceError);
- _resolutionSink._writeAnnotationList(element.metadata3);
+ _resolutionSink._writeMetadata(element.metadata);
_resolutionSink.writeType(element.type);
_resolutionSink._writeOptionalNode(element.constantInitializer);
}
@@ -364,7 +364,7 @@
_writeFragmentName(fragment);
FunctionElementFlags.write(_sink, fragment);
- _resolutionSink._writeAnnotationList(fragment.metadata3);
+ _resolutionSink._writeMetadata(fragment.metadata);
_writeTypeParameters(fragment.typeParameters, () {
_resolutionSink.writeType(fragment.returnType);
@@ -429,7 +429,7 @@
_sink._writeStringReference(fragment.name2 ?? '');
MethodElementFlags.write(_sink, fragment);
- _resolutionSink._writeAnnotationList(fragment.metadata3);
+ _resolutionSink._writeMetadata(fragment.metadata);
_writeTypeParameters(fragment.typeParameters, () {
_writeList(fragment.parameters, _writeParameterElement);
@@ -446,7 +446,7 @@
_writeFragmentName(fragment);
MixinElementFlags.write(_sink, fragment);
- _resolutionSink._writeAnnotationList(fragment.metadata3);
+ _resolutionSink._writeMetadata(fragment.metadata);
_writeTypeParameters(fragment.typeParameters, () {
_resolutionSink._writeTypeList(fragment.superclassConstraints);
@@ -499,7 +499,7 @@
_sink._writeFormalParameterKind(element);
ParameterElementFlags.write(_sink, element);
- _resolutionSink._writeAnnotationList(element.metadata3);
+ _resolutionSink._writeMetadata(element.metadata);
_writeTypeParameters(element.typeParameters, () {
_writeList(element.parameters, _writeParameterElement);
@@ -535,7 +535,7 @@
_writeFragmentName(fragment);
PropertyAccessorElementFlags.write(_sink, fragment);
- _resolutionSink._writeAnnotationList(fragment.metadata3);
+ _resolutionSink._writeMetadata(fragment.metadata);
_resolutionSink.writeType(fragment.returnType);
_writeList(fragment.parameters, _writeParameterElement);
@@ -578,7 +578,7 @@
_sink.writeBool(fragment.isConst);
TopLevelVariableElementFlags.write(_sink, fragment);
_sink._writeTopLevelInferenceError(fragment.typeInferenceError);
- _resolutionSink._writeAnnotationList(fragment.metadata3);
+ _resolutionSink._writeMetadata(fragment.metadata);
_resolutionSink.writeType(fragment.type);
_resolutionSink._writeOptionalNode(fragment.constantInitializer);
@@ -594,7 +594,7 @@
_sink.writeBool(fragment.isFunctionTypeAliasBased);
TypeAliasElementFlags.write(_sink, fragment);
- _resolutionSink._writeAnnotationList(fragment.metadata3);
+ _resolutionSink._writeMetadata(fragment.metadata);
_writeTypeParameters(fragment.typeParameters, () {
_resolutionSink._writeAliasedElement(fragment.aliasedElement);
@@ -606,7 +606,7 @@
_sink._writeStringReference(element.name2 ?? '');
_writeFragmentName(element);
_sink.writeByte(_encodeVariance(element).index);
- _resolutionSink._writeAnnotationList(element.metadata3);
+ _resolutionSink._writeMetadata(element.metadata);
_resolutionSink.writeType(element.bound);
_resolutionSink.writeType(element.defaultType);
}
@@ -921,7 +921,7 @@
);
}, withAnnotations: withAnnotations);
if (withAnnotations) {
- _writeAnnotationList(parameter.metadata3);
+ _writeMetadata(parameter.metadata);
}
}
}
@@ -950,6 +950,10 @@
_writeNullabilitySuffix(type.nullabilitySuffix);
}
+ void _writeMetadata(MetadataImpl metadata) {
+ _writeAnnotationList(metadata.annotations);
+ }
+
void _writeNode(AstNode node) {
var astWriter = AstBinaryWriter(sink: this, stringIndexer: _stringIndexer);
node.accept(astWriter);
@@ -1019,7 +1023,7 @@
for (var typeParameter in typeParameters) {
writeType(typeParameter.bound);
if (withAnnotations) {
- _writeAnnotationList(typeParameter.metadata3);
+ _writeMetadata(typeParameter.metadata);
}
}
f();
diff --git a/pkg/analyzer/lib/src/summary2/element_builder.dart b/pkg/analyzer/lib/src/summary2/element_builder.dart
index f9e4c37..6b52dc5 100644
--- a/pkg/analyzer/lib/src/summary2/element_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/element_builder.dart
@@ -76,7 +76,7 @@
libraryElement.documentationComment = getCommentNodeRawText(
libraryDirective.documentationComment,
);
- libraryElement.annotations = _buildAnnotations(libraryDirective.metadata);
+ libraryElement.metadata = _buildMetadata(libraryDirective.metadata);
return;
}
@@ -86,17 +86,14 @@
libraryElement.documentationComment = getCommentNodeRawText(
firstDirective.documentationComment,
);
- List<ElementAnnotationImpl>? firstDirectiveMetadata;
+ MetadataImpl? firstDirectiveMetadata;
switch (firstDirective) {
case ExportDirectiveImpl():
- firstDirectiveMetadata =
- firstDirective.libraryExport?.metadata.annotations;
+ firstDirectiveMetadata = firstDirective.libraryExport?.metadata;
case ImportDirectiveImpl():
- firstDirectiveMetadata =
- firstDirective.libraryImport?.metadata.annotations;
+ firstDirectiveMetadata = firstDirective.libraryImport?.metadata;
case PartDirectiveImpl():
- firstDirectiveMetadata =
- firstDirective.partInclude?.metadata.annotations;
+ firstDirectiveMetadata = firstDirective.partInclude?.metadata;
case LibraryDirectiveImpl():
// Impossible, since there is no library directive.
break;
@@ -106,7 +103,7 @@
break;
}
if (firstDirectiveMetadata != null) {
- libraryElement.annotations = firstDirectiveMetadata;
+ libraryElement.metadata = firstDirectiveMetadata;
}
}
}
@@ -131,7 +128,7 @@
fragment.isSealed = true;
}
fragment.hasExtendsClause = node.extendsClause != null;
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
_setDocumentation(fragment, node);
@@ -203,7 +200,7 @@
fragment.isAbstract = true;
fragment.isSealed = true;
}
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
_setDocumentation(fragment, node);
@@ -265,7 +262,7 @@
element.isConst = node.constKeyword != null;
element.isExternal = node.externalKeyword != null;
element.isFactory = node.factoryKeyword != null;
- element.metadata3 = _buildAnnotations(node.metadata);
+ element.metadata = _buildMetadata(node.metadata);
element.typeName = node.returnType.name;
element.typeNameOffset = node.returnType.offset;
element.periodOffset = node.period?.offset;
@@ -310,7 +307,7 @@
fragment.name2 = name2;
fragment.nameOffset2 = _getFragmentNameOffset(nameToken);
fragment.isAugmentation = node.augmentKeyword != null;
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
_setDocumentation(fragment, node);
@@ -366,10 +363,7 @@
field.nameOffset2 = _getFragmentNameOffset(nameToken);
_setCodeRange(field, constant);
_setDocumentation(field, constant);
- field.metadata3 = _buildAnnotationsWithUnit(
- _unitElement,
- constant.metadata,
- );
+ field.metadata = _buildMetadata(constant.metadata);
var constantArguments = constant.arguments;
var constructorSelector = constantArguments?.constructorSelector;
@@ -538,7 +532,7 @@
fragment.name2 = name2;
fragment.nameOffset2 = _getFragmentNameOffset(nameToken);
fragment.isAugmentation = node.augmentKeyword != null;
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
_setDocumentation(fragment, node);
@@ -624,7 +618,7 @@
fragment.name2 = name2;
fragment.nameOffset2 = _getFragmentNameOffset(nameToken);
fragment.isAugmentation = node.augmentKeyword != null;
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
_setDocumentation(fragment, node);
@@ -690,7 +684,7 @@
@override
void visitFieldDeclaration(covariant FieldDeclarationImpl node) {
- var metadata = _buildAnnotations(node.metadata);
+ var metadata = _buildMetadata(node.metadata);
for (var variable in node.fields.variables) {
var nameToken = variable.name;
var name = nameToken.lexeme;
@@ -724,7 +718,7 @@
fragment.isFinal = node.fields.isFinal;
fragment.isLate = node.fields.isLate;
fragment.isStatic = node.isStatic;
- fragment.metadata3 = metadata;
+ fragment.metadata = metadata;
_setCodeRange(fragment, variable);
_setDocumentation(fragment, node);
@@ -775,7 +769,7 @@
fragment.name2 = _getFragmentName(nameToken);
fragment.nameOffset2 = _getFragmentNameOffset(nameToken);
fragment.hasImplicitType = node.type == null && node.parameters == null;
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
node.declaredFragment = fragment;
@@ -937,7 +931,7 @@
executableFragment.isAsynchronous = body.isAsynchronous;
executableFragment.isExternal = node.externalKeyword != null;
executableFragment.isGenerator = body.isGenerator;
- executableFragment.metadata3 = _buildAnnotations(node.metadata);
+ executableFragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(executableFragment, node);
_setDocumentation(executableFragment, node);
@@ -972,7 +966,7 @@
fragment.name2 = name2;
fragment.nameOffset2 = _getFragmentNameOffset(nameToken);
fragment.isFunctionTypeAliasBased = true;
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
_setDocumentation(fragment, node);
@@ -1057,7 +1051,7 @@
fragment.nameOffset2 = _getFragmentNameOffset(nameToken);
fragment.isExplicitlyCovariant = node.covariantKeyword != null;
fragment.isFinal = node.isFinal;
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
node.declaredFragment = fragment;
@@ -1124,7 +1118,7 @@
fragment.name2 = name2;
fragment.nameOffset2 = _getFragmentNameOffset(nameToken);
fragment.isAugmentation = node.augmentKeyword != null;
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
_setDocumentation(fragment, node);
@@ -1281,7 +1275,7 @@
executableFragment.isExternal =
node.externalKeyword != null || node.body is NativeFunctionBody;
executableFragment.isGenerator = node.body.isGenerator;
- executableFragment.metadata3 = _buildAnnotations(node.metadata);
+ executableFragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(executableFragment, node);
_setDocumentation(executableFragment, node);
@@ -1309,7 +1303,7 @@
fragment.nameOffset2 = _getFragmentNameOffset(nameToken);
fragment.isAugmentation = node.augmentKeyword != null;
fragment.isBase = node.baseKeyword != null;
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
_setDocumentation(fragment, node);
@@ -1450,7 +1444,7 @@
fragment.hasImplicitType = node.type == null;
fragment.isExplicitlyCovariant = node.covariantKeyword != null;
fragment.isFinal = node.isFinal;
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
node.declaredFragment = fragment;
@@ -1491,7 +1485,7 @@
fragment.name2 = _getFragmentName(nameToken);
fragment.nameOffset2 = _getFragmentNameOffset(nameToken);
fragment.hasImplicitType = node.type == null && node.parameters == null;
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
node.declaredFragment = fragment;
@@ -1524,7 +1518,7 @@
) {
var enclosingRef = _enclosingContext.fragmentReference;
- var metadata = _buildAnnotations(node.metadata);
+ var metadata = _buildMetadata(node.metadata);
for (var variable in node.variables.variables) {
var nameToken = variable.name;
var name = nameToken.lexeme;
@@ -1552,7 +1546,7 @@
fragment.isExternal = node.externalKeyword != null;
fragment.isFinal = node.variables.isFinal;
fragment.isLate = node.variables.isLate;
- fragment.metadata3 = metadata;
+ fragment.metadata = metadata;
_setCodeRange(fragment, variable);
_setDocumentation(fragment, node);
@@ -1638,7 +1632,7 @@
);
fragment.name2 = _getFragmentName(nameToken);
fragment.nameOffset2 = _getFragmentNameOffset(nameToken);
- fragment.metadata3 = _buildAnnotations(node.metadata);
+ fragment.metadata = _buildMetadata(node.metadata);
_setCodeRange(fragment, node);
node.declaredFragment = fragment;
@@ -1685,6 +1679,11 @@
});
}
+ MetadataImpl _buildMetadata(List<Annotation> nodeList) {
+ var annotations = _buildAnnotationsWithUnit(_unitElement, nodeList);
+ return MetadataImpl(annotations);
+ }
+
/// The [accessorElement] should not be an augmentation.
PropertyInducingElementImpl _buildSyntheticVariable({
required String name,
@@ -1787,7 +1786,7 @@
fieldFragment.name2 = _getFragmentName(fieldNameToken);
fieldFragment.nameOffset2 = _getFragmentNameOffset(fieldNameToken);
fieldFragment.isFinal = true;
- fieldFragment.metadata3 = _buildAnnotations(representation.fieldMetadata);
+ fieldFragment.metadata = _buildMetadata(representation.fieldMetadata);
var fieldBeginToken =
representation.fieldMetadata.beginToken ?? representation.fieldType;
diff --git a/pkg/analyzer/lib/src/summary2/informative_data.dart b/pkg/analyzer/lib/src/summary2/informative_data.dart
index 9476a8b..b3a5fd0 100644
--- a/pkg/analyzer/lib/src/summary2/informative_data.dart
+++ b/pkg/analyzer/lib/src/summary2/informative_data.dart
@@ -102,7 +102,6 @@
var applyOffsets = ApplyConstantOffsets(unitInfo.libraryConstantOffsets, (
applier,
) {
- applier.applyToMetadata(unitElement);
applier.applyToImports(unitElement.libraryImports);
applier.applyToExports(unitElement.libraryExports);
applier.applyToParts(unitElement.parts);
@@ -201,7 +200,7 @@
_applyToFormalParameters(element.parameters_unresolved, info.parameters);
var applyOffsets = ApplyConstantOffsets(info.constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToTypeParameters(element.typeParameters);
applier.applyToFormalParameters(element.parameters);
});
@@ -229,7 +228,7 @@
);
var applyOffsets = ApplyConstantOffsets(info.constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToTypeParameters(element.typeParameters);
});
@@ -265,7 +264,7 @@
);
var applyOffsets = ApplyConstantOffsets(info.constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToTypeParameters(element.typeParameters);
});
@@ -313,7 +312,7 @@
_applyToFormalParameters(element.parameters_unresolved, info.parameters);
var applyOffsets = ApplyConstantOffsets(info.constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToFormalParameters(element.parameters);
applier.applyToConstructorInitializers(element);
});
@@ -347,7 +346,7 @@
_applyToMethods(element.methods, info.methods);
var applyOffsets = ApplyConstantOffsets(info.constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToTypeParameters(element.typeParameters);
});
@@ -384,7 +383,7 @@
_applyToMethods(element.methods, info.methods);
var applyOffsets = ApplyConstantOffsets(info.constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToTypeParameters(element.typeParameters);
});
@@ -421,7 +420,7 @@
var fieldApplyOffsets = ApplyConstantOffsets(infoRep.fieldConstantOffsets, (
applier,
) {
- applier.applyToMetadata(representationField);
+ applier.applyToMetadata(representationField.metadata);
});
var fieldLinkedData = representationField.linkedData;
@@ -462,7 +461,7 @@
_applyToMethods(element.methods, info.methods);
var applyOffsets = ApplyConstantOffsets(info.constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToTypeParameters(element.typeParameters);
});
@@ -485,7 +484,7 @@
element.documentationComment = info.documentationComment;
var applyOffsets = ApplyConstantOffsets(info.constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToConstantInitializer(element);
});
@@ -526,7 +525,7 @@
_applyToFormalParameters(element.parameters_unresolved, info.parameters);
var applyOffsets = ApplyConstantOffsets(info.constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToTypeParameters(element.typeParameters);
applier.applyToFormalParameters(element.parameters);
});
@@ -602,7 +601,7 @@
var applyOffsets = ApplyConstantOffsets(info.libraryConstantOffsets, (
applier,
) {
- applier.applyToMetadataList(element.annotations);
+ applier.applyToMetadata(element.metadata);
});
var linkedData = element.linkedData;
@@ -629,7 +628,7 @@
_applyToFormalParameters(element.parameters_unresolved, info.parameters);
var applyOffsets = ApplyConstantOffsets(info.constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToTypeParameters(element.typeParameters);
applier.applyToFormalParameters(element.parameters);
});
@@ -662,7 +661,7 @@
_applyToMethods(element.methods, info.methods);
var applyOffsets = ApplyConstantOffsets(info.constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToTypeParameters(element.typeParameters);
});
@@ -684,7 +683,7 @@
element.documentationComment = info.documentationComment;
var applyOffsets = ApplyConstantOffsets(info.constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToConstantInitializer(element);
});
@@ -719,7 +718,7 @@
List<_InfoTypeParameter>? aliasedTypeParameters,
}) {
var applyOffsets = ApplyConstantOffsets(constantOffsets, (applier) {
- applier.applyToMetadata(element);
+ applier.applyToMetadata(element.metadata);
applier.applyToTypeParameters(element.typeParameters);
var aliasedElement = element.aliasedElement;
@@ -2007,13 +2006,13 @@
void applyToEnumConstants(List<FieldFragmentImpl> constants) {
for (var constant in constants) {
- applyToMetadata(constant);
+ applyToMetadata(constant.metadata);
}
}
void applyToExports(List<LibraryExportImpl> elements) {
for (var element in elements) {
- applyToMetadataList(element.metadata.annotations);
+ applyToMetadata(element.metadata);
}
}
@@ -2021,7 +2020,7 @@
List<FormalParameterFragmentImpl> formalParameters,
) {
for (var parameter in formalParameters) {
- applyToMetadata(parameter);
+ applyToMetadata(parameter.metadata);
applyToFormalParameters(parameter.parameters);
applyToConstantInitializer(parameter);
}
@@ -2029,16 +2028,12 @@
void applyToImports(List<LibraryImportImpl> elements) {
for (var element in elements) {
- applyToMetadataList(element.metadata.annotations);
+ applyToMetadata(element.metadata);
}
}
- void applyToMetadata(FragmentImpl element) {
- applyToMetadataList(element.metadata3);
- }
-
- void applyToMetadataList(List<ElementAnnotationImpl> metadata) {
- for (var annotation in metadata) {
+ void applyToMetadata(MetadataImpl metadata) {
+ for (var annotation in metadata.annotations) {
var node = annotation.annotationAst;
node.accept(this);
}
@@ -2046,13 +2041,13 @@
void applyToParts(List<PartIncludeImpl> elements) {
for (var element in elements) {
- applyToMetadataList(element.metadata.annotations);
+ applyToMetadata(element.metadata);
}
}
void applyToTypeParameters(List<TypeParameterFragmentImpl> typeParameters) {
for (var typeParameter in typeParameters) {
- applyToMetadata(typeParameter);
+ applyToMetadata(typeParameter.metadata);
}
}
diff --git a/pkg/analyzer/lib/src/utilities/extensions/element.dart b/pkg/analyzer/lib/src/utilities/extensions/element.dart
index 5cfe092..897e3d4 100644
--- a/pkg/analyzer/lib/src/utilities/extensions/element.dart
+++ b/pkg/analyzer/lib/src/utilities/extensions/element.dart
@@ -5,7 +5,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/member.dart';
import 'package:analyzer/src/dart/element/type.dart';
@@ -174,10 +173,6 @@
extension ElementImplExtension on FragmentImpl {
FragmentImpl? get enclosingElementImpl => enclosingElement3;
-
- AnnotationImpl annotationAst(int index) {
- return metadata3[index].annotationAst;
- }
}
extension ElementOrNullExtension on FragmentImpl? {