Skip to content

Commit 4efc3eb

Browse files
FMorschelCommit Queue
authored andcommitted
[DAS] Adds tests for enum defaults to handle private declarations
Bug: #61873 Change-Id: I118d5a4b013d8b962fa9fe10a6e1de326e2ae0fb Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/459760 Auto-Submit: Felipe Morschel <git@fmorschel.dev> Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Samuel Rawlins <srawlins@google.com> Reviewed-by: Paul Berry <paulberry@google.com>
1 parent 8c73b53 commit 4efc3eb

File tree

1 file changed

+112
-0
lines changed

1 file changed

+112
-0
lines changed

pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,60 @@ int f(num x) {
358358
''');
359359
}
360360

361+
Future<void> test_privateEnum() async {
362+
newFile('$testPackageLibPath/enum.dart', r'''
363+
enum _E { first, second }
364+
365+
_E f() => _E.first;
366+
''');
367+
await resolveTestCode('''
368+
import 'enum.dart';
369+
370+
int g() {
371+
return switch (f()) {
372+
};
373+
}
374+
''');
375+
await assertHasFix('''
376+
import 'enum.dart';
377+
378+
int g() {
379+
return switch (f()) {
380+
// TODO: Handle this case.
381+
_ => throw UnimplementedError(),
382+
};
383+
}
384+
''');
385+
}
386+
387+
Future<void> test_privateEnumConstant() async {
388+
newFile('$testPackageLibPath/enum.dart', r'''
389+
enum E { first, second, _unknown }
390+
''');
391+
await resolveTestCode('''
392+
import 'enum.dart';
393+
394+
int g(E e) {
395+
return switch (e) {
396+
};
397+
}
398+
''');
399+
await assertHasFix('''
400+
import 'enum.dart';
401+
402+
int g(E e) {
403+
return switch (e) {
404+
// TODO: Handle this case.
405+
E.first => throw UnimplementedError(),
406+
// TODO: Handle this case.
407+
E.second => throw UnimplementedError(),
408+
// TODO: Handle this case.
409+
_ => throw UnimplementedError(),
410+
};
411+
}
412+
''');
413+
}
414+
361415
Future<void> test_sealed_impl() async {
362416
var otherRoot = getFolder('$packagesRootPath/other');
363417
newFile('$otherRoot/lib/src/private.dart', '''
@@ -884,6 +938,64 @@ void f(num x) {
884938
''');
885939
}
886940

941+
Future<void> test_privateEnum() async {
942+
newFile('$testPackageLibPath/enum.dart', r'''
943+
enum _E { first, second }
944+
945+
_E f() => _E.first;
946+
''');
947+
await resolveTestCode('''
948+
import 'enum.dart';
949+
950+
int g() {
951+
switch (f()) {
952+
}
953+
}
954+
''');
955+
await assertHasFix('''
956+
import 'enum.dart';
957+
958+
int g() {
959+
switch (f()) {
960+
default:
961+
// TODO: Handle this case.
962+
throw UnimplementedError();
963+
}
964+
}
965+
''');
966+
}
967+
968+
Future<void> test_privateEnumConstant() async {
969+
newFile('$testPackageLibPath/enum.dart', r'''
970+
enum E { first, second, _unknown }
971+
''');
972+
await resolveTestCode('''
973+
import 'enum.dart';
974+
975+
int g(E e) {
976+
switch (e) {
977+
}
978+
}
979+
''');
980+
await assertHasFix('''
981+
import 'enum.dart';
982+
983+
int g(E e) {
984+
switch (e) {
985+
case E.first:
986+
// TODO: Handle this case.
987+
throw UnimplementedError();
988+
case E.second:
989+
// TODO: Handle this case.
990+
throw UnimplementedError();
991+
default:
992+
// TODO: Handle this case.
993+
throw UnimplementedError();
994+
}
995+
}
996+
''');
997+
}
998+
887999
Future<void> test_static() async {
8881000
await resolveTestCode('''
8891001
enum E {

0 commit comments

Comments
 (0)