Skip to content

Commit e0faf57

Browse files
committed
rustc: Factor out expr_ty() into expr_ann() and expr_ty()
1 parent d218df0 commit e0faf57

File tree

1 file changed

+45
-38
lines changed

1 file changed

+45
-38
lines changed

src/comp/middle/ty.rs

Lines changed: 45 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -757,52 +757,59 @@ fn pat_ty(@ast.pat pat) -> @t {
757757
fail; // not reached
758758
}
759759

760-
fn expr_ty(@ast.expr expr) -> @t {
760+
fn expr_ann(@ast.expr expr) -> option.t[ast.ann] {
761761
alt (expr.node) {
762-
case (ast.expr_vec(_, _, ?ann)) { ret ann_to_type(ann); }
763-
case (ast.expr_tup(_, ?ann)) { ret ann_to_type(ann); }
764-
case (ast.expr_rec(_, _, ?ann)) { ret ann_to_type(ann); }
765-
case (ast.expr_bind(_, _, ?ann)) { ret ann_to_type(ann); }
766-
case (ast.expr_call(_, _, ?ann)) { ret ann_to_type(ann); }
767-
case (ast.expr_self_method(_, ?ann)) { ret ann_to_type(ann); }
762+
case (ast.expr_vec(_, _, ?ann)) { ret some[ast.ann](ann); }
763+
case (ast.expr_tup(_, ?ann)) { ret some[ast.ann](ann); }
764+
case (ast.expr_rec(_, _, ?ann)) { ret some[ast.ann](ann); }
765+
case (ast.expr_bind(_, _, ?ann)) { ret some[ast.ann](ann); }
766+
case (ast.expr_call(_, _, ?ann)) { ret some[ast.ann](ann); }
767+
case (ast.expr_self_method(_, ?ann)) { ret some[ast.ann](ann); }
768768
case (ast.expr_spawn(_, _, _, _, ?ann))
769-
{ ret ann_to_type(ann); }
770-
case (ast.expr_binary(_, _, _, ?ann)) { ret ann_to_type(ann); }
771-
case (ast.expr_unary(_, _, ?ann)) { ret ann_to_type(ann); }
772-
case (ast.expr_lit(_, ?ann)) { ret ann_to_type(ann); }
773-
case (ast.expr_cast(_, _, ?ann)) { ret ann_to_type(ann); }
774-
case (ast.expr_if(_, _, _, ?ann)) { ret ann_to_type(ann); }
775-
case (ast.expr_for(_, _, _, ?ann)) { ret ann_to_type(ann); }
769+
{ ret some[ast.ann](ann); }
770+
case (ast.expr_binary(_, _, _, ?ann)) { ret some[ast.ann](ann); }
771+
case (ast.expr_unary(_, _, ?ann)) { ret some[ast.ann](ann); }
772+
case (ast.expr_lit(_, ?ann)) { ret some[ast.ann](ann); }
773+
case (ast.expr_cast(_, _, ?ann)) { ret some[ast.ann](ann); }
774+
case (ast.expr_if(_, _, _, ?ann)) { ret some[ast.ann](ann); }
775+
case (ast.expr_for(_, _, _, ?ann)) { ret some[ast.ann](ann); }
776776
case (ast.expr_for_each(_, _, _, ?ann))
777-
{ ret ann_to_type(ann); }
778-
case (ast.expr_while(_, _, ?ann)) { ret ann_to_type(ann); }
779-
case (ast.expr_do_while(_, _, ?ann)) { ret ann_to_type(ann); }
780-
case (ast.expr_alt(_, _, ?ann)) { ret ann_to_type(ann); }
781-
case (ast.expr_block(_, ?ann)) { ret ann_to_type(ann); }
782-
case (ast.expr_assign(_, _, ?ann)) { ret ann_to_type(ann); }
777+
{ ret some[ast.ann](ann); }
778+
case (ast.expr_while(_, _, ?ann)) { ret some[ast.ann](ann); }
779+
case (ast.expr_do_while(_, _, ?ann)) { ret some[ast.ann](ann); }
780+
case (ast.expr_alt(_, _, ?ann)) { ret some[ast.ann](ann); }
781+
case (ast.expr_block(_, ?ann)) { ret some[ast.ann](ann); }
782+
case (ast.expr_assign(_, _, ?ann)) { ret some[ast.ann](ann); }
783783
case (ast.expr_assign_op(_, _, _, ?ann))
784-
{ ret ann_to_type(ann); }
785-
case (ast.expr_field(_, _, ?ann)) { ret ann_to_type(ann); }
786-
case (ast.expr_index(_, _, ?ann)) { ret ann_to_type(ann); }
787-
case (ast.expr_path(_, _, ?ann)) { ret ann_to_type(ann); }
788-
case (ast.expr_ext(_, _, _, _, ?ann)) { ret ann_to_type(ann); }
789-
case (ast.expr_port(?ann)) { ret ann_to_type(ann); }
790-
case (ast.expr_chan(_, ?ann)) { ret ann_to_type(ann); }
791-
case (ast.expr_send(_, _, ?ann)) { ret ann_to_type(ann); }
792-
case (ast.expr_recv(_, _, ?ann)) { ret ann_to_type(ann); }
793-
794-
case (ast.expr_fail(_)) { ret plain_ty(ty_nil); }
795-
case (ast.expr_break(_)) { ret plain_ty(ty_nil); }
796-
case (ast.expr_cont(_)) { ret plain_ty(ty_nil); }
797-
case (ast.expr_log(_,_)) { ret plain_ty(ty_nil); }
798-
case (ast.expr_check_expr(_,_)) { ret plain_ty(ty_nil); }
799-
case (ast.expr_ret(_,_)) { ret plain_ty(ty_nil); }
800-
case (ast.expr_put(_,_)) { ret plain_ty(ty_nil); }
801-
case (ast.expr_be(_,_)) { ret plain_ty(ty_nil); }
784+
{ ret some[ast.ann](ann); }
785+
case (ast.expr_field(_, _, ?ann)) { ret some[ast.ann](ann); }
786+
case (ast.expr_index(_, _, ?ann)) { ret some[ast.ann](ann); }
787+
case (ast.expr_path(_, _, ?ann)) { ret some[ast.ann](ann); }
788+
case (ast.expr_ext(_, _, _, _, ?ann)) { ret some[ast.ann](ann); }
789+
case (ast.expr_port(?ann)) { ret some[ast.ann](ann); }
790+
case (ast.expr_chan(_, ?ann)) { ret some[ast.ann](ann); }
791+
case (ast.expr_send(_, _, ?ann)) { ret some[ast.ann](ann); }
792+
case (ast.expr_recv(_, _, ?ann)) { ret some[ast.ann](ann); }
793+
794+
case (ast.expr_fail(_)) { ret none[ast.ann]; }
795+
case (ast.expr_break(_)) { ret none[ast.ann]; }
796+
case (ast.expr_cont(_)) { ret none[ast.ann]; }
797+
case (ast.expr_log(_,_)) { ret none[ast.ann]; }
798+
case (ast.expr_check_expr(_,_)) { ret none[ast.ann]; }
799+
case (ast.expr_ret(_,_)) { ret none[ast.ann]; }
800+
case (ast.expr_put(_,_)) { ret none[ast.ann]; }
801+
case (ast.expr_be(_,_)) { ret none[ast.ann]; }
802802
}
803803
fail;
804804
}
805805

806+
fn expr_ty(@ast.expr expr) -> @t {
807+
alt (expr_ann(expr)) {
808+
case (none[ast.ann]) { ret plain_ty(ty_nil); }
809+
case (some[ast.ann](?a)) { ret ann_to_type(a); }
810+
}
811+
}
812+
806813
// Expression utilities
807814

808815
fn field_num(session.session sess, &span sp, &ast.ident id) -> uint {

0 commit comments

Comments
 (0)