rust/src
Tim Chevalier c3bc8fada8 Allow omission of the '.' after nullary tag patterns
This commit allows patterns like:

alt x { some(_) { ... } none { } }

without the '.' after none. The parser suspends judgment about
whether a bare ident is a tag or a new bound variable; instead,
the resolver disambiguates.

This means that any code after resolution that pattern-matches on
patterns needs to call pat_util::normalize_pat, which consults
an environment to do this disambiguation.

In addition, local variables are no longer allowed to shadow
tag names, so this required changing some code (e.g. renaming
variables named "mut", and renaming ast::sub to subtract).

The parser currently accepts patterns with and without the '.'.
Once the compiler and libraries are changed, it will no longer
accept the '.'.
2012-01-17 10:08:16 -08:00
..
cargo rustc: Rename mk_codemap_handler to mk_handler 2012-01-14 15:14:43 -08:00
comp Allow omission of the '.' after nullary tag patterns 2012-01-17 10:08:16 -08:00
compiletest Major clean-up of std::io 2012-01-11 21:00:11 +01:00
etc Move emacs mode into tree 2012-01-16 12:44:24 +01:00
fuzzer rustc: Rename mk_codemap_handler to mk_handler 2012-01-14 15:14:43 -08:00
libcore Make str::replace smarter. 2012-01-16 13:35:35 -05:00
libstd Allow omission of the '.' after nullary tag patterns 2012-01-17 10:08:16 -08:00
libuv@f1859eb841 Re-add libuv as a submodule. 2011-11-08 19:01:47 -08:00
llvm@d578b905de llvm: Switch back to LLVM trunk 2012-01-13 11:05:59 -08:00
rt Use a memset upcall to zero things without static alignment 2012-01-17 14:04:55 +01:00
rustdoc rustdoc: Write headers for modules 2012-01-16 23:10:25 -08:00
rustllvm llvm: Switch back to LLVM trunk 2012-01-13 11:05:59 -08:00
test Allow omission of the '.' after nullary tag patterns 2012-01-17 10:08:16 -08:00
README Mention new dirs in README. 2011-12-07 15:34:30 -08:00
snapshots.txt Register snapshots 2012-01-15 13:50:37 -08:00

This is preliminary version of the Rust compiler.

Source layout:

comp/              The self-hosted compiler

cargo/             The package manager

libcore/           The core library (imported and linked by default)
libstd/            The standard library (slightly more peripheral code)

rustllvm/          LLVM support code

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/libuv           - The library used for async IO in the runtime
rt/{sync,util}     - Small utility classes for the runtime.

test/              Testsuite
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.