Skip to content

Commit 91b87b3

Browse files
committed
Remove the concept of crate directive let statements. Issue #604
1 parent d8fe0d7 commit 91b87b3

File tree

6 files changed

+0
-123
lines changed

6 files changed

+0
-123
lines changed

src/comp/front/ast.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,6 @@ type crate_ = rec(vec[@crate_directive] directives,
8888
crate_cfg config);
8989

9090
tag crate_directive_ {
91-
// FIXME: cdir_let should be eliminated
92-
// and redirected to the use of const stmt_decls inside
93-
// crate directive blocks.
94-
cdir_let(ident, @expr, vec[@crate_directive]);
9591
cdir_src_mod(ident, option::t[filename], vec[attribute]);
9692
cdir_dir_mod(ident, option::t[filename],
9793
vec[@crate_directive], vec[attribute]);

src/comp/front/eval.rs

Lines changed: 0 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -65,94 +65,6 @@ fn eval_lit(ctx cx, span sp, @ast::lit lit) -> val {
6565
}
6666
}
6767

68-
fn eval_expr(ctx cx, @ast::expr x) -> val {
69-
alt (x.node) {
70-
case (ast::expr_path(?pth)) {
71-
cx.sess.span_fatal(x.span, "evaluating structured path-name");
72-
}
73-
case (ast::expr_lit(?lit)) { ret eval_lit(cx, x.span, lit); }
74-
case (ast::expr_unary(?op, ?a)) {
75-
auto av = eval_expr(cx, a);
76-
alt (op) {
77-
case (ast::not) {
78-
if (val_is_bool(av)) { ret val_bool(!val_as_bool(av)); }
79-
cx.sess.span_fatal(x.span, "bad types in '!' expression");
80-
}
81-
case (_) {
82-
cx.sess.span_fatal(x.span, "evaluating unsupported unop");
83-
}
84-
}
85-
}
86-
case (ast::expr_binary(?op, ?a, ?b)) {
87-
auto av = eval_expr(cx, a);
88-
auto bv = eval_expr(cx, b);
89-
alt (op) {
90-
case (ast::add) {
91-
if (val_is_int(av) && val_is_int(bv)) {
92-
ret val_int(val_as_int(av) + val_as_int(bv));
93-
}
94-
if (val_is_str(av) && val_is_str(bv)) {
95-
ret val_str(val_as_str(av) + val_as_str(bv));
96-
}
97-
cx.sess.span_fatal(x.span, "bad types in '+' expression");
98-
}
99-
case (ast::sub) {
100-
if (val_is_int(av) && val_is_int(bv)) {
101-
ret val_int(val_as_int(av) - val_as_int(bv));
102-
}
103-
cx.sess.span_fatal(x.span, "bad types in '-' expression");
104-
}
105-
case (ast::mul) {
106-
if (val_is_int(av) && val_is_int(bv)) {
107-
ret val_int(val_as_int(av) * val_as_int(bv));
108-
}
109-
cx.sess.span_fatal(x.span, "bad types in '*' expression");
110-
}
111-
case (ast::div) {
112-
if (val_is_int(av) && val_is_int(bv)) {
113-
ret val_int(val_as_int(av) / val_as_int(bv));
114-
}
115-
cx.sess.span_fatal(x.span, "bad types in '/' expression");
116-
}
117-
case (ast::rem) {
118-
if (val_is_int(av) && val_is_int(bv)) {
119-
ret val_int(val_as_int(av) % val_as_int(bv));
120-
}
121-
cx.sess.span_fatal(x.span, "bad types in '%' expression");
122-
}
123-
case (ast::and) {
124-
if (val_is_bool(av) && val_is_bool(bv)) {
125-
ret val_bool(val_as_bool(av) && val_as_bool(bv));
126-
}
127-
cx.sess.span_fatal(x.span,
128-
"bad types in '&&' expression");
129-
}
130-
case (ast::or) {
131-
if (val_is_bool(av) && val_is_bool(bv)) {
132-
ret val_bool(val_as_bool(av) || val_as_bool(bv));
133-
}
134-
cx.sess.span_fatal(x.span,
135-
"bad types in '||' expression");
136-
}
137-
case (ast::eq) {
138-
ret val_bool(val_eq(cx.sess, x.span, av, bv));
139-
}
140-
case (ast::ne) {
141-
ret val_bool(!val_eq(cx.sess, x.span, av, bv));
142-
}
143-
case (_) {
144-
cx.sess.span_fatal(x.span,
145-
"evaluating unsupported binop");
146-
}
147-
}
148-
}
149-
case (_) {
150-
cx.sess.span_fatal(x.span, "evaluating unsupported expression");
151-
}
152-
}
153-
fail;
154-
}
155-
15668
fn val_eq(session::session sess, span sp, val av, val bv) -> bool {
15769
if (val_is_bool(av) && val_is_bool(bv)) {
15870
val_as_bool(av) == val_as_bool(bv)
@@ -200,10 +112,6 @@ fn eval_crate_directive(ctx cx, @ast::crate_directive cdir, str prefix,
200112
&mutable vec[@ast::view_item] view_items,
201113
&mutable vec[@ast::item] items) {
202114
alt (cdir.node) {
203-
case (ast::cdir_let(?id, ?x, ?cdirs)) {
204-
auto v = eval_expr(cx, x);
205-
eval_crate_directives(cx, cdirs, prefix, view_items, items);
206-
}
207115
case (ast::cdir_src_mod(?id, ?file_opt, ?attrs)) {
208116
auto file_path = id + ".rs";
209117
alt (file_opt) {

src/comp/front/fold.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,6 @@ fn noop_fold_crate(&crate_ c, ast_fold fld) -> crate_ {
139139
fn noop_fold_crate_directive(&crate_directive_ cd, ast_fold fld)
140140
-> crate_directive_ {
141141
ret alt(cd) {
142-
case(cdir_let(?id, ?e, ?cds)) {
143-
cdir_let(fld.fold_ident(id), fld.fold_expr(e),
144-
map(fld.fold_crate_directive, cds))
145-
}
146142
case(cdir_src_mod(?id,?fname,?attrs)) {
147143
cdir_src_mod(fld.fold_ident(id), fname, attrs)
148144
}

src/comp/front/parser.rs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2397,17 +2397,6 @@ fn parse_crate_directive(&parser p, vec[ast::attribute] first_outer_attr)
23972397
auto hi = p.get_hi_pos();
23982398
expect(p, token::SEMI);
23992399
ret spanned(lo, hi, ast::cdir_auth(n, a));
2400-
} else if (eat_word(p, "let")) {
2401-
expect(p, token::LPAREN);
2402-
auto id = parse_value_ident(p);
2403-
expect(p, token::EQ);
2404-
auto x = parse_expr(p);
2405-
expect(p, token::RPAREN);
2406-
expect(p, token::LBRACE);
2407-
auto v = parse_crate_directives(p, token::RBRACE, []);
2408-
auto hi = p.get_hi_pos();
2409-
expect(p, token::RBRACE);
2410-
ret spanned(lo, hi, ast::cdir_let(id, x, v));
24112400
} else if (is_view_item(p)) {
24122401
auto vi = parse_view_item(p);
24132402
ret spanned(lo, vi.span.hi, ast::cdir_view_item(vi));

src/comp/middle/visit.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,6 @@ fn visit_crate[E](&crate c, &E e, &vt[E] v) {
6060

6161
fn visit_crate_directive[E](&@crate_directive cd, &E e, &vt[E] v) {
6262
alt (cd.node) {
63-
case (cdir_let(_, ?ex, ?cdirs)) {
64-
vt(v).visit_expr(ex, e, v);
65-
for (@crate_directive cdir in cdirs) {
66-
visit_crate_directive(cdir, e, v);
67-
}
68-
}
6963
case (cdir_src_mod(_, _, _)) { }
7064
case (cdir_dir_mod(_, _, ?cdirs, _)) {
7165
for (@crate_directive cdir in cdirs) {

src/comp/middle/walk.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,6 @@ fn walk_crate_directive(&ast_visitor v, @ast::crate_directive cd) {
5656
if (!v.want_crate_directives()) { ret; }
5757
v.visit_crate_directive_pre(cd);
5858
alt (cd.node) {
59-
case (ast::cdir_let(_, ?e, ?cdirs)) {
60-
walk_expr(v, e);
61-
for (@ast::crate_directive cdir in cdirs) {
62-
walk_crate_directive(v, cdir);
63-
}
64-
}
6559
case (ast::cdir_src_mod(_, _, _)) { }
6660
case (ast::cdir_dir_mod(_, _, ?cdirs, _)) {
6761
for (@ast::crate_directive cdir in cdirs) {

0 commit comments

Comments
 (0)