Go to file
Tim Chevalier b7dd75c904 Handle nested items correctly in typestate_check
Summary says it all. Actually, only nested objects and functions
are handled, but that's better than before. The fold that I was using
before to traverse a crate wasn't working correctly, because annotations
have to reflect the number of local variables of the nearest enclosing
function (in turn, because annotations are represented as bit vectors).
The fold was traversing the AST in the wrong order, first filling in
the annotations correctly, but then re-traversing them with the bit
vector length for any outer nested functions, and so on.

Remedying this required writing a lot of tedious boilerplate code
because I scrapped the idea of using a fold altogether.

I also made typestate_check handle unary, field, alt, and fail.

Also, some miscellaneous changes:
* added annotations to blocks in typeck
* fix pprust so it can handle spawn
* added more logging functions in util.common
* fixed _vec.or
* added maybe and from_maybe in option
* removed fold_block field from ast_fold, since it was never used
2011-04-19 14:56:28 -07:00
doc Remove half-baked 'opacity' layer qualifier. 2011-04-19 14:00:04 -07:00
src Handle nested items correctly in typestate_check 2011-04-19 14:56:28 -07:00
.gitignore Continued sketching out code for checking states against preconditions. 2011-04-06 17:58:18 -07:00
AUTHORS.txt Add Lindsey to AUTHORS. 2011-03-22 14:25:07 -07:00
configure Add support for --disable-optimize 2011-04-08 15:49:14 -07:00
LICENSE.txt Populate tree. 2010-06-23 21:03:09 -07:00
Makefile.in Remove effect system from src. 2011-04-19 13:35:49 -07:00
README Update README to point to github, test email notification. 2010-06-23 21:11:10 -07:00

This is a compiler and suite of associated libraries and documentation for the
Rust programming language.

See LICENSE.txt for terms of copyright and redistribution.

See http://github.com/graydon/rust for current development page.