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

Unified Diff: pkg/analysis_server/test/services/index/dart_index_contributor_test.dart

Issue 1407863004: Index library/part file references from import/export/part containing files. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: tweaks Created 5 years, 2 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/index/dart_index_contributor_test.dart
diff --git a/pkg/analysis_server/test/services/index/dart_index_contributor_test.dart b/pkg/analysis_server/test/services/index/dart_index_contributor_test.dart
index 585366ab67fafaeb6fa89071770f7dacac8331c4..1830a285943c337c44bc75d23d0030ba990dc406 100644
--- a/pkg/analysis_server/test/services/index/dart_index_contributor_test.dart
+++ b/pkg/analysis_server/test/services/index/dart_index_contributor_test.dart
@@ -9,6 +9,7 @@ import 'package:analysis_server/src/services/index/index.dart';
import 'package:analysis_server/src/services/index/index_contributor.dart';
import 'package:analysis_server/src/services/index/index_store.dart';
import 'package:analysis_server/src/services/index/indexable_element.dart';
+import 'package:analysis_server/src/services/index/indexable_file.dart';
import 'package:analyzer/src/generated/ast.dart';
import 'package:analyzer/src/generated/element.dart';
import 'package:analyzer/src/generated/engine.dart';
@@ -34,16 +35,21 @@ void indexDartUnit(
* Returns `true` if the [actual] location the same properties as [expected].
*/
bool _equalsLocation(LocationImpl actual, ExpectedLocation expected) {
- return _equalsLocationProperties(actual, expected.element, expected.offset,
+ return _equalsLocationProperties(actual, expected.indexable, expected.offset,
expected.length, expected.isQualified, expected.isResolved);
}
/**
* Returns `true` if the [actual] location the expected properties.
*/
-bool _equalsLocationProperties(LocationImpl actual, Element expectedElement,
- int expectedOffset, int expectedLength, bool isQualified, bool isResolved) {
- return (expectedElement == null || expectedElement == actual.element) &&
+bool _equalsLocationProperties(
+ LocationImpl actual,
+ IndexableObject expectedIndexable,
+ int expectedOffset,
+ int expectedLength,
+ bool isQualified,
+ bool isResolved) {
+ return (expectedIndexable == null || expectedIndexable == actual.indexable) &&
expectedOffset == actual.offset &&
expectedLength == actual.length &&
isQualified == actual.isQualified &&
@@ -88,6 +94,27 @@ class DartUnitContributorTest extends AbstractSingleUnitTest {
});
}
+ void test_isReferencedBy_PrefixElement() {
+ _indexTestUnit('''
+import 'dart:async' as ppp;
+main() {
+ ppp.Future a;
+ ppp.Stream b;
+}
+''');
+ // prepare elements
+ PrefixElement element = findNodeElementAtString('ppp;');
+ Element elementA = findElement('a');
+ Element elementB = findElement('b');
+ IndexableElement indexable = new IndexableElement(element);
+ // verify
+ _assertRecordedRelation(indexable, IndexConstants.IS_REFERENCED_BY,
+ _expectedLocation(elementA, 'ppp.Future'));
+ _assertRecordedRelation(indexable, IndexConstants.IS_REFERENCED_BY,
+ _expectedLocation(elementB, 'ppp.Stream'));
+ _assertNoRecordedRelation(indexable, null, _expectedLocation(null, 'ppp;'));
+ }
+
void test_bad_unresolvedFieldFormalParameter() {
verifyNoTestUnitErrors = false;
_indexTestUnit('''
@@ -1031,6 +1058,51 @@ main(A a) {
_expectedLocation(mainElement, 'field: 3'));
}
+ void test_isReferencedBy_fileOfLibrary_byImportingExportingFile() {
+ addSource('/lib.dart', '');
+ _indexTestUnit('''
+import 'lib.dart'; // 1
+export 'lib.dart'; // 2
+''');
+ // verify
+ IndexableFile libIndexableFile = new IndexableFile('/lib.dart');
+ IndexableFile testIndexableFile = new IndexableFile(testFile);
+ _assertRecordedRelationForIndexable(
+ libIndexableFile,
+ IndexConstants.IS_REFERENCED_BY,
+ new ExpectedLocation(
+ testIndexableFile,
+ testCode.indexOf("'lib.dart'; // 1"),
+ "'lib.dart'".length,
+ false,
+ true));
+ _assertRecordedRelationForIndexable(
+ libIndexableFile,
+ IndexConstants.IS_REFERENCED_BY,
+ new ExpectedLocation(
+ testIndexableFile,
+ testCode.indexOf("'lib.dart'; // 2"),
+ "'lib.dart'".length,
+ false,
+ true));
+ }
+
+ void test_isReferencedBy_fileOfPart_bySourcingFile() {
+ addSource('/part.dart', 'part of my.lib;');
+ _indexTestUnit('''
+library my.lib;
+part 'part.dart';
+''');
+ // verify
+ IndexableFile partIndexableFile = new IndexableFile('/part.dart');
+ IndexableFile testIndexableFile = new IndexableFile(testFile);
+ _assertRecordedRelationForIndexable(
+ partIndexableFile,
+ IndexConstants.IS_REFERENCED_BY,
+ new ExpectedLocation(testIndexableFile, testCode.indexOf("'part.dart'"),
+ "'part.dart'".length, false, true));
+ }
+
void test_isReferencedBy_FunctionElement() {
_indexTestUnit('''
foo() {}
@@ -1296,7 +1368,7 @@ main() {
_expectedLocation(mainElement, 'L;'));
}
- void test_isReferencedBy_libraryName() {
+ void test_isReferencedBy_libraryName_byPartOf() {
Source libSource = addSource(
'/lib.dart',
'''
@@ -1351,27 +1423,6 @@ main() {
_expectedLocation(mainElement, 'p: 1'));
}
- void test_isReferencedBy_PrefixElement() {
- _indexTestUnit('''
-import 'dart:async' as ppp;
-main() {
- ppp.Future a;
- ppp.Stream b;
-}
-''');
- // prepare elements
- PrefixElement element = findNodeElementAtString('ppp;');
- Element elementA = findElement('a');
- Element elementB = findElement('b');
- IndexableElement indexable = new IndexableElement(element);
- // verify
- _assertRecordedRelation(indexable, IndexConstants.IS_REFERENCED_BY,
- _expectedLocation(elementA, 'ppp.Future'));
- _assertRecordedRelation(indexable, IndexConstants.IS_REFERENCED_BY,
- _expectedLocation(elementB, 'ppp.Stream'));
- _assertNoRecordedRelation(indexable, null, _expectedLocation(null, 'ppp;'));
- }
-
void test_isReferencedBy_TopLevelVariableElement() {
addSource(
'/lib.dart',
@@ -1596,7 +1647,11 @@ main(A a, p) {
void _assertDefinesTopLevelElement(Element element) {
ExpectedLocation location = new ExpectedLocation(
- element, element.nameOffset, element.nameLength, false, true);
+ new IndexableElement(element),
+ element.nameOffset,
+ element.nameLength,
+ false,
+ true);
_assertRecordedRelationForElement(
testLibraryElement, IndexConstants.DEFINES, location);
expect(recordedTopElements, contains(element));
@@ -1685,8 +1740,10 @@ main(A a, p) {
if (length == -1) {
length = getLeadingIdentifierLength(search);
}
+ IndexableObject indexable =
+ element != null ? new IndexableElement(element) : null;
return new ExpectedLocation(
- element, offset, length, isQualified, isResolved);
+ indexable, offset, length, isQualified, isResolved);
}
ExpectedLocation _expectedLocationQ(Element element, String search,
@@ -1708,18 +1765,18 @@ main(A a, p) {
}
class ExpectedLocation {
- Element element;
+ IndexableObject indexable;
int offset;
int length;
bool isQualified;
bool isResolved;
- ExpectedLocation(this.element, this.offset, this.length, this.isQualified,
+ ExpectedLocation(this.indexable, this.offset, this.length, this.isQualified,
this.isResolved);
@override
String toString() {
- return 'ExpectedLocation(element=$element; offset=$offset; length=$length;'
+ return 'ExpectedLocation(indexable=$indexable; offset=$offset; length=$length;'
' isQualified=$isQualified isResolved=$isResolved)';
}
}

Powered by Google App Engine
This is Rietveld 408576698