Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: pkg/analysis_server/test/services/index2/index2_test.dart

Issue 1788673004: Index unqualified unresolved used names. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/test/services/index2/index2_test.dart
diff --git a/pkg/analysis_server/test/services/index2/index2_test.dart b/pkg/analysis_server/test/services/index2/index2_test.dart
index f65139ab2433f47288cff5750f3fc1f72f7c4ef6..6f14d7255aa4e731dd06d912eb603ce900586914 100644
--- a/pkg/analysis_server/test/services/index2/index2_test.dart
+++ b/pkg/analysis_server/test/services/index2/index2_test.dart
@@ -26,16 +26,18 @@ class Index2Test extends AbstractSingleUnitTest {
* Return the [Location] with given properties, or fail.
*/
Location findLocation(List<Location> locations, String libraryUri,
- String unitUri, int offset, int length) {
+ String unitUri, int offset, int length, bool isQualified) {
for (Location location in locations) {
if (location.libraryUri == libraryUri &&
location.unitUri == unitUri &&
location.offset == offset &&
- location.length == length) {
+ location.length == length &&
+ location.isQualified == isQualified) {
return location;
}
}
- fail('No at $offset with length $length in\n${locations.join('\n')}');
+ fail('No at $offset with length $length qualified=$isQualified in\n'
+ '${locations.join('\n')}');
return null;
}
@@ -43,25 +45,27 @@ class Index2Test extends AbstractSingleUnitTest {
* Return the [Location] with given properties, or fail.
*/
Location findLocationSource(
- List<Location> locations, Source source, String search,
+ List<Location> locations, Source source, String search, bool isQualified,
{int length}) {
String code = source.contents.data;
int offset = code.indexOf(search);
expect(offset, isNonNegative, reason: 'Not found "$search" in\n$code');
length ??= getLeadingIdentifierLength(search);
String uri = source.uri.toString();
- return findLocation(locations, uri, uri, offset, length);
+ return findLocation(locations, uri, uri, offset, length, isQualified);
}
/**
* Return the [Location] with given properties, or fail.
*/
- Location findLocationTest(List<Location> locations, String search,
+ Location findLocationTest(
+ List<Location> locations, String search, bool isQualified,
{int length}) {
int offset = findOffset(search);
length ??= getLeadingIdentifierLength(search);
String testUri = testSource.uri.toString();
- return findLocation(locations, testUri, testUri, offset, length);
+ return findLocation(
+ locations, testUri, testUri, offset, length, isQualified);
}
void setUp() {
@@ -132,8 +136,8 @@ class C extends A {} // C
ClassElement elementA = testUnitElement.getType('A');
List<Location> locations =
await index.getRelations(elementA, IndexRelationKind.IS_EXTENDED_BY);
- findLocationTest(locations, 'A {} // B');
- findLocationSource(locations, source2, 'A {} // C');
+ findLocationTest(locations, 'A {} // B', false);
+ findLocationSource(locations, source2, 'A {} // C', false);
}
test_getRelations_isReferencedBy() async {
@@ -144,40 +148,86 @@ main(int a, int b) {
ClassElement intElement = context.typeProvider.intType.element;
List<Location> locations = await index.getRelations(
intElement, IndexRelationKind.IS_REFERENCED_BY);
- findLocationTest(locations, 'int a');
- findLocationTest(locations, 'int b');
+ findLocationTest(locations, 'int a', false);
+ findLocationTest(locations, 'int b', false);
}
- test_getUnresolvedMemberReferences() async {
+ test_getUnresolvedMemberReferences_qualified_resolved() async {
_indexTestUnit('''
class A {
var test; // A
- mainA() {
- test(); // a-inv-r-nq
- test = 1; // a-ref-r-nq
- test += 2; // a-ref-r-nq
- print(test); // a-ref-r-nq
+}
+main(A a) {
+ print(a.test);
+ a.test = 1;
+ a.test += 2;
+ a.test();
+}
+''');
+ List<Location> locations =
+ await index.getUnresolvedMemberReferences('test');
+ expect(locations, isEmpty);
}
+
+ test_getUnresolvedMemberReferences_qualified_unresolved() async {
+ _indexTestUnit('''
+class A {
+ var test; // A
}
-main(A a, p) {
- a.test(); // a-inv-r-q
- a.test = 1; // a-ref-r-q
- a.test += 2; // a-ref-r-q
- print(a.test); // a-ref-r-q
- p.test(); // p-inv-ur-q
- p.test = 1; // p-ref-ur-q
- p.test += 2; // p-ref-ur-q
- print(p.test); // p-ref-ur-q
+main(p) {
+ print(p.test);
+ p.test = 1;
+ p.test += 2;
+ p.test();
print(p.test2); // not requested
}
''');
List<Location> locations =
await index.getUnresolvedMemberReferences('test');
expect(locations, hasLength(4));
- findLocationTest(locations, 'test(); // p-inv-ur-q');
- findLocationTest(locations, 'test = 1; // p-ref-ur-q');
- findLocationTest(locations, 'test += 2; // p-ref-ur-q');
- findLocationTest(locations, 'test); // p-ref-ur-q');
+ findLocationTest(locations, 'test);', true);
+ findLocationTest(locations, 'test = 1;', true);
+ findLocationTest(locations, 'test += 2;', true);
+ findLocationTest(locations, 'test();', true);
+ }
+
+ test_getUnresolvedMemberReferences_unqualified_resolved() async {
+ _indexTestUnit('''
+class A {
+ var test;
+ m() {
+ print(test);
+ test = 1;
+ test += 2;
+ test();
+ }
+}
+''');
+ List<Location> locations =
+ await index.getUnresolvedMemberReferences('test');
+ expect(locations, isEmpty);
+ }
+
+ test_getUnresolvedMemberReferences_unqualified_unresolved() async {
+ verifyNoTestUnitErrors = false;
+ _indexTestUnit('''
+class A {
+ m() {
+ print(test);
+ test = 1;
+ test += 2;
+ test();
+ print(test2); // not requested
+ }
+}
+''');
+ List<Location> locations =
+ await index.getUnresolvedMemberReferences('test');
+ expect(locations, hasLength(4));
+ findLocationTest(locations, 'test);', false);
+ findLocationTest(locations, 'test = 1;', false);
+ findLocationTest(locations, 'test += 2;', false);
+ findLocationTest(locations, 'test();', false);
}
test_indexUnit_nullUnit() async {

Powered by Google App Engine
This is Rietveld 408576698