File tree 2 files changed +36
-0
lines changed 2 files changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ import 'package:analyzer/dart/ast/token.dart';
7
7
import 'package:analyzer/dart/ast/visitor.dart' ;
8
8
9
9
import '../analyzer.dart' ;
10
+ import '../extensions.dart' ;
10
11
import '../util/ascii_utils.dart' ;
11
12
import '../utils.dart' ;
12
13
@@ -100,6 +101,7 @@ class _Visitor extends SimpleAstVisitor<void> {
100
101
101
102
@override
102
103
void visitDeclaredVariablePattern (DeclaredVariablePattern node) {
104
+ if (node.parent.isFieldNameShortcut) return ;
103
105
checkIdentifier (node.name);
104
106
}
105
107
@@ -131,6 +133,7 @@ class _Visitor extends SimpleAstVisitor<void> {
131
133
132
134
@override
133
135
void visitPatternField (PatternField node) {
136
+ if (node.isFieldNameShortcut) return ;
134
137
var pattern = node.pattern;
135
138
if (pattern is DeclaredVariablePattern ) {
136
139
checkIdentifier (pattern.name);
Original file line number Diff line number Diff line change @@ -39,6 +39,25 @@ void f() {
39
39
]);
40
40
}
41
41
42
+ test_patternIfStatement_recordField () async {
43
+ await assertDiagnostics (r'''
44
+ void f(Object o) {
45
+ if (o case (a: int AB, BC: int CD)) { }
46
+ }
47
+ ''' , [
48
+ lint (40 , 2 ),
49
+ lint (52 , 2 ),
50
+ ]);
51
+ }
52
+
53
+ test_patternIfStatement_recordField_ok () async {
54
+ await assertNoDiagnostics (r'''
55
+ void f(Object o) {
56
+ if (o case (:int AB, var b)) { }
57
+ }
58
+ ''' );
59
+ }
60
+
42
61
test_patternIfStatement_underscores () async {
43
62
await assertNoDiagnostics (r'''
44
63
void f() {
@@ -85,6 +104,20 @@ void f() {
85
104
]);
86
105
}
87
106
107
+ test_patternRecordField_shortcut_ok () async {
108
+ await assertNoDiagnostics (r'''
109
+ f(Object o) {
110
+ switch(o) {
111
+ case (:int AB, var b):
112
+ }
113
+ switch(o) {
114
+ case (:int AB?, var b):
115
+ case (:int AB!, var b):
116
+ }
117
+ }
118
+ ''' );
119
+ }
120
+
88
121
test_patternRecordField_underscores () async {
89
122
await assertDiagnostics (r'''
90
123
void f() {
You can’t perform that action at this time.
0 commit comments