Skip to content

Commit 651206e

Browse files
johnniwintherCommit Queue
authored andcommitted
[analyzer] Add default type to ResolvedAstPrinter
This includes the default type of TypeParameterFragmentImpl. This is done to enable direct testing of the changes in https://dart-review.googlesource.com/c/sdk/+/427702 Change-Id: Ie36e717fed141ad4e532f4a7637aef8944b41ba1 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/430381 Reviewed-by: Konstantin Shcheglov <[email protected]>
1 parent 9be682a commit 651206e

14 files changed

+329
-0
lines changed

pkg/analyzer/test/generated/strong_mode_test.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3570,6 +3570,7 @@ FunctionDeclaration
35703570
TypeParameter
35713571
name: T
35723572
declaredElement: T@4
3573+
defaultType: dynamic
35733574
rightBracket: >
35743575
parameters: FormalParameterList
35753576
leftParenthesis: (
@@ -3621,6 +3622,7 @@ FunctionDeclaration
36213622
element2: dart:core::@class::num
36223623
type: num
36233624
declaredElement: T@4
3625+
defaultType: num
36243626
rightBracket: >
36253627
parameters: FormalParameterList
36263628
leftParenthesis: (
@@ -3682,6 +3684,7 @@ MethodDeclaration
36823684
TypeParameter
36833685
name: T
36843686
declaredElement: T@26
3687+
defaultType: dynamic
36853688
rightBracket: >
36863689
parameters: FormalParameterList
36873690
leftParenthesis: (
@@ -4576,6 +4579,7 @@ MethodDeclaration
45764579
TypeParameter
45774580
name: T
45784581
declaredElement: T@61
4582+
defaultType: dynamic
45794583
rightBracket: >
45804584
parameters: FormalParameterList
45814585
leftParenthesis: (

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,7 @@ MethodDeclaration
443443
TypeParameter
444444
name: U
445445
declaredElement: U@27
446+
defaultType: dynamic
446447
rightBracket: >
447448
parameters: FormalParameterList
448449
leftParenthesis: (

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ MethodDeclaration
244244
TypeParameter
245245
name: U
246246
declaredElement: U@41
247+
defaultType: dynamic
247248
rightBracket: >
248249
parameters: FormalParameterList
249250
leftParenthesis: (
@@ -303,9 +304,11 @@ ExtensionTypeDeclaration
303304
TypeParameter
304305
name: T
305306
declaredElement: T@17
307+
defaultType: dynamic
306308
TypeParameter
307309
name: U
308310
declaredElement: U@20
311+
defaultType: dynamic
309312
rightBracket: >
310313
representation: RepresentationDeclaration
311314
leftParenthesis: (
@@ -352,9 +355,11 @@ ExtensionTypeDeclaration
352355
TypeParameter
353356
name: _
354357
declaredElement: _@18
358+
defaultType: dynamic
355359
TypeParameter
356360
name: _
357361
declaredElement: _@21
362+
defaultType: dynamic
358363
TypeParameter
359364
name: _
360365
extendsKeyword: extends
@@ -363,6 +368,7 @@ ExtensionTypeDeclaration
363368
element2: dart:core::@class::num
364369
type: num
365370
declaredElement: _@24
371+
defaultType: num
366372
rightBracket: >
367373
representation: RepresentationDeclaration
368374
leftParenthesis: (

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ FieldFormalParameter
7474
TypeParameter
7575
name: U
7676
declaredElement: U@45
77+
defaultType: null
7778
rightBracket: >
7879
parameters: FormalParameterList
7980
leftParenthesis: (
@@ -115,9 +116,11 @@ FieldFormalParameter
115116
TypeParameter
116117
name: T
117118
declaredElement: T@54
119+
defaultType: null
118120
TypeParameter
119121
name: U
120122
declaredElement: U@57
123+
defaultType: null
121124
rightBracket: >
122125
parameters: FormalParameterList
123126
leftParenthesis: (

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,11 @@ FunctionDeclarationStatement
4242
TypeParameter
4343
name: T
4444
declaredElement: T@17
45+
defaultType: null
4546
TypeParameter
4647
name: U
4748
declaredElement: U@20
49+
defaultType: null
4850
rightBracket: >
4951
parameters: FormalParameterList
5052
leftParenthesis: (
@@ -111,9 +113,11 @@ FunctionDeclarationStatement
111113
element2: U@33
112114
type: U
113115
declaredElement: T@20
116+
defaultType: null
114117
TypeParameter
115118
name: U
116119
declaredElement: U@33
120+
defaultType: null
117121
TypeParameter
118122
name: V
119123
extendsKeyword: extends
@@ -122,6 +126,7 @@ FunctionDeclarationStatement
122126
element2: U@33
123127
type: U
124128
declaredElement: V@36
129+
defaultType: null
125130
rightBracket: >
126131
parameters: FormalParameterList
127132
leftParenthesis: (
@@ -188,6 +193,7 @@ FunctionDeclarationStatement
188193
TypeParameter
189194
name: T
190195
declaredElement: T@20
196+
defaultType: null
191197
rightBracket: >
192198
parameters: FormalParameterList
193199
leftParenthesis: (
@@ -244,6 +250,7 @@ FunctionDeclarationStatement
244250
TypeParameter
245251
name: T
246252
declaredElement: T@20
253+
defaultType: null
247254
rightBracket: >
248255
parameters: FormalParameterList
249256
leftParenthesis: (
@@ -300,6 +307,7 @@ FunctionDeclarationStatement
300307
TypeParameter
301308
name: T
302309
declaredElement: T@20
310+
defaultType: null
303311
rightBracket: >
304312
parameters: FormalParameterList
305313
leftParenthesis: (
@@ -357,6 +365,7 @@ FunctionDeclarationStatement
357365
TypeParameter
358366
name: T
359367
declaredElement: T@20
368+
defaultType: null
360369
rightBracket: >
361370
parameters: FormalParameterList
362371
leftParenthesis: (

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

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,200 @@ SimpleIdentifier
158158
''');
159159
}
160160

161+
test_genericFunction_fBoundedDefaultType() async {
162+
await assertNoErrorsInCode('''
163+
void m<T extends List<T>>() {}
164+
''');
165+
166+
var node = findNode.singleFunctionDeclaration;
167+
assertResolvedNodeText(node, r'''
168+
FunctionDeclaration
169+
returnType: NamedType
170+
name: void
171+
element2: <null>
172+
type: void
173+
name: m
174+
functionExpression: FunctionExpression
175+
typeParameters: TypeParameterList
176+
leftBracket: <
177+
typeParameters
178+
TypeParameter
179+
name: T
180+
extendsKeyword: extends
181+
bound: NamedType
182+
name: List
183+
typeArguments: TypeArgumentList
184+
leftBracket: <
185+
arguments
186+
NamedType
187+
name: T
188+
element2: T@7
189+
type: T
190+
rightBracket: >
191+
element2: dart:core::@class::List
192+
type: List<T>
193+
declaredElement: T@7
194+
defaultType: List<dynamic>
195+
rightBracket: >
196+
parameters: FormalParameterList
197+
leftParenthesis: (
198+
rightParenthesis: )
199+
body: BlockFunctionBody
200+
block: Block
201+
leftBracket: {
202+
rightBracket: }
203+
declaredElement: <testLibraryFragment>::@function::m
204+
type: void Function<T extends List<T>>()
205+
staticType: void Function<T extends List<T>>()
206+
declaredElement: <testLibraryFragment>::@function::m
207+
type: void Function<T extends List<T>>()
208+
''');
209+
}
210+
211+
test_genericFunction_simpleDefaultType() async {
212+
await assertNoErrorsInCode('''
213+
void m<T extends num>() {}
214+
''');
215+
216+
var node = findNode.singleFunctionDeclaration;
217+
assertResolvedNodeText(node, r'''
218+
FunctionDeclaration
219+
returnType: NamedType
220+
name: void
221+
element2: <null>
222+
type: void
223+
name: m
224+
functionExpression: FunctionExpression
225+
typeParameters: TypeParameterList
226+
leftBracket: <
227+
typeParameters
228+
TypeParameter
229+
name: T
230+
extendsKeyword: extends
231+
bound: NamedType
232+
name: num
233+
element2: dart:core::@class::num
234+
type: num
235+
declaredElement: T@7
236+
defaultType: num
237+
rightBracket: >
238+
parameters: FormalParameterList
239+
leftParenthesis: (
240+
rightParenthesis: )
241+
body: BlockFunctionBody
242+
block: Block
243+
leftBracket: {
244+
rightBracket: }
245+
declaredElement: <testLibraryFragment>::@function::m
246+
type: void Function<T extends num>()
247+
staticType: void Function<T extends num>()
248+
declaredElement: <testLibraryFragment>::@function::m
249+
type: void Function<T extends num>()
250+
''');
251+
}
252+
253+
test_genericLocalFunction_fBoundedDefaultType() async {
254+
await assertErrorsInCode(
255+
'''
256+
void f() {
257+
void m<T extends List<T>>() {}
258+
}
259+
''',
260+
[error(WarningCode.UNUSED_ELEMENT, 18, 1)],
261+
);
262+
263+
var node = findNode.singleFunctionDeclarationStatement.functionDeclaration;
264+
assertResolvedNodeText(node, r'''
265+
FunctionDeclaration
266+
returnType: NamedType
267+
name: void
268+
element2: <null>
269+
type: void
270+
name: m
271+
functionExpression: FunctionExpression
272+
typeParameters: TypeParameterList
273+
leftBracket: <
274+
typeParameters
275+
TypeParameter
276+
name: T
277+
extendsKeyword: extends
278+
bound: NamedType
279+
name: List
280+
typeArguments: TypeArgumentList
281+
leftBracket: <
282+
arguments
283+
NamedType
284+
name: T
285+
element2: T@20
286+
type: T
287+
rightBracket: >
288+
element2: dart:core::@class::List
289+
type: List<T>
290+
declaredElement: T@20
291+
defaultType: null
292+
rightBracket: >
293+
parameters: FormalParameterList
294+
leftParenthesis: (
295+
rightParenthesis: )
296+
body: BlockFunctionBody
297+
block: Block
298+
leftBracket: {
299+
rightBracket: }
300+
declaredElement: m@18
301+
type: void Function<T extends List<T>>()
302+
staticType: void Function<T extends List<T>>()
303+
declaredElement: m@18
304+
type: void Function<T extends List<T>>()
305+
''');
306+
}
307+
308+
test_genericLocalFunction_simpleDefaultType() async {
309+
await assertErrorsInCode(
310+
'''
311+
void f() {
312+
void m<T extends num>() {}
313+
}
314+
''',
315+
[error(WarningCode.UNUSED_ELEMENT, 18, 1)],
316+
);
317+
318+
var node = findNode.singleFunctionDeclarationStatement.functionDeclaration;
319+
assertResolvedNodeText(node, r'''
320+
FunctionDeclaration
321+
returnType: NamedType
322+
name: void
323+
element2: <null>
324+
type: void
325+
name: m
326+
functionExpression: FunctionExpression
327+
typeParameters: TypeParameterList
328+
leftBracket: <
329+
typeParameters
330+
TypeParameter
331+
name: T
332+
extendsKeyword: extends
333+
bound: NamedType
334+
name: num
335+
element2: dart:core::@class::num
336+
type: num
337+
declaredElement: T@20
338+
defaultType: null
339+
rightBracket: >
340+
parameters: FormalParameterList
341+
leftParenthesis: (
342+
rightParenthesis: )
343+
body: BlockFunctionBody
344+
block: Block
345+
leftBracket: {
346+
rightBracket: }
347+
declaredElement: m@18
348+
type: void Function<T extends num>()
349+
staticType: void Function<T extends num>()
350+
declaredElement: m@18
351+
type: void Function<T extends num>()
352+
''');
353+
}
354+
161355
test_getter_formalParameters() async {
162356
await assertErrorsInCode(
163357
'''
@@ -386,6 +580,7 @@ TypeParameter
386580
TypeParameter
387581
name: _
388582
declaredElement: _@31
583+
defaultType: null
389584
rightBracket: >
390585
parameters: FormalParameterList
391586
leftParenthesis: (
@@ -416,6 +611,7 @@ TypeParameter
416611
type: void Function<_>(InvalidType, InvalidType)
417612
type: void Function<_>(InvalidType, InvalidType)
418613
declaredElement: _@7
614+
defaultType: void Function<_>(InvalidType, InvalidType)
419615
''');
420616
}
421617
}

0 commit comments

Comments
 (0)