Skip to content

Commit 05b4a8f

Browse files
chloestefantsovaCommit Queue
authored andcommitted
[analyzer] Add tests for null-aware elements and LSP navigation
Part of #56989 Change-Id: I24b121ee476f42b2108daddf6c0b63525052434f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/399080 Reviewed-by: Brian Wilkerson <[email protected]> Reviewed-by: Keerti Parthasarathy <[email protected]> Commit-Queue: Chloe Stefantsova <[email protected]>
1 parent e303f54 commit 05b4a8f

File tree

2 files changed

+159
-0
lines changed

2 files changed

+159
-0
lines changed

pkg/analysis_server/test/lsp/definition_test.dart

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,54 @@ class A {
387387
await testContents(contents);
388388
}
389389

390+
Future<void> test_function_inNullAwareElement_inList() async {
391+
var contents = '''
392+
bool? [!foo!]() => null;
393+
394+
bar() {
395+
return [?fo^o()];
396+
}
397+
''';
398+
399+
await testContents(contents);
400+
}
401+
402+
Future<void> test_function_inNullAwareElement_inSet() async {
403+
var contents = '''
404+
bool? [!foo!]() => null;
405+
406+
bar() {
407+
return {?fo^o()};
408+
}
409+
''';
410+
411+
await testContents(contents);
412+
}
413+
414+
Future<void> test_function_inNullAwareKey_inMap() async {
415+
var contents = '''
416+
bool? [!foo!]() => null;
417+
418+
bar() {
419+
return {?fo^o(): "value"};
420+
}
421+
''';
422+
423+
await testContents(contents);
424+
}
425+
426+
Future<void> test_function_inNullAwareValue_inMap() async {
427+
var contents = '''
428+
bool? [!foo!]() => null;
429+
430+
bar() {
431+
return {"key": ?fo^o()};
432+
}
433+
''';
434+
435+
await testContents(contents);
436+
}
437+
390438
Future<void> test_functionInPattern() async {
391439
var contents = '''
392440
bool [!greater!](int x, int y) => x > y;
@@ -843,6 +891,54 @@ class [!A!]<T> {}
843891
await testContents(contents);
844892
}
845893

894+
Future<void> test_type_inNullAwareElement_inList() async {
895+
var contents = '''
896+
f() {
897+
final a = [?A^];
898+
}
899+
900+
class [!A!] {}
901+
''';
902+
903+
await testContents(contents);
904+
}
905+
906+
Future<void> test_type_inNullAwareElement_inSet() async {
907+
var contents = '''
908+
f() {
909+
final a = {?A^};
910+
}
911+
912+
class [!A!] {}
913+
''';
914+
915+
await testContents(contents);
916+
}
917+
918+
Future<void> test_type_inNullAwareKey_inMap() async {
919+
var contents = '''
920+
f() {
921+
final a = {?A^, "value"};
922+
}
923+
924+
class [!A!] {}
925+
''';
926+
927+
await testContents(contents);
928+
}
929+
930+
Future<void> test_type_inNullAwareValue_inMap() async {
931+
var contents = '''
932+
f() {
933+
final a = {"key": ?A^};
934+
}
935+
936+
class [!A!] {}
937+
''';
938+
939+
await testContents(contents);
940+
}
941+
846942
Future<void> test_unopenFile() async {
847943
var contents = '''
848944
[!foo!]() {

pkg/analysis_server/test/lsp/super_test.dart

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,69 @@ class C extends B {
237237
);
238238
}
239239

240+
Future<void>
241+
test_method_parameter_defaultValue_inNullAwareElement_inList() async {
242+
await verifyGoToSuper(
243+
TestCode.parse('''
244+
class A {
245+
void [!foo!]([List<int> arg = const []]) {}
246+
}
247+
248+
class B extends A {
249+
@override
250+
void foo([List<int> arg = const [?nu^ll]]) {}
251+
}
252+
'''),
253+
);
254+
}
255+
256+
Future<void>
257+
test_method_parameter_defaultValue_inNullAwareElement_inSet() async {
258+
await verifyGoToSuper(
259+
TestCode.parse('''
260+
class A {
261+
void [!foo!]([Set<int> arg = const {}]) {}
262+
}
263+
264+
class B extends A {
265+
@override
266+
void foo([Set<int> arg = const {?nu^ll}]) {}
267+
}
268+
'''),
269+
);
270+
}
271+
272+
Future<void> test_method_parameter_defaultValue_inNullAwareKey_inMap() async {
273+
await verifyGoToSuper(
274+
TestCode.parse('''
275+
class A {
276+
void [!foo!]([Map<int, String> arg = const {}]) {}
277+
}
278+
279+
class B extends A {
280+
@override
281+
void foo([Map<int, String> arg = const {?nu^ll: "value"}]) {}
282+
}
283+
'''),
284+
);
285+
}
286+
287+
Future<void>
288+
test_method_parameter_defaultValue_inNullAwareValue_inMap() async {
289+
await verifyGoToSuper(
290+
TestCode.parse('''
291+
class A {
292+
void [!foo!]([Map<String, int> arg = const {}]) {}
293+
}
294+
295+
class B extends A {
296+
@override
297+
void foo([Map<String, int> arg = const {"key": ?nu^ll}]) {}
298+
}
299+
'''),
300+
);
301+
}
302+
240303
Future<void> test_methodName() async {
241304
await verifyGoToSuper(
242305
TestCode.parse('''

0 commit comments

Comments
 (0)