mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:56:57 +00:00
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:
parent
48d0d95edb
commit
95a390cfd9
|
@ -5,6 +5,7 @@
|
||||||
import 'package:analyzer/src/error/codes.dart';
|
import 'package:analyzer/src/error/codes.dart';
|
||||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||||
|
|
||||||
|
import '../../generated/test_support.dart';
|
||||||
import '../dart/resolution/context_collection_resolution.dart';
|
import '../dart/resolution/context_collection_resolution.dart';
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
|
@ -19,17 +20,8 @@ main() {
|
||||||
class CaseExpressionTypeIsNotSwitchExpressionSubtypeTest
|
class CaseExpressionTypeIsNotSwitchExpressionSubtypeTest
|
||||||
extends PubPackageResolutionTest
|
extends PubPackageResolutionTest
|
||||||
with CaseExpressionTypeIsNotSwitchExpressionSubtypeTestCases {
|
with CaseExpressionTypeIsNotSwitchExpressionSubtypeTestCases {
|
||||||
@FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/50502')
|
|
||||||
@override
|
@override
|
||||||
test_notSubtype() {
|
_Variant get _variant => _Variant.patterns;
|
||||||
return super.test_notSubtype();
|
|
||||||
}
|
|
||||||
|
|
||||||
@FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/50502')
|
|
||||||
@override
|
|
||||||
test_subtype() {
|
|
||||||
return super.test_subtype();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@reflectiveTest
|
@reflectiveTest
|
||||||
|
@ -37,16 +29,37 @@ class CaseExpressionTypeIsNotSwitchExpressionSubtypeTest_Language218
|
||||||
extends PubPackageResolutionTest
|
extends PubPackageResolutionTest
|
||||||
with
|
with
|
||||||
WithLanguage218Mixin,
|
WithLanguage218Mixin,
|
||||||
CaseExpressionTypeIsNotSwitchExpressionSubtypeTestCases {}
|
CaseExpressionTypeIsNotSwitchExpressionSubtypeTestCases {
|
||||||
|
@override
|
||||||
|
_Variant get _variant => _Variant.nullSafe;
|
||||||
|
}
|
||||||
|
|
||||||
mixin CaseExpressionTypeIsNotSwitchExpressionSubtypeTestCases
|
mixin CaseExpressionTypeIsNotSwitchExpressionSubtypeTestCases
|
||||||
on PubPackageResolutionTest {
|
on PubPackageResolutionTest {
|
||||||
CompileTimeErrorCode get _errorCode {
|
_Variant get _variant;
|
||||||
return CompileTimeErrorCode
|
|
||||||
.CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE;
|
|
||||||
}
|
|
||||||
|
|
||||||
test_notSubtype() async {
|
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('''
|
await assertErrorsInCode('''
|
||||||
class A {
|
class A {
|
||||||
const A();
|
const A();
|
||||||
|
@ -63,14 +76,11 @@ void f(A e) {
|
||||||
switch (e) {
|
switch (e) {
|
||||||
case B0:
|
case B0:
|
||||||
break;
|
break;
|
||||||
case B(1):
|
case const B(1):
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
''', [
|
''', expectedErrors);
|
||||||
error(_errorCode, 145, 2),
|
|
||||||
error(_errorCode, 171, 4),
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test_subtype() async {
|
test_subtype() async {
|
||||||
|
@ -90,12 +100,14 @@ class C extends A {
|
||||||
|
|
||||||
void f(A e) {
|
void f(A e) {
|
||||||
switch (e) {
|
switch (e) {
|
||||||
case B(0):
|
case const B(0):
|
||||||
break;
|
break;
|
||||||
case C(0):
|
case const C(0):
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
''');
|
''');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum _Variant { nullSafe, patterns }
|
||||||
|
|
Loading…
Reference in a new issue