about summary refs log tree commit diff
path: root/src/comp/middle
AgeCommit message (Collapse)AuthorLines
2011-05-05rustc: Add Rust intrinsic support to the crate metadata reader and writerPatrick Walton-0/+3
2011-05-05rustc: Fix bug in equal_abi that was preventing Rust intrinsics from workingPatrick Walton-0/+6
2011-05-05Enforce in typechecker that preds return a boolTim Chevalier-0/+11
as well as a test case
2011-05-05Bring back "pred" syntax for writing predicates for checkTim Chevalier-9/+116
This commit reinstates the requirement that the predicate in a "check" must be a manifest call to a special kind of function declared with the new "pred" keyword instead of "fn". Preds must have a boolean return type and can only call other preds; they can't have any effects (as enforced by the typechecker). The arguments to a predicate in a check expression must be slot variables or literals.
2011-05-05Check well-formedness of constraintsTim Chevalier-6/+23
Check that the operand in a constraint is an explicit name, and that the operands are all local variables or literals. Still need to check that the name refers to a pure function.
2011-05-05Check that the operand in a check is a callTim Chevalier-8/+19
In addition, fix bug in fold that was turning asserts into checks. More typechecking still needs to be done.
2011-05-05Remove 'deprecated mutable...' from our codeMarijn Haverbeke-12/+12
This should make compilation a bit less noisy.
2011-05-05Return a fresh, unreachable context after ret, break, and contMarijn Haverbeke-2/+2
This ensures we don't get compile errors on unreachable code (see test/run-pass/artificial-block.rs for an example of sane code that wasn't compiling). In the future, we might want to warn about non-trivial code appearing in an unreachable context, and/or avoid generating unreachable code altogether (though I'm sure LLVM will weed it out as well).
2011-05-05Eradicate fold from capture.rsMarijn Haverbeke-59/+54
The pass now uses walk.
2011-05-05rustc: Add a Link module; move crate writing to it to slim down trans slightlyPatrick Walton-158/+4
2011-05-05Fix and re-enable destructorsMarijn Haverbeke-6/+7
There was some confusion on whether the destructors took their argument by pointer or direct value. They now take it directly, just like other methods. You no longer get a segfault when a constructor actually does something with its self value.
2011-05-04Add a structure for passing option flags around the compiler, put it in ↵Graydon Hoare-25/+21
session, and use it.
2011-05-04Add missing ret statements to check_modBrian Anderson-0/+4
Un-XFAIL compile-fail export tests
2011-05-04Support new -g flag, only mangle glue names by type when it's passed.Graydon Hoare-8/+16
2011-05-03rustc: Stub support for Rust intrinsicsPatrick Walton-28/+55
2011-05-03rustc: Refactor metadata.Encode.* to not require a type abbreviation table ↵Patrick Walton-45/+53
if abbreviation isn't enabled
2011-05-03rustc: Name type glue properlyPatrick Walton-3/+17
2011-05-02Extract ast.is_exported from the resolve moduleBrian Anderson-18/+1
2011-05-02rustc: Time the Rust translation and LLVM passes separatelyPatrick Walton-3/+3
2011-05-02rustc: Remove the artificial block in ty.rs. Fixes self-hosting. Add a test ↵Patrick Walton-1/+1
case for this, XFAIL'd.
2011-05-02Un-revert "Use different syntax for checks that matter to typestate", fixing ↵Patrick Walton-381/+370
the problem. This reverts commit d08b443fffb1181d8d45ae5d061412f202dd4118.
2011-05-02Revert "Use different syntax for checks that matter to typestate"Graydon Hoare-370/+381
This reverts commit aa25f22f197682de3b18fc4c8ba068d1feda220f. It broke stage2, not sure why yet.
2011-05-02rustc: Allocate tydescs on the stack when it's safe to do so. 60% compile ↵Patrick Walton-12/+33
speed increase.
2011-05-02Use different syntax for checks that matter to typestateTim Chevalier-381/+370
This giant commit changes the syntax of Rust to use "assert" for "check" expressions that didn't mean anything to the typestate system, and continue using "check" for checks that are used as part of typestate checking. Most of the changes are just replacing "check" with "assert" in test cases and rustc.
2011-05-02rustc: Add a "fat tydesc" LLVM type to transPatrick Walton-0/+6
2011-05-01Remove the search direction from resolve's fold environmentBrian Anderson-36/+31
It's not actually involved in the fold so it can just be passed between the functions that need it.
2011-05-01Hide unexported tag variantsBrian Anderson-3/+5
2011-05-01Implement simple module exportBrian Anderson-12/+60
2011-04-29rustc: Run scope cleanups in the implicit block created by log statements. ↵Patrick Walton-14/+18
Fixes a leak.
2011-04-29rustc: Emit pure native glue; we don't call it yetPatrick Walton-8/+19
2011-04-29rustc: Start threading a purity flag through upcallsPatrick Walton-20/+26
2011-04-29Temporarily disable dtors; they broke self-hosting.Graydon Hoare-1/+3
2011-04-29rustc: First steps to determine whether tydescs escapePatrick Walton-17/+30
2011-04-29Don't emit metadata unless compiling -shared.Graydon Hoare-5/+8
2011-04-29Implement destructors in rustcMarijn Haverbeke-40/+60
Unlike rustboot, rustc keeps it destructors in vtables. Entry 0 holds either the destructor for the obj or a NULL pointer. The method offsets start at 1.
2011-04-29rustc: Add a --time-passes optionPatrick Walton-1/+1
2011-04-29rustc: Handle alias parameters in native functions properlyPatrick Walton-14/+20
2011-04-29Intern metadata while writing, shrink stage1 from 12mb to 5.7mb.Graydon Hoare-78/+175
2011-04-28rustc: Fix vec append glue for strings. Add a test case.Patrick Walton-5/+8
2011-04-28rustc: Add some value names to the vec append glue function. Un-XFAIL ↵Patrick Walton-0/+6
vec-growth.rs.
2011-04-28More attempts at fixing broken vec-append glue.Graydon Hoare-3/+3
2011-04-28Make the no-growth path (previously never exercised) in rustc *work*.Graydon Hoare-2/+1
2011-04-28Actually hit the no-growth path on vec-append.Graydon Hoare-2/+12
2011-04-28Consider unop deref as an lval. Un-XFAIL vec-push.Graydon Hoare-0/+1
2011-04-28Drop args in native stubs too.Graydon Hoare-0/+11
2011-04-28Add a session field to ty_ctxt and change an err to span_errTim Chevalier-10/+16
I changed instantiate to print out a more helpful error message, which required passing it a session argument. To avoid threading extra arguments through a lot of functions, I added a session field to ty_ctxt.
2011-04-28Reindented things and removed superfluous comments, nothing to see hereTim Chevalier-14/+7
2011-04-28Fix some nested patterns in rustcTim Chevalier-0/+2
In rustc, nested patterns were potentially matching when they shouldn't match, because a loop index wasn't being incremented. Fixed it and added one test case.
2011-04-28Fix bug in handling of expr_alt (postcond for alts was being intersected ↵Tim Chevalier-52/+102
with postcond for scrutinee)
2011-04-28Fixed bug in typeck that wasn't filling in anns for stmtsTim Chevalier-8/+19
(needed for typestate_check). Also changed a (log; fail) to (log_err; fail) in typestate_check, and added some more logging funs in util.common.