[element model] migrate `library_annotations` Bug: https://github.com/dart-lang/linter/issues/5099 Change-Id: I386be7cbd2768d031ab42cc47d5b007e1f6d8478 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/389360 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Phil Quitslund <pquitslund@google.com>
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart index 64b5f71..2740678 100644 --- a/pkg/analyzer/lib/dart/element/element.dart +++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -897,6 +897,16 @@ /// other element. Element? get element; + /// Returns the element referenced by this annotation. + /// + /// In valid code this element can be a [GetterElement] of a constant + /// top-level variable, or a constant static field of a class; or a + /// constant [ConstructorElement]. + /// + /// In invalid code this element can be `null`, or a reference to any + /// other element. + Element2? get element2; + /// Whether the annotation marks the associated function as always throwing. bool get isAlwaysThrows;
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart index 299017e..43ac505 100644 --- a/pkg/analyzer/lib/src/dart/element/element.dart +++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -2079,6 +2079,11 @@ AnalysisContext get context => compilationUnit.library.context; @override + Element2? get element2 { + return element?.asElement2; + } + + @override bool get isAlwaysThrows => _isPackageMetaGetter(_alwaysThrowsVariableName); @override
diff --git a/pkg/linter/lib/src/rules/library_annotations.dart b/pkg/linter/lib/src/rules/library_annotations.dart index d30a0c1..d1c0d2a 100644 --- a/pkg/linter/lib/src/rules/library_annotations.dart +++ b/pkg/linter/lib/src/rules/library_annotations.dart
@@ -4,7 +4,7 @@ import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/visitor.dart'; -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; // ignore: implementation_imports import 'package:analyzer/src/dart/element/extensions.dart'; import 'package:meta/meta_meta.dart'; @@ -89,9 +89,9 @@ required String libraryName, required String className, }) { - var element = this.element; - return element is ConstructorElement && - element.enclosingElement3.name == className && - element.library.name == libraryName; + var element = element2; + return element is ConstructorElement2 && + element.enclosingElement2.name == className && + element.library2?.name == libraryName; } }