Marijn Haverbeke
e9c12ab1d0
Rewrite comp/middle/resolve.rs
...
* Cleans up the algorithm
* Move first pass to walk (second still folds)
* Support part of a type/value namespace split
(crate metadata and module indices still need to be taught about this)
* Remove a few blatant inefficiencies (import tables being recreated for
every lookup, most importantly)
2011-05-11 12:32:37 +02:00
Graydon Hoare
4539f8a03c
Alias-ify fold and its users, remove another 85kb.
2011-05-09 17:50:06 -07:00
Marijn Haverbeke
a3ec0b1f64
Rename std modules to be camelcased
...
(Have fun mergining your stuff with this.)
2011-05-06 22:51:19 +02:00
Brian Anderson
bd34770a92
Add missing ret statements to check_mod
...
Un-XFAIL compile-fail export tests
2011-05-04 19:29:27 -04:00
Brian Anderson
ed40c85af5
Extract ast.is_exported from the resolve module
2011-05-02 22:07:36 -04:00
Patrick Walton
147a2d655f
Un-revert "Use different syntax for checks that matter to typestate", fixing the problem.
...
This reverts commit d08b443fffb1181d8d45ae5d061412f202dd4118.
2011-05-02 17:50:46 -07:00
Graydon Hoare
d08b443fff
Revert "Use different syntax for checks that matter to typestate"
...
This reverts commit aa25f22f197682de3b18fc4c8ba068d1feda220f. It broke stage2, not sure why yet.
2011-05-02 17:35:33 -07:00
Tim Chevalier
aa25f22f19
Use different syntax for checks that matter to typestate
...
This giant commit changes the syntax of Rust to use "assert" for
"check" expressions that didn't mean anything to the typestate
system, and continue using "check" for checks that are used as
part of typestate checking.
Most of the changes are just replacing "check" with "assert" in test
cases and rustc.
2011-05-02 12:16:29 -07:00
Brian Anderson
1dd63ff42d
Remove the search direction from resolve's fold environment
...
It's not actually involved in the fold so it can just be passed between the
functions that need it.
2011-05-01 16:57:36 -04:00
Brian Anderson
a697210234
Hide unexported tag variants
2011-05-01 16:57:36 -04:00
Brian Anderson
459b0ec833
Implement simple module export
2011-05-01 16:57:36 -04:00
Marijn Haverbeke
6511d471ba
replace error logging with log_err in stdlib and rustc
2011-04-19 16:57:13 +02:00
Patrick Walton
de0175abed
rustc: Switch to indices for type parameters
2011-04-12 15:10:40 -07:00
Rafael Ávila de Espíndola
ad7aff8203
Remove unused function.
2011-04-08 16:03:35 -04:00
Rafael Ávila de Espíndola
70bc63a3af
Remove unused function.
2011-04-08 15:14:26 -04:00
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
Patrick Walton
c66edca83d
rustc: Add a type annotation to tag items
2011-03-31 19:12:40 -07:00
Marijn Haverbeke
39f0656b4f
Improve line comment positioning
...
This involved making ast.variant spanned.
2011-03-31 14:41:40 +00:00
Patrick Walton
cc59cea8b0
rustc: Thread an item-to-type mapping throughout the typechecking and translation phases
2011-03-30 17:28:06 -07:00
Patrick Walton
c67eb1a575
rustc: Partially resolve external module imports
2011-03-29 17:01:27 -07:00
Graydon Hoare
b2427509e2
Another go at changing compile-command, this time using RBUILD env var.
2011-03-25 15:07:27 -07:00
Graydon Hoare
91c2b82b09
Revert "Bulk-edit compile commands in emacs chatter to point to assumed build/ dir off src root."
...
This reverts commit 846f2e2ba994268725f38c36fa12f1a09f21615c.
2011-03-25 14:05:38 -07:00
Graydon Hoare
846f2e2ba9
Bulk-edit compile commands in emacs chatter to point to assumed build/ dir off src root.
2011-03-25 13:48:37 -07:00
Patrick Walton
e2d6475308
rustc: Store cached crate metadata in the session
2011-03-25 11:11:21 -07:00
Graydon Hoare
4e49ca8abd
Start hooking resolve into creater.
2011-03-24 17:37:32 -07:00
Graydon Hoare
4b946cea35
Modify native_item_fn to handle trailing linkage names that differ from the item name (used in win32 build of std.dll)
2011-03-20 20:18:19 -07:00
Patrick Walton
71b6e602c5
rustc: Add an annotation for the crate definition to view_item_use
2011-03-15 17:33:05 -07:00
Rafael Ávila de Espíndola
28d51e3fd2
Add support for indexing tags in blocks.
2011-03-11 17:12:25 -05:00
Rafael Ávila de Espíndola
0117cf2fc2
Handle resolving to native modules.
2011-03-10 21:33:53 -05:00
Graydon Hoare
90f299e710
Permit view items in native modules.
2011-03-07 11:48:43 -08:00
Rafael Avila de Espindola
012fa69ea5
More typechecking for native types and the needed plumbing in codegen.
2011-02-16 14:02:02 -05:00
Graydon Hoare
4a72a23171
Add basic front-end support for 'for each' loops.
2011-02-14 18:17:31 -08:00
Graydon Hoare
0043f99f83
Teach resolve about ty params on tags.
2011-02-14 13:36:20 -08:00
Rafael Avila de Espindola
580d527aa2
Add missing fold of native functions.
2011-02-10 14:36:38 -05:00
Rafael Avila de Espindola
3e613c1648
Add native modules to resolve. With this hello world gets to typecheck.
2011-02-07 15:07:27 -05:00
Rafael Avila de Espindola
ff6864aa5c
Fix expressions with paths with more than one element.
2011-02-07 14:57:34 -05:00
Rafael Ávila de Espíndola
57bb9d809b
Parse function declarations.
2011-02-04 11:10:04 -05:00
Rafael Ávila de Espíndola
3cac20dae3
Correctly handle "import foo = bar.zed;".
2011-01-28 11:54:59 -05:00
Rafael Ávila de Espíndola
a2081deb2d
Simplify and fix the resolution of expr_path. With this we now get to codegen
...
in
-------------------
type foo = rec(int a);
mod m1 {
mod m2 {
const foo bar = rec(a = 4);
}
}
fn main(vec[str] args) {
log m1.m2.bar.a;
}
-------------------
2011-01-27 16:51:41 -05:00
Rafael Ávila de Espíndola
c170e7edfd
Resolve type paths.
2011-01-27 16:39:31 -05:00
Rafael Ávila de Espíndola
21208f2343
Handle paths correctly. This lets us handle one more test :-)
2011-01-27 15:56:10 -05:00
Rafael Ávila de Espíndola
5066937f10
First step for supporting "case (foo.bar(?zed))": Change the ast of
...
pat_tag to hold a path.
2011-01-27 15:27:56 -05:00
Rafael Ávila de Espíndola
56441e19d1
Correctly split a.b.c into its path and field access components.
2011-01-27 11:19:02 -08:00
Rafael Ávila de Espíndola
1b82060c5e
Print an error if we try to refer to a module in an expr_path.
2011-01-25 18:16:52 -05:00
Rafael Ávila de Espíndola
9e2324ad1e
Small first step in expr_path. Call find_final_def just to detect
...
unresolved names. find_final_def is going to be extended to return the
final expr.
2011-01-25 17:54:38 -05:00
Rafael Ávila de Espíndola
d97137734b
Remove unimplemented erorr and enable test.
2011-01-24 15:29:38 -05:00
Rafael Ávila de Espíndola
c6dec379b0
Implement a bit of type parameter matching to get a simple case working.
2011-01-24 11:58:01 -08:00
Graydon Hoare
c9d2eceb45
Teach resolve about linear for loops.
2011-01-20 15:17:26 -08:00
Rafael Ávila de Espíndola
35d53b7eb1
Look at the type params of an item_ty when resolving.
2011-01-19 16:13:33 -05:00
Graydon Hoare
a0aedd14c7
Twiddle comment.
2011-01-18 17:19:04 -08:00