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

Unified Diff: pkg/analyzer/test/src/summary/summary_test.dart

Issue 1523093003: Move summary references into UnlinkedUnit and PrelinkedUnit. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years 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
« no previous file with comments | « pkg/analyzer/lib/src/summary/summarize_elements.dart ('k') | pkg/analyzer/tool/summary/idl.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/src/summary/summary_test.dart
diff --git a/pkg/analyzer/test/src/summary/summary_test.dart b/pkg/analyzer/test/src/summary/summary_test.dart
index 6074ce3261af0f04431c2107363686949ff8a580..c28ae72e9460f68e1091361103abf01893e9d7db 100644
--- a/pkg/analyzer/test/src/summary/summary_test.dart
+++ b/pkg/analyzer/test/src/summary/summary_test.dart
@@ -60,7 +60,9 @@ class SummarizeElementsTest extends ResolverTestCase with SummaryTest {
}
serializeLibraryElement(library);
expect(definingUnit.unlinked.imports.length, lib.importDependencies.length);
- expect(unlinked.references.length, lib.references.length);
+ for (PrelinkedUnit unit in lib.units) {
+ expect(unit.unlinked.references.length, unit.references.length);
+ }
}
@override
@@ -207,19 +209,25 @@ abstract class SummaryTest {
* [expectedName]. If [expectedPrefix] is supplied, verify that the type is
* reached via the given prefix. If [allowTypeParameters] is true, allow the
* type reference to supply type parameters. [expectedKind] is the kind of
- * object referenced.
+ * object referenced. [sourceUnit] is the compilation unit within which the
+ * [typeRef] appears; if not specified it is assumed to be the defining
+ * compilation unit. [expectedTargetUnit] is the index of the compilation
+ * unit in which the target of the [typeRef] is expected to appear; if not
+ * specified it is assumed to be the defining compilation unit.
*/
void checkTypeRef(UnlinkedTypeRef typeRef, String absoluteUri,
String relativeUri, String expectedName,
{String expectedPrefix,
bool allowTypeParameters: false,
PrelinkedReferenceKind expectedKind: PrelinkedReferenceKind.classOrEnum,
- int expectedUnit: 0}) {
+ int expectedTargetUnit: 0,
+ PrelinkedUnit sourceUnit}) {
+ sourceUnit ??= definingUnit;
expect(typeRef, new isInstanceOf<UnlinkedTypeRef>());
expect(typeRef.paramReference, 0);
int index = typeRef.reference;
- UnlinkedReference reference = unlinked.references[index];
- PrelinkedReference referenceResolution = lib.references[index];
+ UnlinkedReference reference = sourceUnit.unlinked.references[index];
+ PrelinkedReference referenceResolution = sourceUnit.references[index];
if (absoluteUri == null) {
expect(referenceResolution.dependency, 0);
} else {
@@ -243,7 +251,7 @@ abstract class SummaryTest {
}
}
expect(referenceResolution.kind, expectedKind);
- expect(referenceResolution.unit, expectedUnit);
+ expect(referenceResolution.unit, expectedTargetUnit);
}
/**
@@ -451,8 +459,7 @@ abstract class SummaryTest {
UnlinkedTypeRef serializeTypeText(String text,
{String otherDeclarations: '', bool allowErrors: false}) {
return serializeVariableText('$otherDeclarations\n$text v;',
- allowErrors: allowErrors)
- .type;
+ allowErrors: allowErrors).type;
}
/**
@@ -1702,6 +1709,18 @@ a.Stream s;
checkDynamicTypeRef(serializeTypeText('dynamic'));
}
+ test_type_reference_from_part() {
+ addNamedSource('/a.dart', 'part of foo; C v;');
+ serializeLibraryText('library foo; part "a.dart"; class C {}');
+ checkTypeRef(
+ findVariable('v', variables: lib.units[1].unlinked.variables).type,
+ null,
+ null,
+ 'C',
+ expectedKind: PrelinkedReferenceKind.classOrEnum,
+ sourceUnit: lib.units[1]);
+ }
+
test_type_reference_to_class_argument() {
UnlinkedClass cls = serializeClassText('class C<T, U> { T t; U u; }');
{
@@ -1743,7 +1762,7 @@ a.Stream s;
absUri('/a.dart'),
'a.dart',
'C',
- expectedUnit: 1);
+ expectedTargetUnit: 1);
}
test_type_reference_to_imported_part_with_prefix() {
@@ -1756,7 +1775,7 @@ a.Stream s;
'a.dart',
'C',
expectedPrefix: 'p',
- expectedUnit: 1);
+ expectedTargetUnit: 1);
}
test_type_reference_to_internal_class() {
@@ -1786,7 +1805,7 @@ a.Stream s;
null,
null,
'C',
- expectedUnit: 1);
+ expectedTargetUnit: 1);
}
test_type_reference_to_nonexistent_file_via_prefix() {
@@ -1795,6 +1814,18 @@ a.Stream s;
checkUnresolvedTypeRef(typeRef, 'p', 'C');
}
+ test_type_reference_to_part() {
+ addNamedSource('/a.dart', 'part of foo; class C {}');
+ checkTypeRef(
+ serializeTypeText('C',
+ otherDeclarations: 'library foo; part "a.dart";'),
+ null,
+ null,
+ 'C',
+ expectedKind: PrelinkedReferenceKind.classOrEnum,
+ expectedTargetUnit: 1);
+ }
+
test_type_reference_to_typedef() {
checkTypeRef(serializeTypeText('F', otherDeclarations: 'typedef void F();'),
null, null, 'F',
@@ -1810,7 +1841,8 @@ a.Stream s;
// The referenced unit should be 2, since unit 0 is a.dart and unit 1 is
// b.dart. a.dart and b.dart are counted even though nothing is imported
// from them.
- checkTypeRef(typeRef, absUri('/a.dart'), 'a.dart', 'C', expectedUnit: 2);
+ checkTypeRef(typeRef, absUri('/a.dart'), 'a.dart', 'C',
+ expectedTargetUnit: 2);
}
test_type_unresolved() {
« no previous file with comments | « pkg/analyzer/lib/src/summary/summarize_elements.dart ('k') | pkg/analyzer/tool/summary/idl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698