diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-01-31 11:52:46 -0800 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-01-31 11:52:46 -0800 |
| commit | 45c1dfe5b318dac6641dee439d6498209cae455a (patch) | |
| tree | f746e04a589c6596937aad2aa4a9986667660c25 | |
| parent | fba35e1a3c87892823d1f4d436b9f00a7864cf16 (diff) | |
| download | rust-45c1dfe5b318dac6641dee439d6498209cae455a.tar.gz rust-45c1dfe5b318dac6641dee439d6498209cae455a.zip | |
Don't compute pre- and postconditions for item_consts
Since item_consts can't refer to or modify local variables, they don't participate in typestate and thus get empty pre and postconditions by default. Closes #1660
| -rw-r--r-- | src/comp/middle/tstate/pre_post_conditions.rs | 17 | ||||
| -rw-r--r-- | src/test/run-pass/issue-1660.rs | 3 |
2 files changed, 4 insertions, 16 deletions
diff --git a/src/comp/middle/tstate/pre_post_conditions.rs b/src/comp/middle/tstate/pre_post_conditions.rs index 9977b20cddb..dcb117cb6a3 100644 --- a/src/comp/middle/tstate/pre_post_conditions.rs +++ b/src/comp/middle/tstate/pre_post_conditions.rs @@ -41,22 +41,7 @@ fn find_pre_post_method(ccx: crate_ctxt, m: @method) { fn find_pre_post_item(ccx: crate_ctxt, i: item) { alt i.node { item_const(_, e) { - // make a fake fcx - let v: @mutable [node_id] = @mutable []; - let fake_fcx = - { - // just bogus - enclosing: - {constrs: new_def_hash::<constraint>(), - num_constraints: 0u, - cf: return_val, - i_return: ninit(0, ""), - i_diverge: ninit(0, ""), - used_vars: v}, - id: 0, - name: "", - ccx: ccx}; - find_pre_post_expr(fake_fcx, e); + // do nothing -- item_consts don't refer to local vars } item_fn(_, _, body) { assert (ccx.fm.contains_key(i.id)); diff --git a/src/test/run-pass/issue-1660.rs b/src/test/run-pass/issue-1660.rs new file mode 100644 index 00000000000..0f4958e6ae1 --- /dev/null +++ b/src/test/run-pass/issue-1660.rs @@ -0,0 +1,3 @@ +fn main() { + const _x: int = 1<<2; +} |
