Skip to content

Commit 6687542

Browse files
scheglovCommit Queue
authored andcommitted
Bug: https://buganizer.corp.google.com/issues/392069763 Change-Id: Iecbfc55433890c4e5e606dc9b1f2bc005b9b6684 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/405800 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 0d90ccc commit 6687542

File tree

3 files changed

+75
-7
lines changed

3 files changed

+75
-7
lines changed

pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1397,7 +1397,7 @@ class Name {
13971397
}
13981398

13991399
if (name.startsWith('_')) {
1400-
var libraryUri = element.firstFragment.libraryFragment!.source.uri;
1400+
var libraryUri = element.library2!.uri;
14011401
return Name(libraryUri, name);
14021402
} else {
14031403
return Name(null, name);

pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,13 @@ class ExtensionMemberResolver {
9191
/// returns [ExtensionResolutionError.ambiguous].
9292
ExtensionResolutionResult findExtension(
9393
TypeImpl type, SyntacticEntity nameEntity, Name name) {
94-
var aaa = _resolver.libraryFragment.accessibleExtensions2;
95-
var bbb = aaa.havingMemberWithBaseName(name).toList();
96-
var extensions = bbb.applicableTo(
97-
targetLibrary: _resolver.definingLibrary,
98-
targetType: type,
99-
);
94+
var extensions = _resolver.libraryFragment.accessibleExtensions2
95+
.havingMemberWithBaseName(name)
96+
.toList()
97+
.applicableTo(
98+
targetLibrary: _resolver.definingLibrary,
99+
targetType: type,
100+
);
100101

101102
if (extensions.isEmpty) {
102103
return ExtensionResolutionError.none;

pkg/analyzer/test/src/dart/resolution/extension_method_test.dart

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1653,6 +1653,73 @@ MethodInvocation
16531653
''');
16541654
}
16551655

1656+
test_instance_method_fromInstance_privateName() async {
1657+
await assertNoErrorsInCode('''
1658+
extension E on int {
1659+
void _foo() {}
1660+
}
1661+
1662+
void f() {
1663+
0._foo();
1664+
}
1665+
''');
1666+
var invocation = findNode.methodInvocation('_foo();');
1667+
assertResolvedNodeText(invocation, r'''
1668+
MethodInvocation
1669+
target: IntegerLiteral
1670+
literal: 0
1671+
staticType: int
1672+
operator: .
1673+
methodName: SimpleIdentifier
1674+
token: _foo
1675+
staticElement: <testLibraryFragment>::@extension::E::@method::_foo
1676+
element: <testLibraryFragment>::@extension::E::@method::_foo#element
1677+
staticType: void Function()
1678+
argumentList: ArgumentList
1679+
leftParenthesis: (
1680+
rightParenthesis: )
1681+
staticInvokeType: void Function()
1682+
staticType: void
1683+
''');
1684+
}
1685+
1686+
test_instance_method_fromInstance_privateName_inPart() async {
1687+
newFile('$testPackageLibPath/a.dart', r'''
1688+
part of 'test.dart';
1689+
1690+
extension E on int {
1691+
void _foo() {}
1692+
}
1693+
''');
1694+
1695+
await assertNoErrorsInCode('''
1696+
part 'a.dart';
1697+
1698+
void f() {
1699+
0._foo();
1700+
}
1701+
''');
1702+
1703+
var invocation = findNode.methodInvocation('_foo();');
1704+
assertResolvedNodeText(invocation, r'''
1705+
MethodInvocation
1706+
target: IntegerLiteral
1707+
literal: 0
1708+
staticType: int
1709+
operator: .
1710+
methodName: SimpleIdentifier
1711+
token: _foo
1712+
staticElement: <testLibrary>::@fragment::package:test/a.dart::@extension::E::@method::_foo
1713+
element: <testLibrary>::@fragment::package:test/a.dart::@extension::E::@method::_foo#element
1714+
staticType: void Function()
1715+
argumentList: ArgumentList
1716+
leftParenthesis: (
1717+
rightParenthesis: )
1718+
staticInvokeType: void Function()
1719+
staticType: void
1720+
''');
1721+
}
1722+
16561723
test_instance_method_specificSubtypeMatchLocal() async {
16571724
await assertNoErrorsInCode('''
16581725
class A {}

0 commit comments

Comments
 (0)