Skip to content

Commit ac4e613

Browse files
catamorphismgraydon
authored andcommitted
---
yaml --- r: 2645 b: refs/heads/master c: e1844d2 h: refs/heads/master i: 2643: 371f867 v: v3
1 parent 2c27ec0 commit ac4e613

File tree

5 files changed

+31
-27
lines changed

5 files changed

+31
-27
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 6dcd6072775f1b615e6844fe9a2fce246fc9cf70
2+
refs/heads/master: e1844d2719d1a6103f6662ec373f249fbdb953d3

trunk/src/comp/middle/tstate/annotate.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -127,14 +127,14 @@ fn collect_ids_decl(&@decl d, @vec[uint] res) -> () {
127127
}
128128
}
129129

130-
fn node_ids_in_fn(&_fn f, &ident i, &def_id d, @vec[uint] res) -> () {
130+
fn node_ids_in_fn(&_fn f, &ident i, &def_id d, &ann a, @vec[uint] res) -> () {
131131
auto collect_ids = walk::default_visitor();
132132
collect_ids = rec(visit_expr_pre = bind collect_ids_expr(_,res),
133133
visit_block_pre = bind collect_ids_block(_,res),
134134
visit_stmt_pre = bind collect_ids_stmt(_,res),
135135
visit_decl_pre = bind collect_ids_decl(_,res)
136136
with collect_ids);
137-
walk::walk_fn(collect_ids, f, i, d);
137+
walk::walk_fn(collect_ids, f, i, d, a);
138138
}
139139

140140
fn init_vecs(&crate_ctxt ccx, @vec[uint] node_ids, uint len) -> () {
@@ -145,21 +145,22 @@ fn init_vecs(&crate_ctxt ccx, @vec[uint] node_ids, uint len) -> () {
145145
}
146146

147147
fn visit_fn(&crate_ctxt ccx, uint num_locals, &_fn f, &ident i,
148-
&def_id d) -> () {
148+
&def_id d, &ann a) -> () {
149149
let vec[uint] node_ids_ = [];
150150
let @vec[uint] node_ids = @node_ids_;
151-
node_ids_in_fn(f, i, d, node_ids);
151+
node_ids_in_fn(f, i, d, a, node_ids);
152152
init_vecs(ccx, node_ids, num_locals);
153153
}
154154

155-
fn annotate_in_fn(&crate_ctxt ccx, &_fn f, &ident i, &def_id f_id) -> () {
155+
fn annotate_in_fn(&crate_ctxt ccx, &_fn f, &ident i, &def_id f_id, &ann a)
156+
-> () {
156157
auto f_info = get_fn_info(ccx, f_id);
157-
visit_fn(ccx, num_locals(f_info), f, i, f_id);
158+
visit_fn(ccx, num_locals(f_info), f, i, f_id, a);
158159
}
159160

160161
fn annotate_crate(&crate_ctxt ccx, &crate crate) -> () {
161162
auto do_ann = walk::default_visitor();
162-
do_ann = rec(visit_fn_pre = bind annotate_in_fn(ccx, _, _, _)
163+
do_ann = rec(visit_fn_pre = bind annotate_in_fn(ccx,_,_,_,_)
163164
with do_ann);
164165
walk::walk_crate(do_ann, crate);
165166
}

trunk/src/comp/middle/tstate/collect_locals.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,12 @@ fn collect_local(&@vec[tup(ident, def_id)] vars, &@decl d) -> () {
4545
}
4646
}
4747

48-
fn find_locals(&_fn f, &ident i, &def_id d) -> @vec[tup(ident,def_id)] {
48+
fn find_locals(&_fn f, &ident i, &def_id d, &ann a)
49+
-> @vec[tup(ident,def_id)] {
4950
auto res = @vec::alloc[tup(ident,def_id)](0u);
5051
auto visitor = walk::default_visitor();
5152
visitor = rec(visit_decl_pre=bind collect_local(res,_) with visitor);
52-
walk_fn(visitor, f, i, d);
53+
walk_fn(visitor, f, i, d, a);
5354
ret res;
5455
}
5556

@@ -62,7 +63,8 @@ fn add_var(def_id v, ident nm, uint next, fn_info tbl) -> uint {
6263

6364
/* builds a table mapping each local var defined in f
6465
to a bit number in the precondition/postcondition vectors */
65-
fn mk_fn_info(&crate_ctxt ccx, &_fn f, &ident f_name, &def_id f_id) -> () {
66+
fn mk_fn_info(&crate_ctxt ccx, &_fn f, &ident f_name, &def_id f_id, &ann a)
67+
-> () {
6668
auto res = rec(vars=@new_def_hash[var_info](),
6769
cf=f.decl.cf);
6870
let uint next = 0u;
@@ -71,7 +73,7 @@ fn mk_fn_info(&crate_ctxt ccx, &_fn f, &ident f_name, &def_id f_id) -> () {
7173
/* ignore args, which we know are initialized;
7274
just collect locally declared vars */
7375

74-
let @vec[tup(ident,def_id)] locals = find_locals(f, f_name, f_id);
76+
let @vec[tup(ident,def_id)] locals = find_locals(f, f_name, f_id, a);
7577
for (tup(ident,def_id) p in *locals) {
7678
next = add_var(p._1, p._0, next, res);
7779
}
@@ -90,7 +92,7 @@ fn mk_fn_info(&crate_ctxt ccx, &_fn f, &ident f_name, &def_id f_id) -> () {
9092
to bit number) */
9193
fn mk_f_to_fn_info(&crate_ctxt ccx, @crate c) -> () {
9294
let ast_visitor vars_visitor = walk::default_visitor();
93-
vars_visitor = rec(visit_fn_pre=bind mk_fn_info(ccx,_,_,_)
95+
vars_visitor = rec(visit_fn_pre=bind mk_fn_info(ccx,_,_,_,_)
9496
with vars_visitor);
9597

9698
walk_crate(vars_visitor, *c);

trunk/src/comp/middle/tstate/pre_post_conditions.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,6 @@ import front::ast::stmt_expr;
138138
import front::ast::block;
139139
import front::ast::block_;
140140

141-
import middle::fold::span;
142-
import middle::fold::respan;
143-
144141
import util::common::new_def_hash;
145142
import util::common::decl_lhs;
146143
import util::common::uistr;
@@ -679,7 +676,7 @@ fn find_pre_post_fn(&fn_ctxt fcx, &_fn f) -> () {
679676
find_pre_post_block(fcx, f.body);
680677
}
681678

682-
fn fn_pre_post(crate_ctxt ccx, &_fn f, &ident i, &def_id id) -> () {
679+
fn fn_pre_post(crate_ctxt ccx, &_fn f, &ident i, &def_id id, &ann a) -> () {
683680
assert (ccx.fm.contains_key(id));
684681
auto fcx = rec(enclosing=ccx.fm.get(id),
685682
id=id, name=i, ccx=ccx);

trunk/src/comp/middle/walk.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,10 @@ type ast_visitor =
3232
fn (&@ast::expr e) visit_expr_post,
3333
fn (&@ast::ty t) visit_ty_pre,
3434
fn (&@ast::ty t) visit_ty_post,
35-
fn (&ast::_fn f, &ast::ident name, &ast::def_id d_id) visit_fn_pre,
36-
fn (&ast::_fn f, &ast::ident name, &ast::def_id d_id) visit_fn_post);
35+
fn (&ast::_fn f, &ast::ident name,
36+
&ast::def_id d_id, &ast::ann a) visit_fn_pre,
37+
fn (&ast::_fn f, &ast::ident name,
38+
&ast::def_id d_id, &ast::ann a) visit_fn_post);
3739

3840
fn walk_crate(&ast_visitor v, &ast::crate c) {
3941
if (!v.keep_going()) { ret; }
@@ -93,8 +95,8 @@ fn walk_item(&ast_visitor v, @ast::item i) {
9395
walk_ty(v, t);
9496
walk_expr(v, e);
9597
}
96-
case (ast::item_fn(?i, ?f, _, ?d, _)) {
97-
walk_fn(v, f, i, d);
98+
case (ast::item_fn(?i, ?f, _, ?d, ?a)) {
99+
walk_fn(v, f, i, d, a);
98100
}
99101
case (ast::item_mod(_, ?m, _)) {
100102
walk_mod(v, m);
@@ -118,13 +120,14 @@ fn walk_item(&ast_visitor v, @ast::item i) {
118120
}
119121
for (@ast::method m in ob.methods) {
120122
v.visit_method_pre(m);
121-
walk_fn(v, m.node.meth, m.node.ident, m.node.id);
123+
walk_fn(v, m.node.meth, m.node.ident, m.node.id, m.node.ann);
122124
v.visit_method_post(m);
123125
}
124126
alt (ob.dtor) {
125127
case (none[@ast::method]) {}
126128
case (some[@ast::method](?m)) {
127-
walk_fn(v, m.node.meth, m.node.ident, m.node.id);
129+
walk_fn(v, m.node.meth, m.node.ident, m.node.id,
130+
m.node.ann);
128131
}
129132
}
130133
}
@@ -229,12 +232,13 @@ fn walk_fn_decl(&ast_visitor v, &ast::fn_decl fd) {
229232
walk_ty(v, fd.output);
230233
}
231234

232-
fn walk_fn(&ast_visitor v, &ast::_fn f, &ast::ident i, &ast::def_id d) {
235+
fn walk_fn(&ast_visitor v, &ast::_fn f, &ast::ident i, &ast::def_id d,
236+
&ast::ann a) {
233237
if (!v.keep_going()) { ret; }
234-
v.visit_fn_pre(f, i, d);
238+
v.visit_fn_pre(f, i, d, a);
235239
walk_fn_decl(v, f.decl);
236240
walk_block(v, f.body);
237-
v.visit_fn_post(f, i, d);
241+
v.visit_fn_post(f, i, d, a);
238242
}
239243

240244
fn walk_block(&ast_visitor v, &ast::block b) {
@@ -459,7 +463,7 @@ fn def_visit_arm(&ast::arm a) { }
459463
fn def_visit_decl(&@ast::decl d) { }
460464
fn def_visit_expr(&@ast::expr e) { }
461465
fn def_visit_ty(&@ast::ty t) { }
462-
fn def_visit_fn(&ast::_fn f, &ast::ident i, &ast::def_id d) { }
466+
fn def_visit_fn(&ast::_fn f, &ast::ident i, &ast::def_id d, &ast::ann a) { }
463467

464468
fn default_visitor() -> ast_visitor {
465469

0 commit comments

Comments
 (0)