Don't report CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE when patterns is enabled.

Change-Id: I780ab9a9c82e115d254c61311ac8015f46db12aa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/273540
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov 2022-12-02 22:57:21 +00:00 committed by Commit Queue
parent 48d0d95edb
commit 95a390cfd9

View file

@ -5,6 +5,7 @@
import 'package:analyzer/src/error/codes.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../generated/test_support.dart';
import '../dart/resolution/context_collection_resolution.dart';
main() {
@ -19,17 +20,8 @@ main() {
class CaseExpressionTypeIsNotSwitchExpressionSubtypeTest
extends PubPackageResolutionTest
with CaseExpressionTypeIsNotSwitchExpressionSubtypeTestCases {
@FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/50502')
@override
test_notSubtype() {
return super.test_notSubtype();
}
@FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/50502')
@override
test_subtype() {
return super.test_subtype();
}
_Variant get _variant => _Variant.patterns;
}
@reflectiveTest
@ -37,16 +29,37 @@ class CaseExpressionTypeIsNotSwitchExpressionSubtypeTest_Language218
extends PubPackageResolutionTest
with
WithLanguage218Mixin,
CaseExpressionTypeIsNotSwitchExpressionSubtypeTestCases {}
CaseExpressionTypeIsNotSwitchExpressionSubtypeTestCases {
@override
_Variant get _variant => _Variant.nullSafe;
}
mixin CaseExpressionTypeIsNotSwitchExpressionSubtypeTestCases
on PubPackageResolutionTest {
CompileTimeErrorCode get _errorCode {
return CompileTimeErrorCode
.CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE;
}
_Variant get _variant;
test_notSubtype() async {
final List<ExpectedError> expectedErrors;
switch (_variant) {
case _Variant.nullSafe:
expectedErrors = [
error(
CompileTimeErrorCode
.CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE,
145,
2),
error(
CompileTimeErrorCode
.CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE,
171,
10),
];
break;
case _Variant.patterns:
expectedErrors = [];
break;
}
await assertErrorsInCode('''
class A {
const A();
@ -63,14 +76,11 @@ void f(A e) {
switch (e) {
case B0:
break;
case B(1):
case const B(1):
break;
}
}
''', [
error(_errorCode, 145, 2),
error(_errorCode, 171, 4),
]);
''', expectedErrors);
}
test_subtype() async {
@ -90,12 +100,14 @@ class C extends A {
void f(A e) {
switch (e) {
case B(0):
case const B(0):
break;
case C(0):
case const C(0):
break;
}
}
''');
}
}
enum _Variant { nullSafe, patterns }