@@ -1427,7 +1427,7 @@ class DynamicElementImpl2 extends TypeDefiningElementImpl2 {
14271427
14281428 @override
14291429 Metadata get metadata2 {
1430- return MetadataImpl (0 , const []);
1430+ return MetadataImpl (const []);
14311431 }
14321432
14331433 @override
@@ -3567,17 +3567,14 @@ mixin FragmentedAnnotatableElementMixin<E extends Fragment>
35673567 return buffer.toString ();
35683568 }
35693569
3570- List < ElementAnnotation > get metadata {
3571- var result = < ElementAnnotation > [];
3570+ MetadataImpl get metadata2 {
3571+ var annotations = < ElementAnnotationImpl > [];
35723572 for (var fragment in _fragments) {
3573- result .addAll (fragment.metadataOrEmpty.annotations );
3573+ annotations .addAll (( fragment as FragmentImpl ).metadata );
35743574 }
3575- return result ;
3575+ return MetadataImpl (annotations) ;
35763576 }
35773577
3578- MetadataImpl get metadata2 =>
3579- MetadataImpl (- 1 , metadata.cast <ElementAnnotationImpl >());
3580-
35813578 Version ? get sinceSdkVersion {
35823579 if (this is Element ) {
35833580 return SinceSdkVersionComputer ().compute (this as Element );
@@ -3723,10 +3720,6 @@ mixin FragmentedTypeParameterizedElementMixin<
37233720}
37243721
37253722abstract class FragmentImpl implements ElementOrMember {
3726- static const _metadataFlag_isReady = 1 << 0 ;
3727- static const _metadataFlag_hasDeprecated = 1 << 1 ;
3728- static const _metadataFlag_hasOverride = 1 << 2 ;
3729-
37303723 static int _NEXT_ID = 0 ;
37313724
37323725 @override
@@ -3757,9 +3750,6 @@ abstract class FragmentImpl implements ElementOrMember {
37573750 /// A list containing all of the metadata associated with this element.
37583751 List <ElementAnnotationImpl > _metadata = const [];
37593752
3760- /// Cached flags denoting presence of specific annotations in [_metadata] .
3761- int _metadataFlags = 0 ;
3762-
37633753 /// The documentation comment for this element.
37643754 String ? _docComment;
37653755
@@ -3808,12 +3798,6 @@ abstract class FragmentImpl implements ElementOrMember {
38083798 return enclosingElement3! .enclosingUnit;
38093799 }
38103800
3811- /// Whether the element has an annotation of the form `@deprecated`
3812- /// or `@Deprecated('..')` .
3813- bool get hasDeprecated {
3814- return (_getMetadataFlags () & _metadataFlag_hasDeprecated) != 0 ;
3815- }
3816-
38173801 /// Return an identifier that uniquely identifies this element among the
38183802 /// children of this element's parent.
38193803 String get identifier {
@@ -3866,7 +3850,7 @@ abstract class FragmentImpl implements ElementOrMember {
38663850 _metadata = metadata;
38673851 }
38683852
3869- MetadataImpl get metadata2 => MetadataImpl (_getMetadataFlags (), metadata);
3853+ MetadataImpl get metadata2 => MetadataImpl (metadata);
38703854
38713855 @override
38723856 String ? get name => _name;
@@ -3959,10 +3943,6 @@ abstract class FragmentImpl implements ElementOrMember {
39593943 /// Return `true` if this element has the given [modifier] associated with it.
39603944 bool hasModifier (Modifier modifier) => _modifiers[modifier];
39613945
3962- void resetMetadataFlags () {
3963- _metadataFlags = 0 ;
3964- }
3965-
39663946 /// Set the code range for this element.
39673947 void setCodeRange (int offset, int length) {
39683948 _codeOffset = offset;
@@ -3979,29 +3959,6 @@ abstract class FragmentImpl implements ElementOrMember {
39793959 String toString () {
39803960 return getDisplayString ();
39813961 }
3982-
3983- /// Return flags that denote presence of a few specific annotations.
3984- int _getMetadataFlags () {
3985- var result = _metadataFlags;
3986-
3987- // Has at least `_metadataFlag_isReady`.
3988- if (result != 0 ) {
3989- return result;
3990- }
3991-
3992- var metadata = this .metadata;
3993- for (var i = 0 ; i < metadata.length; i++ ) {
3994- var annotation = metadata[i];
3995- if (annotation.isDeprecated) {
3996- result | = _metadataFlag_hasDeprecated;
3997- } else if (annotation.isOverride) {
3998- result | = _metadataFlag_hasOverride;
3999- }
4000- }
4001-
4002- result | = _metadataFlag_isReady;
4003- return _metadataFlags = result;
4004- }
40053962}
40063963
40073964sealed class FunctionFragmentImpl extends ExecutableFragmentImpl
@@ -5976,7 +5933,7 @@ class LibraryElementImpl extends FragmentImpl
59765933 if (reference is ExportedReferenceExported ) {
59775934 for (var location in reference.locations) {
59785935 var export = location.exportOf (this );
5979- if (! export.hasDeprecated) {
5936+ if (! export.metadata2. hasDeprecated) {
59805937 return false ;
59815938 }
59825939 }
@@ -6902,12 +6859,17 @@ class LocalVariableFragmentImpl extends NonParameterVariableFragmentImpl
69026859}
69036860
69046861final class MetadataImpl implements Metadata {
6905- final int _metadataFlags;
6862+ static const _isReady = 1 << 0 ;
6863+ static const _hasDeprecated = 1 << 1 ;
6864+ static const _hasOverride = 1 << 2 ;
6865+
6866+ /// Cached flags denoting presence of specific annotations.
6867+ int _metadataFlags2 = 0 ;
69066868
69076869 @override
69086870 final List <ElementAnnotationImpl > annotations;
69096871
6910- MetadataImpl (this ._metadataFlags, this . annotations);
6872+ MetadataImpl (this .annotations);
69116873
69126874 @override
69136875 bool get hasAlwaysThrows {
@@ -6935,18 +6897,7 @@ final class MetadataImpl implements Metadata {
69356897
69366898 @override
69376899 bool get hasDeprecated {
6938- if (_metadataFlags < 0 ) {
6939- // TODO(augmentations): Consider optimizing this similar to `ElementImpl`.
6940- var annotations = this .annotations;
6941- for (var i = 0 ; i < annotations.length; i++ ) {
6942- var annotation = annotations[i];
6943- if (annotation.isDeprecated) {
6944- return true ;
6945- }
6946- }
6947- return false ;
6948- }
6949- return (_metadataFlags & FragmentImpl ._metadataFlag_hasDeprecated) != 0 ;
6900+ return (_getMetadataFlags () & _hasDeprecated) != 0 ;
69506901 }
69516902
69526903 @override
@@ -7119,18 +7070,7 @@ final class MetadataImpl implements Metadata {
71197070
71207071 @override
71217072 bool get hasOverride {
7122- if (_metadataFlags < 0 ) {
7123- // TODO(augmentations): Consider optimizing this similar to `ElementImpl`.
7124- var annotations = this .annotations;
7125- for (var i = 0 ; i < annotations.length; i++ ) {
7126- var annotation = annotations[i];
7127- if (annotation.isOverride) {
7128- return true ;
7129- }
7130- }
7131- return false ;
7132- }
7133- return (_metadataFlags & FragmentImpl ._metadataFlag_hasOverride) != 0 ;
7073+ return (_getMetadataFlags () & _hasOverride) != 0 ;
71347074 }
71357075
71367076 /// Return `true` if this element has an annotation of the form
@@ -7277,6 +7217,28 @@ final class MetadataImpl implements Metadata {
72777217 }
72787218 return false ;
72797219 }
7220+
7221+ /// Return flags that denote presence of a few specific annotations.
7222+ int _getMetadataFlags () {
7223+ var result = _metadataFlags2;
7224+
7225+ // Has at least `_metadataFlag_isReady`.
7226+ if (result != 0 ) {
7227+ return result;
7228+ }
7229+
7230+ for (var i = 0 ; i < annotations.length; i++ ) {
7231+ var annotation = annotations[i];
7232+ if (annotation.isDeprecated) {
7233+ result | = _hasDeprecated;
7234+ } else if (annotation.isOverride) {
7235+ result | = _hasOverride;
7236+ }
7237+ }
7238+
7239+ result | = _isReady;
7240+ return _metadataFlags2 = result;
7241+ }
72807242}
72817243
72827244/// Common base class for all analyzer-internal classes that implement
@@ -7888,7 +7850,7 @@ class NeverElementImpl2 extends TypeDefiningElementImpl2 {
78887850
78897851 @override
78907852 Metadata get metadata2 {
7891- return MetadataImpl (0 , const []);
7853+ return MetadataImpl (const []);
78927854 }
78937855
78947856 @override
@@ -10534,19 +10496,4 @@ extension on Fragment {
1053410496 _ => null ,
1053510497 };
1053610498 }
10537-
10538- /// The metadata associated with the element or fragment.
10539- ///
10540- /// If the receiver is an element that has fragments, the list will include
10541- /// all of the metadata from all of the fragments.
10542- ///
10543- /// The list will be empty if the receiver does not have any metadata, does
10544- /// not support metadata, or if the library containing this element has not
10545- /// yet been fully resolved.
10546- Metadata get metadataOrEmpty {
10547- return switch (this ) {
10548- Annotatable (: var metadata2) => metadata2,
10549- _ => MetadataImpl (- 1 , const []),
10550- };
10551- }
1055210499}
0 commit comments