Brian Anderson
0d83956e2b
Refactor resolve_import
...
Issue #817
2011-08-17 11:05:20 -07:00
Brian Anderson
206495b0a9
Refactor resolve_import
...
Issue #817
2011-08-17 11:05:15 -07:00
Brian Anderson
45706a63bf
Remove unused case in resolve
...
Issue #817
2011-08-17 11:05:11 -07:00
Brian Anderson
bfbe8870d7
Refactor import lookup in middle:resolve
...
Issue #817
2011-08-17 11:05:04 -07:00
Brian Anderson
cd54e77720
Allow multiple imports in a single statement
...
Like so: import foo::{bar, baz};
Issue #817
2011-08-17 11:04:56 -07:00
Erick Tryzelaar
af21a27002
Port the compiler to the expr foo::<T> syntax.
2011-08-16 15:05:56 -07:00
Erick Tryzelaar
4abc471390
Port the compiler to foo<T> decl syntax.
2011-08-16 15:05:56 -07:00
Erick Tryzelaar
e4a0f997fb
Port the compiler to the typaram foo<T> syntax.
2011-08-16 15:05:56 -07:00
Brian Anderson
f05a91a0dc
Rename std::ivec to std::vec
2011-08-16 10:36:19 -07:00
Marijn Haverbeke
e33af7e0b5
Make let bindings' scope start at their definition
...
Also, allow let bindings in a block to shadow each other.
2011-08-16 13:45:41 +02:00
Lindsey Kuper
f91351aaf6
The wonky for...in... whitespace was bothering me. Sorry!
2011-08-15 22:19:50 -07:00
Marijn Haverbeke
3f127e397f
Add tuple patterns
2011-08-15 13:20:16 +02:00
Brian Anderson
119f43e0c7
Rename str::connect_ivec to str::connect
2011-08-12 12:08:27 -07:00
Erick Tryzelaar
8b15045224
Port the compiler to the ivec type [T] syntax.
2011-08-09 15:53:26 -07:00
Marijn Haverbeke
d08c0f0ec1
Make ast::pat_bindings an iterator
...
And use it to get rid of some repetetive code
2011-08-03 10:26:41 +02:00
Marijn Haverbeke
985c32ef4c
Partially implement destructuring locals
...
You can now say
let {bcx, val} = some_result_returner();
Similar for loop variables. Assigning to such variables is not safe
yet. Function arguments also remain a TODO.
2011-08-01 17:51:37 +02:00
Graydon Hoare
3e63fdc4c9
Thread kinds into the type system. Don't quite activate yet, since it breaks stdlib and snapshot isn't ready to compile modified stdlib.
2011-07-28 13:29:39 -07:00
Graydon Hoare
acac6abc85
Parse, store and print type parameter kind constraints.
2011-07-28 17:22:59 +00:00
Marijn Haverbeke
df7f21db09
Reformat for new syntax
2011-07-27 15:54:33 +02:00
Marijn Haverbeke
95b926f675
Add missing case for view_item_use in resolve.rs
...
Closes #748
2011-07-27 10:01:21 +02:00
Michael Sullivan
ac948b4ccd
Resolve and typecheck alias-environment-capturing blocks.
2011-07-26 12:30:14 -07:00
Marijn Haverbeke
2509a3dcae
Resolve loop collection expressions in the right scope
...
Closes #745
2011-07-26 15:52:59 +02:00
Marijn Haverbeke
bfaa85b735
Detect duplicate field names in record literals and types
...
Closes #746
2011-07-26 15:32:16 +02:00
Marijn Haverbeke
aea537779e
Remove all uses of tuples from the compiler and stdlib
2011-07-26 14:06:02 +02:00
Michael Sullivan
25a89e068d
Rename the block type to be blk also. Sorry.
2011-07-25 14:18:07 -07:00
Marijn Haverbeke
b9b674abe7
Start adding support for multiple variable declarations per stmt
...
This adds parser support and most of the machinery for
auto x = 10, y = 20;
However, the above still goes wrong somewhere in typestate, causing
the state checker to believe only the last variable in the list is
initialized after the statement.
Tim, if you have a moment, could you go over the changes to the tstate
code in this patch and see where I'm going wrong?
Multi-var-decls without the typestate extension
Add a loop
2011-07-22 17:51:26 +02:00
Marijn Haverbeke
5864d4e13a
Report unresolved names only once per function
...
Closes #708
2011-07-22 11:38:30 +02:00
Tim Chevalier
bd4aeef78b
Beginnings of support for constrained types
...
Programs with constrained types now parse and typecheck, but
typestate doesn't check them specially, so the one relevant test
case so far is XFAILed.
Also rewrote all of the constraint-related data structures in the
process (again), for some reason. I got rid of a superfluous
data structure in the context that was mapping front-end constraints
to resolved constraints, instead handling constraints in the same
way in which everything else gets resolved.
2011-07-19 18:57:28 -07:00
Patrick Walton
917afa4cc9
rustc: Remove a bunch of exterior vectors
2011-07-15 11:38:46 -07:00
Tim Chevalier
f26ca025de
Make resolve and the typechecker check for a main fn of the
...
correct type
This means if a non-library program leaves out the main program,
the error gets caught earlier than link.
Closes #626 .
2011-07-13 18:30:53 -07:00
Patrick Walton
2a3ab10f20
rustc: Remove exterior vectors from resolve again
...
This reverts commit 6390c43dc465b7c89eb542855bdfe12103ee330f.
2011-07-13 16:44:39 -07:00
Graydon Hoare
39151f2ad8
Prohibit trailing whitespace under 'tidy' script. Clean up all caught cases.
2011-07-13 15:44:09 -07:00
Marijn Haverbeke
6cb5c0980a
box patterns, expect for the trans part
2011-07-13 10:50:16 +02:00
Patrick Walton
6390c43dc4
Revert "rustc: Remove exterior vectors from resolve"
...
This reverts commit 0ffe8c81c31f00e7a032d88d5397930fefbfc97f.
2011-07-12 18:42:58 -07:00
Patrick Walton
0ffe8c81c3
rustc: Remove exterior vectors from resolve
2011-07-12 18:29:03 -07:00
Tim Chevalier
f7a1006a07
Make resolve check for type-variable name-shadowing
...
Capturing a type argument in the enclosing scope should be an error --
this commit implements that check in resolve, avoiding a potential
assertion failure in trans.
Closes #648 .
2011-07-12 13:42:05 -07:00
Patrick Walton
05390b4b38
rustc: Implement explicit global scope resolution via leading "::"; add a test case
2011-07-11 16:02:16 -07:00
Marijn Haverbeke
c893188549
Use some actual or-patterns in resolve.rs
2011-07-11 21:23:49 +02:00
Marijn Haverbeke
7595fe5153
Implement record patterns
...
Closes #469 .
2011-07-11 15:32:41 +02:00
Marijn Haverbeke
12cb128a0a
Move visit to newtype-style nominal type
...
This makes getting the function fields out of the visitor less
cumbersome and more efficient (no take/drop).
2011-07-11 13:53:50 +02:00
Marijn Haverbeke
86ee3454a1
Implement or-patterns in case clauses
...
You can now say
expr_move(?dst, ?src) | expr_assign(?dst, ?src) { ... }
to match both expr_move and expr_assign. The names, types, and number
of bound names have to match in all the patterns.
Closes #449 .
2011-07-11 11:01:54 +02:00
Brian Anderson
e494e73cdd
Use more encapsulation for metadata::cstore
2011-07-10 15:44:11 -07:00
Brian Anderson
7498d03693
Improve the error message for import glob collisions. Closes #482
...
Instead of noting where the imported things were defined, note where they were
imported. This is more useful and avoids issue #482 .
2011-07-08 18:55:01 -07:00
Brian Anderson
06391dda02
Make the interface to metadata::csearch more consistent
2011-07-08 09:37:01 -07:00
Brian Anderson
7ae711fc03
Begin splitting metadata::decoder into decoding and crate search modules
2011-07-08 09:37:01 -07:00
Brian Anderson
29b766029c
Move external crate/lib resolution to its own pass
...
The scope of external crate reading is beyond the resolve pass now, as it
builds up tables of information needed for several different purposes.
2011-07-08 09:37:01 -07:00
Brian Anderson
85535fc3e0
Move crate_map from resolve to cstore
2011-07-08 09:37:00 -07:00
Marijn Haverbeke
c7bfef43c8
Ignore current scope when resolving self-shadowing imports
...
That is, for example, import x::y::x, which defines a local x,
and thus wouldn't be able to find x::y anymore.
Closes issue #624
2011-07-08 16:04:40 +02:00
Patrick Walton
e1b107d74e
rustc: Remove all exterior vectors from the AST
2011-07-07 18:39:05 -07:00
Patrick Walton
0e2fff5337
rustc: Change lots of AST nodes to use interior vectors
2011-07-07 12:53:17 -07:00