Index: pkg/analyzer/test/src/summary/summary_common.dart |
diff --git a/pkg/analyzer/test/src/summary/summary_common.dart b/pkg/analyzer/test/src/summary/summary_common.dart |
index a90342c400bfe5ca9fe534ad0f3543d00ce8f788..23b0a29f64517b7b11d0425f34b4c607b417e398 100644 |
--- a/pkg/analyzer/test/src/summary/summary_common.dart |
+++ b/pkg/analyzer/test/src/summary/summary_common.dart |
@@ -1076,6 +1076,11 @@ class E {} |
expect(cls.hasNoSupertype, isFalse); |
} |
+ test_class_codeRange() { |
+ UnlinkedClass cls = serializeClassText(' class C {}'); |
+ _assertCodeRange(cls.codeRange, 1, 10); |
+ } |
+ |
test_class_concrete() { |
UnlinkedClass cls = serializeClassText('class C {}'); |
expect(cls.isAbstract, false); |
@@ -4010,6 +4015,7 @@ typedef F(); |
expect(e.values, hasLength(1)); |
expect(e.values[0].name, 'v1'); |
expect(e.values[0].nameOffset, text.indexOf('v1')); |
+ _assertCodeRange(e.codeRange, 0, 13); |
expect(unlinkedUnits[0].publicNamespace.names, hasLength(1)); |
expect(unlinkedUnits[0].publicNamespace.names[0].kind, |
ReferenceKind.classOrEnum); |
@@ -4410,6 +4416,7 @@ get g { // 1 |
expect(executable.isExternal, isFalse); |
expect(executable.visibleOffset, 0); |
expect(executable.visibleLength, 0); |
+ _assertCodeRange(executable.codeRange, 10, 6); |
} |
test_executable_member_function_explicit_return() { |
@@ -4433,6 +4440,7 @@ get g { // 1 |
expect(executable.kind, UnlinkedExecutableKind.getter); |
expect(executable.returnType, isNotNull); |
expect(executable.isExternal, isFalse); |
+ _assertCodeRange(executable.codeRange, 10, 15); |
expect(findVariable('f', variables: cls.fields), isNull); |
expect(findExecutable('f=', executables: cls.executables), isNull); |
} |
@@ -4451,6 +4459,7 @@ get g { // 1 |
expect(executable.kind, UnlinkedExecutableKind.setter); |
expect(executable.returnType, isNotNull); |
expect(executable.isExternal, isFalse); |
+ _assertCodeRange(executable.codeRange, 10, 20); |
expect(findVariable('f', variables: cls.fields), isNull); |
expect(findExecutable('f', executables: cls.executables), isNull); |
} |
@@ -4572,6 +4581,12 @@ get g { // 1 |
expect(executable.name, '<='); |
} |
+ test_executable_param_codeRange() { |
+ UnlinkedExecutable executable = serializeExecutableText('f(int x) {}'); |
+ UnlinkedParam parameter = executable.parameters[0]; |
+ _assertCodeRange(parameter.codeRange, 2, 5); |
+ } |
+ |
test_executable_param_function_typed() { |
if (!checkAstDerivedData) { |
// TODO(paulberry): this test fails when building the summary from the |
@@ -6794,6 +6809,13 @@ bool f() => true; |
checkDynamicTypeRef(serializeTypeText('dynamic')); |
} |
+ test_type_param_codeRange() { |
+ UnlinkedClass cls = |
+ serializeClassText('class A {} class C<T extends A> {}'); |
+ UnlinkedTypeParam typeParameter = cls.typeParameters[0]; |
+ _assertCodeRange(typeParameter.codeRange, 19, 11); |
+ } |
+ |
test_type_param_not_shadowed_by_constructor() { |
UnlinkedClass cls = |
serializeClassText('class C<D> { D x; C.D(); } class D {}'); |
@@ -7052,6 +7074,11 @@ b.C c4;'''); |
checkUnresolvedTypeRef(typeRef, null, 'Foo'); |
} |
+ test_typedef_codeRange() { |
+ UnlinkedTypedef type = serializeTypedefText('typedef F();'); |
+ _assertCodeRange(type.codeRange, 0, 12); |
+ } |
+ |
test_typedef_documented() { |
String text = ''' |
// Extra comment so doc comment offset != 0 |
@@ -7136,6 +7163,12 @@ typedef F();'''; |
expect(type.typeParameters[1].name, 'U'); |
} |
+ test_unit_codeRange() { |
+ serializeLibraryText(' int a = 1; '); |
+ UnlinkedUnit unit = unlinkedUnits[0]; |
+ _assertCodeRange(unit.codeRange, 0, 14); |
+ } |
+ |
test_unresolved_reference_in_multiple_parts() { |
addNamedSource('/a.dart', 'part of foo; int x; Unresolved y;'); |
serializeLibraryText('library foo; part "a.dart"; Unresolved z;', |
@@ -7177,6 +7210,13 @@ typedef F();'''; |
expect(unlinkedUnits[0].publicNamespace.names[1].numTypeParameters, 0); |
} |
+ test_variable_codeRange() { |
+ serializeLibraryText(' int a = 1, b = 22;'); |
+ List<UnlinkedVariable> variables = unlinkedUnits[0].variables; |
+ _assertCodeRange(variables[0].codeRange, 1, 18); |
+ _assertCodeRange(variables[1].codeRange, 1, 18); |
+ } |
+ |
test_variable_const() { |
UnlinkedVariable variable = |
serializeVariableText('const int i = 0;', variableName: 'i'); |
@@ -7426,6 +7466,12 @@ var v;'''; |
} |
} |
+ void _assertCodeRange(CodeRange codeRange, int offset, int length) { |
+ expect(codeRange, isNotNull); |
+ expect(codeRange.offset, offset); |
+ expect(codeRange.length, length); |
+ } |
+ |
void _assertExecutableVisible(String code, UnlinkedExecutable f, |
String visibleBegin, String visibleEnd) { |
int expectedVisibleOffset = code.indexOf(visibleBegin); |