@@ -38,10 +38,6 @@ import 'util.dart'
38
38
/// when there is a single identifier as the type reference.
39
39
const TypeInfo simpleType = const SimpleType ();
40
40
41
- /// [SimpleNullableType] is a specialized [TypeInfo] returned by [computeType]
42
- /// when there is a single identifier followed by `?` as the type reference.
43
- const TypeInfo simpleNullableType = const SimpleNullableType ();
44
-
45
41
/// [PrefixedType] is a specialized [TypeInfo] returned by [computeType]
46
42
/// when the type reference is of the form: identifier `.` identifier.
47
43
const TypeInfo prefixedType = const PrefixedType ();
@@ -64,12 +60,6 @@ const TypeInfo simpleTypeWith1ArgumentGtEq =
64
60
const TypeInfo simpleTypeWith1ArgumentGtGt =
65
61
const SimpleTypeWith1Argument (simpleTypeArgument1GtGt);
66
62
67
- /// [SimpleNullableTypeWith1Argument] is a specialized [TypeInfo] returned by
68
- /// [computeType] when the type reference is of the form:
69
- /// identifier `<` identifier `>` `?` .
70
- const TypeInfo simpleNullableTypeWith1Argument =
71
- const SimpleNullableTypeWith1Argument ();
72
-
73
63
/// [SimpleTypeArgument1] is a specialized [TypeParamOrArgInfo] returned by
74
64
/// [computeTypeParamOrArg] when the type reference is of the form:
75
65
/// `<` identifier `>` .
@@ -92,10 +82,10 @@ class NoType implements TypeInfo {
92
82
const NoType ();
93
83
94
84
@override
95
- TypeInfo get asNonNullable => this ;
85
+ bool get couldBeExpression => false ;
96
86
97
87
@override
98
- bool get couldBeExpression => false ;
88
+ TypeInfo asNonNullableType () => this ;
99
89
100
90
@override
101
91
Token ensureTypeNotVoid (Token token, Parser parser) {
@@ -109,9 +99,6 @@ class NoType implements TypeInfo {
109
99
Token ensureTypeOrVoid (Token token, Parser parser) =>
110
100
ensureTypeNotVoid (token, parser);
111
101
112
- @override
113
- bool isConditionalExpressionStart (Token token, Parser parser) => false ;
114
-
115
102
@override
116
103
Token parseTypeNotVoid (Token token, Parser parser) =>
117
104
parseType (token, parser);
@@ -133,10 +120,10 @@ class PrefixedType implements TypeInfo {
133
120
const PrefixedType ();
134
121
135
122
@override
136
- TypeInfo get asNonNullable => this ;
123
+ bool get couldBeExpression => true ;
137
124
138
125
@override
139
- bool get couldBeExpression => true ;
126
+ TypeInfo asNonNullableType () => this ;
140
127
141
128
@override
142
129
Token ensureTypeNotVoid (Token token, Parser parser) =>
@@ -146,9 +133,6 @@ class PrefixedType implements TypeInfo {
146
133
Token ensureTypeOrVoid (Token token, Parser parser) =>
147
134
parseType (token, parser);
148
135
149
- @override
150
- bool isConditionalExpressionStart (Token token, Parser parser) => false ;
151
-
152
136
@override
153
137
Token parseTypeNotVoid (Token token, Parser parser) =>
154
138
parseType (token, parser);
@@ -180,44 +164,17 @@ class PrefixedType implements TypeInfo {
180
164
}
181
165
}
182
166
183
- /// See documentation on the [simpleNullableTypeWith1Argument] const.
184
- class SimpleNullableTypeWith1Argument extends SimpleTypeWith1Argument {
185
- const SimpleNullableTypeWith1Argument () : super (simpleTypeArgument1);
186
-
187
- @override
188
- TypeInfo get asNonNullable => simpleTypeWith1Argument;
189
-
190
- @override
191
- bool isConditionalExpressionStart (Token token, Parser parser) =>
192
- isConditionalThenExpression (skipType (token), parser);
193
-
194
- @override
195
- Token parseTypeRest (Token start, Token token, Parser parser) {
196
- token = token.next;
197
- assert (optional ('?' , token));
198
- parser.listener.handleType (start, token);
199
- return token;
200
- }
201
-
202
- @override
203
- Token skipType (Token token) {
204
- token = super .skipType (token).next;
205
- assert (optional ('?' , token));
206
- return token;
207
- }
208
- }
209
-
210
167
/// See documentation on the [simpleTypeWith1Argument] const.
211
168
class SimpleTypeWith1Argument implements TypeInfo {
212
169
final TypeParamOrArgInfo typeArg;
213
170
214
171
const SimpleTypeWith1Argument (this .typeArg);
215
172
216
173
@override
217
- TypeInfo get asNonNullable => this ;
174
+ bool get couldBeExpression => false ;
218
175
219
176
@override
220
- bool get couldBeExpression => false ;
177
+ TypeInfo asNonNullableType () => this ;
221
178
222
179
@override
223
180
Token ensureTypeNotVoid (Token token, Parser parser) =>
@@ -227,9 +184,6 @@ class SimpleTypeWith1Argument implements TypeInfo {
227
184
Token ensureTypeOrVoid (Token token, Parser parser) =>
228
185
parseType (token, parser);
229
186
230
- @override
231
- bool isConditionalExpressionStart (Token token, Parser parser) => false ;
232
-
233
187
@override
234
188
Token parseTypeNotVoid (Token token, Parser parser) =>
235
189
parseType (token, parser);
@@ -256,40 +210,15 @@ class SimpleTypeWith1Argument implements TypeInfo {
256
210
}
257
211
}
258
212
259
- /// See documentation on the [simpleNullableType] const.
260
- class SimpleNullableType extends SimpleType {
261
- const SimpleNullableType ();
262
-
263
- @override
264
- TypeInfo get asNonNullable => simpleType;
265
-
266
- @override
267
- bool isConditionalExpressionStart (Token token, Parser parser) =>
268
- isConditionalThenExpression (skipType (token), parser);
269
-
270
- @override
271
- Token parseTypeRest (Token start, Parser parser) {
272
- Token token = start.next;
273
- assert (optional ('?' , token));
274
- parser.listener.handleType (start, token);
275
- return token;
276
- }
277
-
278
- @override
279
- Token skipType (Token token) {
280
- return token.next.next;
281
- }
282
- }
283
-
284
213
/// See documentation on the [simpleType] const.
285
214
class SimpleType implements TypeInfo {
286
215
const SimpleType ();
287
216
288
217
@override
289
- TypeInfo get asNonNullable => this ;
218
+ bool get couldBeExpression => true ;
290
219
291
220
@override
292
- bool get couldBeExpression => true ;
221
+ TypeInfo asNonNullableType () => this ;
293
222
294
223
@override
295
224
Token ensureTypeNotVoid (Token token, Parser parser) =>
@@ -299,9 +228,6 @@ class SimpleType implements TypeInfo {
299
228
Token ensureTypeOrVoid (Token token, Parser parser) =>
300
229
parseType (token, parser);
301
230
302
- @override
303
- bool isConditionalExpressionStart (Token token, Parser parser) => false ;
304
-
305
231
@override
306
232
Token parseTypeNotVoid (Token token, Parser parser) =>
307
233
parseType (token, parser);
@@ -331,10 +257,10 @@ class VoidType implements TypeInfo {
331
257
const VoidType ();
332
258
333
259
@override
334
- TypeInfo get asNonNullable => this ;
260
+ bool get couldBeExpression => false ;
335
261
336
262
@override
337
- bool get couldBeExpression => false ;
263
+ TypeInfo asNonNullableType () => this ;
338
264
339
265
@override
340
266
Token ensureTypeNotVoid (Token token, Parser parser) {
@@ -347,9 +273,6 @@ class VoidType implements TypeInfo {
347
273
Token ensureTypeOrVoid (Token token, Parser parser) =>
348
274
parseType (token, parser);
349
275
350
- @override
351
- bool isConditionalExpressionStart (Token token, Parser parser) => false ;
352
-
353
276
@override
354
277
Token parseTypeNotVoid (Token token, Parser parser) =>
355
278
ensureTypeNotVoid (token, parser);
@@ -414,12 +337,12 @@ class ComplexTypeInfo implements TypeInfo {
414
337
: this .start = beforeStart.next;
415
338
416
339
@override
417
- TypeInfo get asNonNullable {
418
- return this ;
419
- }
340
+ bool get couldBeExpression => false ;
420
341
421
342
@override
422
- bool get couldBeExpression => false ;
343
+ TypeInfo asNonNullableType () {
344
+ return this ;
345
+ }
423
346
424
347
@override
425
348
Token ensureTypeNotVoid (Token token, Parser parser) =>
@@ -429,12 +352,6 @@ class ComplexTypeInfo implements TypeInfo {
429
352
Token ensureTypeOrVoid (Token token, Parser parser) =>
430
353
parseType (token, parser);
431
354
432
- @override
433
- bool isConditionalExpressionStart (Token token, Parser parser) {
434
- //return isConditionalThenExpression(token.next.next, parser);
435
- return false ;
436
- }
437
-
438
355
@override
439
356
Token parseTypeNotVoid (Token token, Parser parser) =>
440
357
parseType (token, parser);
@@ -1144,16 +1061,3 @@ Token splitCloser(Token closer) {
1144
1061
}
1145
1062
return null ;
1146
1063
}
1147
-
1148
- /// Return `true` if the tokens after [token]
1149
- /// represent a valid expression followed by a `:` .
1150
- bool isConditionalThenExpression (Token token, Parser parser) {
1151
- // TODO(danrubel): Consider adding checks for simple situations
1152
- // before resorting to heavy weight lookahead.
1153
-
1154
- final originalListener = parser.listener;
1155
- parser.listener = new ForwardingListener ();
1156
- token = parser.parseExpression (token);
1157
- parser.listener = originalListener;
1158
- return optional (':' , token.next);
1159
- }
0 commit comments