@@ -16,6 +16,96 @@ main() {
16
16
@reflectiveTest
17
17
class PatternTypeMismatchInIrrefutableContextTest
18
18
extends PubPackageResolutionTest {
19
+ test_assignedVariablePattern_recordDestruction_hasCall () async {
20
+ await assertErrorsInCode (r'''
21
+ void f(int Function(int) a, (A,) x) {
22
+ (a) = x;
23
+ }
24
+
25
+ class A {
26
+ int call(int x) => x;
27
+ }
28
+ ''' , [
29
+ error (CompileTimeErrorCode .PATTERN_TYPE_MISMATCH_IN_IRREFUTABLE_CONTEXT ,
30
+ 41 , 1 ),
31
+ ]);
32
+ }
33
+
34
+ test_assignedVariablePattern_valueDynamic () async {
35
+ await assertNoErrorsInCode (r'''
36
+ void f(int a, dynamic x) {
37
+ (a) = x;
38
+ }
39
+ ''' );
40
+ }
41
+
42
+ test_assignedVariablePattern_valueSubtype () async {
43
+ await assertNoErrorsInCode (r'''
44
+ void f(num a, int x) {
45
+ (a) = x;
46
+ }
47
+ ''' );
48
+ }
49
+
50
+ test_assignedVariablePattern_valueSupertype () async {
51
+ await assertErrorsInCode (r'''
52
+ void f(int a, num x) {
53
+ (a) = x;
54
+ }
55
+ ''' , [
56
+ error (CompileTimeErrorCode .PATTERN_TYPE_MISMATCH_IN_IRREFUTABLE_CONTEXT ,
57
+ 26 , 1 ),
58
+ ]);
59
+ }
60
+
61
+ test_declaredVariablePattern_recordDestruction_hasCall () async {
62
+ await assertErrorsInCode (r'''
63
+ void f((A,) x) {
64
+ var (int Function(int) v,) = x;
65
+ }
66
+
67
+ class A {
68
+ int call(int x) => x;
69
+ }
70
+ ''' , [
71
+ error (CompileTimeErrorCode .PATTERN_TYPE_MISMATCH_IN_IRREFUTABLE_CONTEXT ,
72
+ 24 , 19 ),
73
+ error (HintCode .UNUSED_LOCAL_VARIABLE , 42 , 1 ),
74
+ ]);
75
+ }
76
+
77
+ test_declaredVariablePattern_valueDynamic () async {
78
+ await assertErrorsInCode (r'''
79
+ void f(dynamic x) {
80
+ var (int a) = x;
81
+ }
82
+ ''' , [
83
+ error (HintCode .UNUSED_LOCAL_VARIABLE , 31 , 1 ),
84
+ ]);
85
+ }
86
+
87
+ test_declaredVariablePattern_valueSubtype () async {
88
+ await assertErrorsInCode (r'''
89
+ void f(int x) {
90
+ var (num a) = x;
91
+ }
92
+ ''' , [
93
+ error (HintCode .UNUSED_LOCAL_VARIABLE , 27 , 1 ),
94
+ ]);
95
+ }
96
+
97
+ test_declaredVariablePattern_valueSupertype () async {
98
+ await assertErrorsInCode (r'''
99
+ void f(num x) {
100
+ var (int a) = x;
101
+ }
102
+ ''' , [
103
+ error (CompileTimeErrorCode .PATTERN_TYPE_MISMATCH_IN_IRREFUTABLE_CONTEXT ,
104
+ 23 , 5 ),
105
+ error (HintCode .UNUSED_LOCAL_VARIABLE , 27 , 1 ),
106
+ ]);
107
+ }
108
+
19
109
test_listPattern_differentList () async {
20
110
await assertErrorsInCode (r'''
21
111
void f(List<Object> x) {
@@ -98,36 +188,4 @@ void f(({int foo}) x) {
98
188
error (HintCode .UNUSED_LOCAL_VARIABLE , 31 , 1 ),
99
189
]);
100
190
}
101
-
102
- test_variablePattern_assignable_fromDynamic () async {
103
- await assertErrorsInCode (r'''
104
- void f(dynamic x) {
105
- var (int a) = x;
106
- }
107
- ''' , [
108
- error (HintCode .UNUSED_LOCAL_VARIABLE , 31 , 1 ),
109
- ]);
110
- }
111
-
112
- test_variablePattern_assignable_fromSubtype () async {
113
- await assertErrorsInCode (r'''
114
- void f(int x) {
115
- var (num a) = x;
116
- }
117
- ''' , [
118
- error (HintCode .UNUSED_LOCAL_VARIABLE , 27 , 1 ),
119
- ]);
120
- }
121
-
122
- test_variablePattern_notAssignable_fromSupertype () async {
123
- await assertErrorsInCode (r'''
124
- void f(num x) {
125
- var (int a) = x;
126
- }
127
- ''' , [
128
- error (CompileTimeErrorCode .PATTERN_TYPE_MISMATCH_IN_IRREFUTABLE_CONTEXT ,
129
- 23 , 5 ),
130
- error (HintCode .UNUSED_LOCAL_VARIABLE , 27 , 1 ),
131
- ]);
132
- }
133
191
}
0 commit comments