Skip to content

Commit 760c3a0

Browse files
bwilkersoncommit-bot@chromium.org
authored andcommitted
Store the declared element locally for unnamed extensions
We normally store the declared element for a declaration in the name of the declaration. We still do that when there _is_ a name for an extension, but we also store it directly on the extension so that we can handle unnamed extensions. Change-Id: Id8a8bc01be5d2fbfd86ea5ec4ff150165b31a9bb Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/109554 Reviewed-by: Konstantin Shcheglov <[email protected]> Reviewed-by: Phil Quitslund <[email protected]> Commit-Queue: Brian Wilkerson <[email protected]>
1 parent d114c96 commit 760c3a0

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

pkg/analyzer/lib/src/dart/ast/ast.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3850,6 +3850,8 @@ class ExtensionDeclarationImpl extends CompilationUnitMemberImpl
38503850
@override
38513851
Token rightBracket;
38523852

3853+
ExtensionElement _declaredElement;
3854+
38533855
ExtensionDeclarationImpl(
38543856
CommentImpl comment,
38553857
List<Annotation> metadata,
@@ -3883,10 +3885,15 @@ class ExtensionDeclarationImpl extends CompilationUnitMemberImpl
38833885
..add(rightBracket);
38843886

38853887
@override
3886-
Element get declaredElement => name.staticElement;
3888+
ExtensionElement get declaredElement => _declaredElement;
3889+
3890+
/// Set the element declared by this declaration to the given [element].
3891+
set declaredElement(ExtensionElement element) {
3892+
_declaredElement = element;
3893+
}
38873894

38883895
@override
3889-
Element get element => name.staticElement;
3896+
ExtensionElement get element => declaredElement;
38903897

38913898
@override
38923899
Token get endToken => rightBracket;

pkg/analyzer/lib/src/generated/declaration_resolver.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ class DeclarationResolver extends RecursiveAstVisitor<void> {
186186
@override
187187
void visitExtensionDeclaration(ExtensionDeclaration node) {
188188
ExtensionElement element = _match(node.name, _walker.getExtension());
189+
(node as ExtensionDeclarationImpl).declaredElement = element;
189190
_walk(new ElementWalker.forExtension(element), () {
190191
super.visitExtensionDeclaration(node);
191192
});

0 commit comments

Comments
 (0)