2e90bd94de
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.
This is preliminary version of the Rust compiler(s). Source layout: boot/ The bootstrap compiler boot/README - More-detailed guide to it. boot/fe - Front end (lexer, parser, AST) boot/me - Middle end (resolve, check, layout, trans) boot/be - Back end (IL, RA, insns, asm, objfiles) boot/util - Ubiquitous helpers boot/driver - Compiler driver comp/ The self-hosted compiler ("rustc": incomplete) comp/* - Similar structure as in boot/ rt/ The runtime system rt/rust_*.cpp - The majority of the runtime services rt/isaac - The PRNG used for pseudo-random choices in the runtime rt/bigint - The bigint library used for the 'big' type rt/uthash - Small hashtable-and-list library for C, used in runtime rt/{sync,util} - Small utility classes for the runtime. test/ Testsuite (for both bootstrap and self-hosted) test/compile-fail - Tests that should fail to compile test/run-fail - Tests that should compile, run and fail test/run-pass - Tests that should compile, run and succeed test/bench - Benchmarks and miscellanea Please be gentle, it's a work in progress.