Skip to content

Commit 10d628d

Browse files
committed
Add a type slot to the AST
1 parent e497fe9 commit 10d628d

File tree

4 files changed

+98
-93
lines changed

4 files changed

+98
-93
lines changed

src/comp/front/parser.rs

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -259,14 +259,15 @@ io fn parse_bottom_expr(parser p) -> @ast.expr {
259259

260260
// FIXME: can only remove this sort of thing when both typestate and
261261
// 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]);
263264

264265
alt (p.peek()) {
265266

266267
case (token.IDENT(?i)) {
267268
auto n = parse_name(p, i);
268269
hi = n.span;
269-
ex = ast.expr_name(n, none[ast.def]);
270+
ex = ast.expr_name(n, none[ast.def], none[@ast.ty]);
270271
}
271272

272273
case (token.LPAREN) {
@@ -285,7 +286,7 @@ io fn parse_bottom_expr(parser p) -> @ast.expr {
285286
some(token.COMMA),
286287
pf, p);
287288
hi = es.span;
288-
ex = ast.expr_tup(es.node);
289+
ex = ast.expr_tup(es.node, none[@ast.ty]);
289290
}
290291

291292
case (token.VEC) {
@@ -296,7 +297,7 @@ io fn parse_bottom_expr(parser p) -> @ast.expr {
296297
some(token.COMMA),
297298
pf, p);
298299
hi = es.span;
299-
ex = ast.expr_vec(es.node);
300+
ex = ast.expr_vec(es.node, none[@ast.ty]);
300301
}
301302

302303
case (token.REC) {
@@ -315,14 +316,14 @@ io fn parse_bottom_expr(parser p) -> @ast.expr {
315316
some(token.COMMA),
316317
pf, p);
317318
hi = es.span;
318-
ex = ast.expr_rec(es.node);
319+
ex = ast.expr_rec(es.node, none[@ast.ty]);
319320
}
320321

321322
case (_) {
322323
alt (parse_lit(p)) {
323324
case (some[ast.lit](?lit)) {
324325
hi = lit.span;
325-
ex = ast.expr_lit(@lit);
326+
ex = ast.expr_lit(@lit, none[@ast.ty]);
326327
}
327328
case (none[ast.lit]) {
328329
p.err("expecting expression");
@@ -347,13 +348,15 @@ io fn parse_path_expr(parser p) -> @ast.expr {
347348
case (token.IDENT(?i)) {
348349
hi = p.get_span();
349350
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_);
351353
}
352354

353355
case (token.LPAREN) {
354356
auto ix = parse_bottom_expr(p);
355357
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_);
357360
}
358361
}
359362
}
@@ -372,22 +375,23 @@ io fn parse_prefix_expr(parser p) -> @ast.expr {
372375

373376
// FIXME: can only remove this sort of thing when both typestate and
374377
// 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]);
376380

377381
alt (p.peek()) {
378382

379383
case (token.NOT) {
380384
p.bump();
381385
auto e = parse_prefix_expr(p);
382386
hi = e.span;
383-
ex = ast.expr_unary(ast.not, e);
387+
ex = ast.expr_unary(ast.not, e, none[@ast.ty]);
384388
}
385389

386390
case (token.TILDE) {
387391
p.bump();
388392
auto e = parse_prefix_expr(p);
389393
hi = e.span;
390-
ex = ast.expr_unary(ast.bitnot, e);
394+
ex = ast.expr_unary(ast.bitnot, e, none[@ast.ty]);
391395
}
392396

393397
case (token.BINOP(?b)) {
@@ -396,14 +400,14 @@ io fn parse_prefix_expr(parser p) -> @ast.expr {
396400
p.bump();
397401
auto e = parse_prefix_expr(p);
398402
hi = e.span;
399-
ex = ast.expr_unary(ast.neg, e);
403+
ex = ast.expr_unary(ast.neg, e, none[@ast.ty]);
400404
}
401405

402406
case (token.STAR) {
403407
p.bump();
404408
auto e = parse_prefix_expr(p);
405409
hi = e.span;
406-
ex = ast.expr_unary(ast.deref, e);
410+
ex = ast.expr_unary(ast.deref, e, none[@ast.ty]);
407411
}
408412

409413
case (_) {
@@ -416,7 +420,7 @@ io fn parse_prefix_expr(parser p) -> @ast.expr {
416420
p.bump();
417421
auto e = parse_prefix_expr(p);
418422
hi = e.span;
419-
ex = ast.expr_unary(ast.box, e);
423+
ex = ast.expr_unary(ast.box, e, none[@ast.ty]);
420424
}
421425

422426
case (_) {
@@ -443,7 +447,8 @@ io fn parse_binops(parser p,
443447
p.bump();
444448
auto rhs = sub(p);
445449
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]);
447452
e = @spanned(lo, hi, exp);
448453
more = true;
449454
}
@@ -469,7 +474,7 @@ io fn parse_binary_exprs(parser p,
469474
p.bump();
470475
auto rhs = sub(p);
471476
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]);
473478
e = @spanned(lo, hi, exp);
474479
more = true;
475480
}
@@ -578,15 +583,15 @@ io fn parse_if_expr(parser p) -> @ast.expr {
578583
hi = eblk.span;
579584
}
580585
}
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]));
582587
}
583588

584589
io fn parse_expr(parser p) -> @ast.expr {
585590
alt (p.peek()) {
586591
case (token.LBRACE) {
587592
auto blk = parse_block(p);
588593
ret @spanned(blk.span, blk.span,
589-
ast.expr_block(blk));
594+
ast.expr_block(blk, none[@ast.ty]));
590595
}
591596
case (token.IF) {
592597
ret parse_if_expr(p);

0 commit comments

Comments
 (0)