@@ -259,14 +259,15 @@ io fn parse_bottom_expr(parser p) -> @ast.expr {
259
259
260
260
// FIXME: can only remove this sort of thing when both typestate and
261
261
// alt-exhaustive-match checking are co-operating.
262
- let ast. expr_ ex = ast. expr_lit ( @spanned ( lo, lo, ast. lit_nil ) ) ;
262
+ auto lit = @spanned ( lo, lo, ast. lit_nil ) ;
263
+ let ast. expr_ ex = ast. expr_lit ( lit, none[ @ast. ty ] ) ;
263
264
264
265
alt ( p. peek ( ) ) {
265
266
266
267
case ( token. IDENT ( ?i) ) {
267
268
auto n = parse_name ( p, i) ;
268
269
hi = n. span ;
269
- ex = ast. expr_name ( n, none[ ast. def ] ) ;
270
+ ex = ast. expr_name ( n, none[ ast. def ] , none [ @ast . ty ] ) ;
270
271
}
271
272
272
273
case ( token. LPAREN ) {
@@ -285,7 +286,7 @@ io fn parse_bottom_expr(parser p) -> @ast.expr {
285
286
some ( token. COMMA ) ,
286
287
pf, p) ;
287
288
hi = es. span ;
288
- ex = ast. expr_tup ( es. node ) ;
289
+ ex = ast. expr_tup ( es. node , none [ @ast . ty ] ) ;
289
290
}
290
291
291
292
case ( token. VEC ) {
@@ -296,7 +297,7 @@ io fn parse_bottom_expr(parser p) -> @ast.expr {
296
297
some ( token. COMMA ) ,
297
298
pf, p) ;
298
299
hi = es. span ;
299
- ex = ast. expr_vec ( es. node ) ;
300
+ ex = ast. expr_vec ( es. node , none [ @ast . ty ] ) ;
300
301
}
301
302
302
303
case ( token. REC ) {
@@ -315,14 +316,14 @@ io fn parse_bottom_expr(parser p) -> @ast.expr {
315
316
some ( token. COMMA ) ,
316
317
pf, p) ;
317
318
hi = es. span ;
318
- ex = ast. expr_rec ( es. node ) ;
319
+ ex = ast. expr_rec ( es. node , none [ @ast . ty ] ) ;
319
320
}
320
321
321
322
case ( _) {
322
323
alt ( parse_lit ( p) ) {
323
324
case ( some[ ast. lit ] ( ?lit) ) {
324
325
hi = lit. span ;
325
- ex = ast. expr_lit ( @lit) ;
326
+ ex = ast. expr_lit ( @lit, none [ @ast . ty ] ) ;
326
327
}
327
328
case ( none[ ast. lit ] ) {
328
329
p. err ( "expecting expression" ) ;
@@ -347,13 +348,15 @@ io fn parse_path_expr(parser p) -> @ast.expr {
347
348
case ( token. IDENT ( ?i) ) {
348
349
hi = p. get_span ( ) ;
349
350
p. bump ( ) ;
350
- e = @spanned ( lo, hi, ast. expr_field ( e, i) ) ;
351
+ auto e_ = ast. expr_field ( e, i, none[ @ast. ty ] ) ;
352
+ e = @spanned ( lo, hi, e_) ;
351
353
}
352
354
353
355
case ( token. LPAREN ) {
354
356
auto ix = parse_bottom_expr ( p) ;
355
357
hi = ix. span ;
356
- e = @spanned ( lo, hi, ast. expr_index ( e, ix) ) ;
358
+ auto e_ = ast. expr_index ( e, ix, none[ @ast. ty ] ) ;
359
+ e = @spanned ( lo, hi, e_) ;
357
360
}
358
361
}
359
362
}
@@ -372,22 +375,23 @@ io fn parse_prefix_expr(parser p) -> @ast.expr {
372
375
373
376
// FIXME: can only remove this sort of thing when both typestate and
374
377
// alt-exhaustive-match checking are co-operating.
375
- let ast. expr_ ex = ast. expr_lit ( @spanned ( lo, lo, ast. lit_nil ) ) ;
378
+ auto lit = @spanned ( lo, lo, ast. lit_nil ) ;
379
+ let ast. expr_ ex = ast. expr_lit ( lit, none[ @ast. ty ] ) ;
376
380
377
381
alt ( p. peek ( ) ) {
378
382
379
383
case ( token. NOT ) {
380
384
p. bump ( ) ;
381
385
auto e = parse_prefix_expr ( p) ;
382
386
hi = e. span ;
383
- ex = ast. expr_unary ( ast. not , e) ;
387
+ ex = ast. expr_unary ( ast. not , e, none [ @ast . ty ] ) ;
384
388
}
385
389
386
390
case ( token. TILDE ) {
387
391
p. bump ( ) ;
388
392
auto e = parse_prefix_expr ( p) ;
389
393
hi = e. span ;
390
- ex = ast. expr_unary ( ast. bitnot , e) ;
394
+ ex = ast. expr_unary ( ast. bitnot , e, none [ @ast . ty ] ) ;
391
395
}
392
396
393
397
case ( token. BINOP ( ?b) ) {
@@ -396,14 +400,14 @@ io fn parse_prefix_expr(parser p) -> @ast.expr {
396
400
p. bump ( ) ;
397
401
auto e = parse_prefix_expr ( p) ;
398
402
hi = e. span ;
399
- ex = ast. expr_unary ( ast. neg , e) ;
403
+ ex = ast. expr_unary ( ast. neg , e, none [ @ast . ty ] ) ;
400
404
}
401
405
402
406
case ( token. STAR ) {
403
407
p. bump ( ) ;
404
408
auto e = parse_prefix_expr ( p) ;
405
409
hi = e. span ;
406
- ex = ast. expr_unary ( ast. deref , e) ;
410
+ ex = ast. expr_unary ( ast. deref , e, none [ @ast . ty ] ) ;
407
411
}
408
412
409
413
case ( _) {
@@ -416,7 +420,7 @@ io fn parse_prefix_expr(parser p) -> @ast.expr {
416
420
p. bump ( ) ;
417
421
auto e = parse_prefix_expr ( p) ;
418
422
hi = e. span ;
419
- ex = ast. expr_unary ( ast. box , e) ;
423
+ ex = ast. expr_unary ( ast. box , e, none [ @ast . ty ] ) ;
420
424
}
421
425
422
426
case ( _) {
@@ -443,7 +447,8 @@ io fn parse_binops(parser p,
443
447
p. bump ( ) ;
444
448
auto rhs = sub ( p) ;
445
449
hi = rhs. span ;
446
- auto exp = ast. expr_binary ( pair. _1 , e, rhs) ;
450
+ auto exp = ast. expr_binary ( pair. _1 , e, rhs,
451
+ none[ @ast. ty ] ) ;
447
452
e = @spanned ( lo, hi, exp) ;
448
453
more = true ;
449
454
}
@@ -469,7 +474,7 @@ io fn parse_binary_exprs(parser p,
469
474
p. bump ( ) ;
470
475
auto rhs = sub ( p) ;
471
476
hi = rhs. span ;
472
- auto exp = ast. expr_binary ( pair. _1 , e, rhs) ;
477
+ auto exp = ast. expr_binary ( pair. _1 , e, rhs, none [ @ast . ty ] ) ;
473
478
e = @spanned ( lo, hi, exp) ;
474
479
more = true ;
475
480
}
@@ -578,15 +583,15 @@ io fn parse_if_expr(parser p) -> @ast.expr {
578
583
hi = eblk. span ;
579
584
}
580
585
}
581
- ret @spanned ( lo, hi, ast. expr_if ( cond, thn, els) ) ;
586
+ ret @spanned ( lo, hi, ast. expr_if ( cond, thn, els, none [ @ast . ty ] ) ) ;
582
587
}
583
588
584
589
io fn parse_expr ( parser p) -> @ast . expr {
585
590
alt ( p. peek ( ) ) {
586
591
case ( token. LBRACE ) {
587
592
auto blk = parse_block ( p) ;
588
593
ret @spanned ( blk. span , blk. span ,
589
- ast. expr_block ( blk) ) ;
594
+ ast. expr_block ( blk, none [ @ast . ty ] ) ) ;
590
595
}
591
596
case ( token. IF ) {
592
597
ret parse_if_expr ( p) ;
0 commit comments