Skip to content

Commit 7f31e31

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Migrate many analyzer resolution and diagnostics tests.
Change-Id: I28af838697c4956c0df02d860f616f694d9b982e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/396200 Reviewed-by: Samuel Rawlins <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 779a433 commit 7f31e31

25 files changed

+1029
-337
lines changed

pkg/analyzer/analyzer_use_new_elements.txt

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -259,32 +259,10 @@ test/src/dart/resolution/library_import_prefix_test.dart
259259
test/src/dart/resolution/local_function_test.dart
260260
test/src/dart/resolution/local_variable_test.dart
261261
test/src/dart/resolution/metadata_test.dart
262-
test/src/dart/resolution/method_declaration_test.dart
263-
test/src/dart/resolution/method_invocation_test.dart
264-
test/src/dart/resolution/mixin_test.dart
265-
test/src/dart/resolution/non_nullable_test.dart
266-
test/src/dart/resolution/optional_const_test.dart
267262
test/src/dart/resolution/prefix_element_test.dart
268-
test/src/dart/resolution/prefixed_identifier_test.dart
269-
test/src/dart/resolution/property_access_test.dart
270263
test/src/dart/resolution/resolution.dart
271264
test/src/dart/resolution/scope_test.dart
272-
test/src/dart/resolution/simple_identifier_test.dart
273265
test/src/dart/resolution/super_formal_parameter_test.dart
274-
test/src/dart/resolution/top_level_variable_test.dart
275-
test/src/dart/resolution/top_type_inference_test.dart
276-
test/src/dart/resolution/type_inference/function_expression_test.dart
277-
test/src/dart/resolution/type_inference/inference_update_1_test.dart
278-
test/src/dart/resolution/type_inference/local_variable_test.dart
279-
test/src/dart/resolution/type_inference/tear_off_test.dart
280-
test/src/diagnostics/conflicting_generic_interfaces_test.dart
281-
test/src/diagnostics/instance_access_to_static_member_test.dart
282-
test/src/diagnostics/invalid_uri_test.dart
283-
test/src/diagnostics/mixin_application_not_implemented_interface_test.dart
284-
test/src/diagnostics/mock_sdk_test.dart
285-
test/src/diagnostics/referenced_before_declaration_test.dart
286-
test/src/diagnostics/top_level_instance_getter_test.dart
287-
test/src/diagnostics/type_argument_not_matching_bounds_test.dart
288266
test/src/lint/lint_rule_test.dart
289267
test/src/lint/linter/linter_context_impl_test.dart
290268
test/src/services/top_level_declarations_test.dart

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

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,14 @@ class A {
2525
}
2626
''');
2727

28-
assertElement(
29-
findNode.simple('foo + 1'),
30-
findElement.getter('foo', of: 'A'),
31-
);
28+
var node = findNode.simple('foo + 1');
29+
assertResolvedNodeText(node, r'''
30+
SimpleIdentifier
31+
token: foo
32+
staticElement: <testLibraryFragment>::@class::A::@getter::foo
33+
element: <testLibraryFragment>::@class::A::@getter::foo#element
34+
staticType: int
35+
''');
3236
}
3337

3438
test_formalParameterScope_type() async {
@@ -42,15 +46,23 @@ class B {
4246
}
4347
''');
4448

45-
assertElement(
46-
findNode.namedType('a a'),
47-
findElement.class_('a'),
48-
);
49+
var node1 = findNode.namedType('a a');
50+
assertResolvedNodeText(node1, r'''
51+
NamedType
52+
name: a
53+
element: <testLibraryFragment>::@class::a
54+
element2: <testLibrary>::@class::a
55+
type: a
56+
''');
4957

50-
assertElement(
51-
findNode.simple('a;'),
52-
findElement.parameter('a'),
53-
);
58+
var node2 = findNode.simple('a;');
59+
assertResolvedNodeText(node2, r'''
60+
SimpleIdentifier
61+
token: a
62+
staticElement: <testLibraryFragment>::@class::B::@method::bar::@parameter::a
63+
element: <testLibraryFragment>::@class::B::@method::bar::@parameter::a#element
64+
staticType: a
65+
''');
5466
}
5567

5668
test_formalParameterScope_wildcardVariable() async {

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7724,10 +7724,11 @@ void f() {
77247724
}
77257725
''');
77267726

7727-
var element = findNode.simple('a:').staticElement!;
77287727
// See https://github.com/dart-lang/sdk/issues/54669 for why we check for
77297728
// isNotNull despite #50660 suggesting the source would be null.
7730-
expect(element.source, isNotNull);
7729+
var element = findNode.simple('a:').element!;
7730+
var libraryFragment2 = element.firstFragment.libraryFragment!;
7731+
expect(libraryFragment2.source, isNotNull);
77317732
}
77327733

77337734
test_remainder_int_context_cascaded() async {

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

Lines changed: 34 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analyzer/src/error/codes.dart';
6-
import 'package:test/test.dart';
76
import 'package:test_reflective_loader/test_reflective_loader.dart';
87

98
import 'context_collection_resolution.dart';
@@ -62,69 +61,15 @@ const a = 0;
6261
mixin M {}
6362
''');
6463

65-
var aRef = findNode.commentReference('a]').expression;
66-
assertElement(aRef, findElement.topGet('a'));
67-
assertTypeNull(aRef);
68-
}
69-
70-
test_element() async {
71-
await assertNoErrorsInCode(r'''
72-
mixin M {}
73-
''');
74-
75-
var mixin = findNode.mixin('mixin M');
76-
var element = findElement.mixin('M');
77-
assertElement(mixin, element);
78-
79-
expect(element.typeParameters, isEmpty);
80-
81-
expect(element.supertype, isNull);
82-
expect(element.thisType.isDartCoreObject, isFalse);
83-
84-
assertElementTypes(
85-
element.superclassConstraints,
86-
['Object'],
87-
);
88-
assertElementTypes(element.interfaces, []);
89-
}
90-
91-
test_element_allSupertypes() async {
92-
await assertNoErrorsInCode(r'''
93-
class A {}
94-
class B {}
95-
class C {}
96-
97-
mixin M1 on A, B {}
98-
mixin M2 on A implements B, C {}
99-
''');
100-
101-
assertElementTypes(
102-
findElement.mixin('M1').allSupertypes,
103-
['Object', 'A', 'B'],
104-
);
105-
assertElementTypes(
106-
findElement.mixin('M2').allSupertypes,
107-
['Object', 'A', 'B', 'C'],
108-
);
109-
}
110-
111-
test_element_allSupertypes_generic() async {
112-
await assertNoErrorsInCode(r'''
113-
class A<T, U> {}
114-
class B<T> extends A<int, T> {}
115-
116-
mixin M1 on A<int, double> {}
117-
mixin M2 on B<String> {}
64+
var node = findNode.commentReference('a]');
65+
assertResolvedNodeText(node, r'''
66+
CommentReference
67+
expression: SimpleIdentifier
68+
token: a
69+
staticElement: <testLibraryFragment>::@getter::a
70+
element: <testLibraryFragment>::@getter::a#element
71+
staticType: null
11872
''');
119-
120-
assertElementTypes(
121-
findElement.mixin('M1').allSupertypes,
122-
['Object', 'A<int, double>'],
123-
);
124-
assertElementTypes(
125-
findElement.mixin('M2').allSupertypes,
126-
['Object', 'A<int, String>', 'B<String>'],
127-
);
12873
}
12974

13075
test_field() async {
@@ -249,16 +194,18 @@ const a = 0;
249194
mixin M {}
250195
''');
251196

252-
var a = findElement.topGet('a');
253-
var element = findElement.mixin('M');
254-
255-
var metadata = element.metadata;
256-
expect(metadata, hasLength(1));
257-
expect(metadata[0].element, same(a));
258-
259-
var annotation = findNode.annotation('@a');
260-
assertElement(annotation, a);
261-
expect(annotation.elementAnnotation, same(metadata[0]));
197+
var node = findNode.annotation('@a');
198+
assertResolvedNodeText(node, r'''
199+
Annotation
200+
atSign: @
201+
name: SimpleIdentifier
202+
token: a
203+
staticElement: <testLibraryFragment>::@getter::a
204+
element: <testLibraryFragment>::@getter::a#element
205+
staticType: null
206+
element: <testLibraryFragment>::@getter::a
207+
element2: <testLibraryFragment>::@getter::a#element
208+
''');
262209
}
263210

264211
test_method() async {
@@ -401,9 +348,20 @@ mixin M on A {
401348
class X extends A with M {}
402349
''');
403350

404-
var access = findNode.propertyAccess('super.foo;');
405-
assertElement(access, findElement.getter('foo'));
406-
assertType(access, 'int');
351+
var node = findNode.propertyAccess('super.foo;');
352+
assertResolvedNodeText(node, r'''
353+
PropertyAccess
354+
target: SuperExpression
355+
superKeyword: super
356+
staticType: M
357+
operator: .
358+
propertyName: SimpleIdentifier
359+
token: foo
360+
staticElement: <testLibraryFragment>::@class::A::@getter::foo
361+
element: <testLibraryFragment>::@class::A::@getter::foo#element
362+
staticType: int
363+
staticType: int
364+
''');
407365
}
408366

409367
test_superInvocation_method() async {

0 commit comments

Comments
 (0)