File tree Expand file tree Collapse file tree 3 files changed +54
-1
lines changed Expand file tree Collapse file tree 3 files changed +54
-1
lines changed Original file line number Diff line number Diff line change @@ -135,6 +135,19 @@ pub(crate) mod entry {
135
135
}
136
136
m. complete ( p, ERROR ) ;
137
137
}
138
+
139
+ pub ( crate ) fn expr ( p : & mut Parser ) {
140
+ let m = p. start ( ) ;
141
+ expressions:: expr ( p) ;
142
+ if p. at ( EOF ) {
143
+ m. abandon ( p) ;
144
+ return ;
145
+ }
146
+ while !p. at ( EOF ) {
147
+ p. bump_any ( ) ;
148
+ }
149
+ m. complete ( p, ERROR ) ;
150
+ }
138
151
}
139
152
}
140
153
Original file line number Diff line number Diff line change @@ -123,8 +123,8 @@ impl TopEntryPoint {
123
123
TopEntryPoint :: MacroItems => grammar:: entry:: top:: macro_items,
124
124
TopEntryPoint :: Pattern => grammar:: entry:: top:: pattern,
125
125
TopEntryPoint :: Type => grammar:: entry:: top:: type_,
126
+ TopEntryPoint :: Expr => grammar:: entry:: top:: expr,
126
127
// FIXME
127
- TopEntryPoint :: Expr => grammar:: entry:: prefix:: expr,
128
128
TopEntryPoint :: MetaItem => grammar:: entry:: prefix:: meta_item,
129
129
} ;
130
130
let mut p = parser:: Parser :: new ( input) ;
Original file line number Diff line number Diff line change @@ -224,6 +224,46 @@ fn type_() {
224
224
) ;
225
225
}
226
226
227
+ #[ test]
228
+ fn expr ( ) {
229
+ check (
230
+ TopEntryPoint :: Expr ,
231
+ "2 + 2 == 5" ,
232
+ expect ! [ [ r#"
233
+ BIN_EXPR
234
+ BIN_EXPR
235
+ LITERAL
236
+ INT_NUMBER "2"
237
+ WHITESPACE " "
238
+ PLUS "+"
239
+ WHITESPACE " "
240
+ LITERAL
241
+ INT_NUMBER "2"
242
+ WHITESPACE " "
243
+ EQ2 "=="
244
+ WHITESPACE " "
245
+ LITERAL
246
+ INT_NUMBER "5"
247
+ "# ] ] ,
248
+ ) ;
249
+ check (
250
+ TopEntryPoint :: Expr ,
251
+ "let _ = 0;" ,
252
+ expect ! [ [ r#"
253
+ ERROR
254
+ LET_KW "let"
255
+ WHITESPACE " "
256
+ UNDERSCORE "_"
257
+ WHITESPACE " "
258
+ EQ "="
259
+ WHITESPACE " "
260
+ INT_NUMBER "0"
261
+ SEMICOLON ";"
262
+ error 0: expected expression
263
+ "# ] ] ,
264
+ ) ;
265
+ }
266
+
227
267
#[ track_caller]
228
268
fn check ( entry : TopEntryPoint , input : & str , expect : expect_test:: Expect ) {
229
269
let ( parsed, _errors) = super :: parse ( entry, input) ;
You can’t perform that action at this time.
0 commit comments