Commit Graph

47 Commits

Author SHA1 Message Date
Tim Chevalier 2e90bd94de Continued sketching out code for checking states against preconditions.
It's still sketchy. I added a typestate annotation field to statements
tagged stmt_decl or stmt_expr, because a stmt_decl statement has a typestate
that's different from that of its child node. This necessitated trivial
changes to a bunch of other files all over to the compiler. I also added a
few small standard library functions, some of which I didn't actually end
up using but which I thought might be useful anyway.
2011-04-06 17:58:18 -07:00
Tim Chevalier 86d4601827 More work on typestate. Sketched out code for computing and checking prestates and poststates. Still a long ways away. 2011-04-06 00:17:06 +00:00
Graydon Hoare 23f18a096f Re-enable typestate_check in build, was lost during merge. Sorry. 2011-04-01 17:23:56 -07:00
Patrick Walton 6dc452335a rustc: Get tag variants from the crate metadata 2011-04-01 13:02:44 -07:00
Tim Chevalier 3130348ee1 Started adding support for typestate checking.
I added a new field to the ast "ann" type for typestate information.
Currently, the field contains a record of a precondition bit vector and
postcondition vector, but I tried to structure things so as to make
it easy to change the representation of the typestate annotation type.
I also had to add annotations to some syntactic forms that didn't have
them before (fail, ret, be...), with all the boilerplate changes
that that would imply.

The main call to the typestate_check entry point is commented out and
the actual pre-postcondition algorithm only has a few cases
implemented, though the overall AST traversal is there. The rest of
the typestate algorithm isn't implemented yet.
2011-04-01 11:27:32 -07:00
Patrick Walton 3945ace520 rustc: Write out an index of definition info in crate metadata 2011-03-31 11:56:02 -07:00
Graydon Hoare ffc188a4dd Tweak build command on rustc. 2011-03-31 14:41:35 +00:00
Graydon Hoare 734abe593d Teach trans to emit undefined references to 'use'd symbols. Can compile and run a simple 'use std;' example now. 2011-03-29 13:23:51 -07:00
Graydon Hoare 540d29f641 Move all allocas to dedicated basic block at top of function, to keep frames finite. Un-comment next size in nbody.rs. 2011-03-28 18:07:29 -07:00
Patrick Walton 2809e30d1d rustc: Parse types in external metadata 2011-03-28 16:49:26 -07:00
Patrick Walton 94c19a18ae rustc: Look up names in "use"d crates 2011-03-25 17:54:48 -07:00
Patrick Walton af3d0d1848 rustc: Open "use"d crates; add a _vec.vec_from_buf() method along the way; XFAIL use-import-export.rs in rustc 2011-03-24 17:22:07 -07:00
Patrick Walton 4c5ab05741 rustc: Switch over to using rustllvm.dll exclusively, ending the "Franken-LLVM" problem 2011-03-23 17:48:53 -07:00
Rafael Ávila de Espíndola e65e1716a7 Revert 6fdb81fa17, it is causing failures in
the bots.
2011-03-16 11:46:51 -04:00
Patrick Walton 6fdb81fa17 rustc: Open "use"d crates with the LLVM object file reader 2011-03-15 18:05:29 -07:00
Patrick Walton 7d32f3d052 rustc: Add a stub crate reader module for "use" directives 2011-03-15 16:30:43 -07:00
Graydon Hoare 73f4728182 Append 'svn' to version in dll name, hopefully to bring win32 up again. 2011-03-15 12:55:23 -07:00
Patrick Walton b07634f212 rustc: Add Rust bindings to the LLVM object file library 2011-03-15 12:27:48 -07:00
Graydon Hoare 316158df8e Bump LLVM version strings to 3.0svn, we're effectively tied to it now anyways. 2011-03-14 17:33:06 -07:00
Patrick Walton 9b3db0ed44 rustc: Add some stub metadata to each crate 2011-03-11 15:35:50 -08:00
Marijn Haverbeke aed40fbcd8 Have the pretty-printer take a writer stream as argument
It now uses a string writer to also fill in for
middle.ty.ast_ty_to_str
2011-03-09 16:15:55 -08:00
Brian Anderson fa2525a7bd Remove old pretty-printer from rustc 2011-03-07 22:06:07 -05:00
Marijn Haverbeke 0624f9db4a Add a pretty-printer
Adds a -pp option to the compiler which will cause it to simply
pretty-print the given file.
2011-03-07 12:58:08 -08:00
Brian Anderson 1badf9316a Begin an AST pretty-printer 2011-03-02 10:28:14 -08:00
Brian Anderson 9528c34774 Begin implementing #fmt in rustc 2011-03-02 10:28:14 -08:00
Graydon Hoare b2a09562a6 Factor crate expr evaluator out of parser, expand to simple scalars and ops, if, alt. 2011-02-24 15:55:10 -08:00
Graydon Hoare 8bc57fa85e Tweak effect-checking rules in rustboot, remove/rewrite/re-auth impure cases in trans.rs 2011-01-21 07:59:56 -08:00
Patrick Walton 744b164b7d rustc: Move type logic out of typeck so trans doesn't look like it's calling into typeck 2010-12-21 16:24:17 -08:00
Patrick Walton c00bda539d rustc: First stab at a typechecker 2010-11-19 17:50:45 -08:00
Graydon Hoare 3956b98312 Switch rustc to llvm 2.8 rather than 2.8svn on windows. 2010-11-05 18:31:20 -07:00
Graydon Hoare da13c508d8 First pass on splitting stratum and opacity off of effects. WIP. 2010-11-02 11:11:58 -07:00
Dave Herman dbe27199b8 line length police; moved comp.util.bits to std.bitv 2010-10-21 11:39:53 -07:00
Dave Herman 8f71dad2c9 created a first draft of the bit-set library needed for typestate 2010-10-20 17:04:15 -07:00
Graydon Hoare fa5ef4cfb6 Add the beginnings of an ast folder plus an empty module for resolve. 2010-10-06 18:36:28 -07:00
Graydon Hoare 4cfc4250bf More work on trans, almost getting to the point of emitting an upcall. 2010-09-24 14:56:04 -07:00
Graydon Hoare 46e46d0b49 Translate a bunch of the material (lltrans, llasm, abi) from rustboot to rustc, and move files around. 2010-09-23 15:46:31 -07:00
Graydon Hoare 738fe078a4 Move llvm-using code in rustc to trans module. 2010-09-22 15:27:40 -07:00
Graydon Hoare eb90be7798 Add session, span tracking, error reporting, beginning of a function to parse an item to rustc. 2010-09-01 13:24:14 -07:00
Graydon Hoare 4727532e95 Simplify lexer/parser structure to use stdio_reader. 2010-08-18 15:41:24 -07:00
Graydon Hoare a1b57e69cd Add mod token to rustc. 2010-08-18 11:35:12 -07:00
Graydon Hoare 49f668dff3 Add mod common to rustc. 2010-08-18 11:34:47 -07:00
Graydon Hoare b5ad78f316 Change indent on rustc.rc. 2010-08-18 11:34:22 -07:00
Graydon Hoare 3f2c39b3d8 Fix symbol names on LLVM C library binding and library-name for LLVM. 2010-08-18 00:19:25 -07:00
Graydon Hoare 7e62aa6801 Absent any deep overhauls to syntax or constant-handling, hack in the ability to project a cexp var binding to a token in the parser. Use it in comp/rustc.rc and comp/lib/llvm.rs. 2010-08-16 13:02:46 -07:00
Graydon Hoare 5297582ba2 Add mostly-empty AST module to rustc. 2010-08-12 10:27:50 -07:00
Graydon Hoare cd0c9dd4fb Start bringing in LLVM bindings. 2010-07-12 17:47:40 -07:00
Graydon Hoare d6b7c96c3e Populate tree. 2010-06-23 21:03:09 -07:00