Extension type. Support in ElementLocator.
Change-Id: Icfcaf19a5aaa3b4dfe2b9c1e0b453a261e50ef1f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/323428 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
@@ -108,6 +108,11 @@ class _ElementMapper extends GeneralizingAstVisitor<Element> {
|
||||
return node.element;
|
||||
}
|
||||
|
||||
@override
|
||||
Element? visitExtensionTypeDeclaration(ExtensionTypeDeclaration node) {
|
||||
return node.declaredElement;
|
||||
}
|
||||
|
||||
@override
|
||||
Element? visitFormalParameter(FormalParameter node) {
|
||||
return node.declaredElement;
|
||||
|
||||
@@ -57,6 +57,8 @@ class FindNode {
|
||||
|
||||
ExtendsClause get singleExtendsClause => _single();
|
||||
|
||||
ExtensionDeclaration get singleExtensionDeclaration => _single();
|
||||
|
||||
ExtensionTypeDeclaration get singleExtensionTypeDeclaration => _single();
|
||||
|
||||
FieldDeclaration get singleFieldDeclaration => _single();
|
||||
|
||||
@@ -127,6 +127,20 @@ enum E {
|
||||
expect(element, isExportElement);
|
||||
}
|
||||
|
||||
test_locate_ExtensionDeclaration() async {
|
||||
await resolveTestCode('extension A on int {}');
|
||||
var node = findNode.singleExtensionDeclaration;
|
||||
var element = ElementLocator.locate(node);
|
||||
expect(element, findElement.extension_('A'));
|
||||
}
|
||||
|
||||
test_locate_ExtensionTypeDeclaration() async {
|
||||
await resolveTestCode('extension type A(int it) {}');
|
||||
var node = findNode.singleExtensionTypeDeclaration;
|
||||
var element = ElementLocator.locate(node);
|
||||
expect(element, findElement.extensionType('A'));
|
||||
}
|
||||
|
||||
test_locate_FunctionDeclaration() async {
|
||||
await resolveTestCode('int f() => 3;');
|
||||
var node = findNode.functionDeclaration('f');
|
||||
@@ -325,6 +339,13 @@ void main() {
|
||||
expect(element, isFunctionElement);
|
||||
}
|
||||
|
||||
test_locate_MixinDeclaration() async {
|
||||
await resolveTestCode('mixin A {}');
|
||||
var node = findNode.singleMixinDeclaration;
|
||||
var element = ElementLocator.locate(node);
|
||||
expect(element, findElement.mixin('A'));
|
||||
}
|
||||
|
||||
test_locate_PartOfDirective_withName() async {
|
||||
var libPath = convertPath('$testPackageLibPath/lib.dart');
|
||||
var partPath = convertPath('$testPackageLibPath/test.dart');
|
||||
|
||||
Reference in New Issue
Block a user