2010-06-23 23:03:09 -05:00
|
|
|
|
|
|
|
// -*- rust -*-
|
|
|
|
|
2011-06-17 21:28:43 -05:00
|
|
|
#[name = "rustc"];
|
|
|
|
#[vers = "0.1"];
|
|
|
|
#[uuid = "0ce89b41-2f92-459e-bbc1-8f5fe32f16cf"];
|
|
|
|
#[url = "http://rust-lang.org/src/rustc"];
|
2011-06-18 18:44:53 -05:00
|
|
|
#[desc = "The Rust compiler"];
|
|
|
|
#[license = "BSD"];
|
2011-06-08 17:57:56 -05:00
|
|
|
|
2011-05-05 21:44:00 -05:00
|
|
|
|
2011-06-10 17:54:41 -05:00
|
|
|
use std (name = "std",
|
|
|
|
vers = "0.1",
|
|
|
|
url = "http://rust-lang.org/src/std");
|
2010-06-23 23:03:09 -05:00
|
|
|
|
2011-04-19 18:40:46 -05:00
|
|
|
mod middle {
|
|
|
|
mod trans;
|
|
|
|
mod ty;
|
2011-04-20 05:35:34 -05:00
|
|
|
mod walk;
|
2011-06-08 15:48:19 -05:00
|
|
|
mod visit;
|
2011-06-20 02:59:16 -05:00
|
|
|
mod ast_map;
|
2011-04-19 18:40:46 -05:00
|
|
|
mod resolve;
|
|
|
|
mod typeck;
|
2011-06-06 08:22:13 -05:00
|
|
|
mod alias;
|
2011-05-16 21:21:29 -05:00
|
|
|
|
2011-05-14 21:02:30 -05:00
|
|
|
mod tstate {
|
|
|
|
mod ck;
|
|
|
|
mod annotate;
|
2011-05-16 21:21:29 -05:00
|
|
|
mod aux = "auxiliary.rs";
|
2011-05-14 21:02:30 -05:00
|
|
|
mod bitvectors;
|
|
|
|
mod collect_locals;
|
|
|
|
mod pre_post_conditions;
|
|
|
|
mod states;
|
|
|
|
mod ann;
|
Compute typestate properly for move
typestate now drops constraints correctly in the post-state of
a move expression or a declaration whose op is a move. It doesn't
yet drop constraints mentioning variables that get updated.
To do this, I had to change typestate to use trit-vectors instead
of bit-vectors, because for every constraint, there are three
possible values: known-to-be-false (e.g. after x <- y, init(y) is
known-to-be-false), known-to-be-true, and unknown. Before, we
conflated known-to-be-false with unknown. But move requires them
to be treated differently. Consider:
(program a)
(a1) x = 1;
(a2) y <- x;
(a3) log x;
(program b)
(b1) x = 1;
(b2) y <- z;
(b3) log x;
With only two values, the postcondition of statement a2 for
constraint init(x) is the same as that of b2: 0. But in (a2)'s
postcondition, init(x) *must* be false, but in (b2)'s condition,
it's just whatever it was in the postcondition of the preceding statement.
2011-06-22 23:26:34 -05:00
|
|
|
mod tritv;
|
2011-05-14 21:02:30 -05:00
|
|
|
}
|
2011-04-19 18:40:46 -05:00
|
|
|
}
|
|
|
|
|
2011-05-14 21:02:30 -05:00
|
|
|
|
2011-04-19 18:40:46 -05:00
|
|
|
mod pretty {
|
|
|
|
mod pprust;
|
|
|
|
mod pp;
|
2011-06-09 11:48:16 -05:00
|
|
|
mod ppaux;
|
2011-04-19 18:40:46 -05:00
|
|
|
}
|
|
|
|
|
2010-09-23 17:46:31 -05:00
|
|
|
mod front {
|
2010-08-12 12:27:50 -05:00
|
|
|
mod ast;
|
2011-06-04 14:41:45 -05:00
|
|
|
mod ext;
|
2011-02-23 22:48:01 -06:00
|
|
|
mod extfmt;
|
2011-05-04 21:05:16 -05:00
|
|
|
mod extenv;
|
2011-04-08 11:44:20 -05:00
|
|
|
mod codemap;
|
2010-06-23 23:03:09 -05:00
|
|
|
mod lexer;
|
|
|
|
mod parser;
|
2010-08-18 13:35:12 -05:00
|
|
|
mod token;
|
2011-02-24 17:54:55 -06:00
|
|
|
mod eval;
|
2010-06-23 23:03:09 -05:00
|
|
|
}
|
|
|
|
|
2010-09-23 17:46:31 -05:00
|
|
|
mod back {
|
2011-05-13 15:47:37 -05:00
|
|
|
mod link;
|
2010-09-23 17:46:31 -05:00
|
|
|
mod abi;
|
2011-05-09 17:32:12 -05:00
|
|
|
mod upcall;
|
2010-09-23 17:46:31 -05:00
|
|
|
mod x86;
|
|
|
|
}
|
|
|
|
|
2011-06-27 16:18:32 -05:00
|
|
|
mod metadata {
|
2011-06-27 18:38:57 -05:00
|
|
|
export tyencode;
|
|
|
|
export encoder;
|
|
|
|
export decoder;
|
|
|
|
export creader;
|
|
|
|
|
2011-06-27 16:54:59 -05:00
|
|
|
mod defs;
|
2011-06-27 16:37:02 -05:00
|
|
|
mod tyencode;
|
2011-06-27 17:30:17 -05:00
|
|
|
mod tydecode;
|
2011-06-27 17:20:17 -05:00
|
|
|
mod encoder;
|
2011-06-27 17:53:27 -05:00
|
|
|
mod decoder;
|
2011-06-27 16:18:32 -05:00
|
|
|
mod creader;
|
|
|
|
}
|
|
|
|
|
2010-06-23 23:03:09 -05:00
|
|
|
mod driver {
|
|
|
|
mod rustc;
|
2010-09-01 15:24:14 -05:00
|
|
|
mod session;
|
2010-06-23 23:03:09 -05:00
|
|
|
}
|
|
|
|
|
2010-08-18 13:34:47 -05:00
|
|
|
mod util {
|
|
|
|
mod common;
|
2011-05-20 15:57:09 -05:00
|
|
|
mod data;
|
2010-08-18 13:34:47 -05:00
|
|
|
}
|
|
|
|
|
2011-05-12 10:24:54 -05:00
|
|
|
auth front::creader::load_crate = unsafe;
|
|
|
|
auth front::creader::get_metadata_section = unsafe;
|
|
|
|
auth middle::metadata = unsafe;
|
|
|
|
auth middle::trans = unsafe;
|
|
|
|
auth lib::llvm = unsafe;
|
2010-09-22 17:21:06 -05:00
|
|
|
|
2010-07-12 19:47:40 -05:00
|
|
|
mod lib {
|
2011-06-20 16:59:45 -05:00
|
|
|
mod llvm;
|
2010-07-12 19:47:40 -05:00
|
|
|
}
|
|
|
|
|
2010-06-23 23:03:09 -05:00
|
|
|
// Local Variables:
|
|
|
|
// fill-column: 78;
|
|
|
|
// indent-tabs-mode: nil
|
2010-08-18 13:34:22 -05:00
|
|
|
// c-basic-offset: 4
|
2010-06-23 23:03:09 -05:00
|
|
|
// buffer-file-coding-system: utf-8-unix
|
2011-03-31 09:41:35 -05:00
|
|
|
// compile-command: "make -k -C $RBUILD 2>&1 | sed -e 's/\\/x\\//x:\\//g'";
|
2010-06-23 23:03:09 -05:00
|
|
|
// End:
|