aboutsummaryrefslogtreecommitdiff
path: root/src/comp/middle/resolve.rs
Commit message (Collapse)AuthorAgeFilesLines
* Continued sketching out code for checking states against preconditions.Tim Chevalier2011-04-061-1/+2
| | | | | | | | | 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.
* rustc: Add a type annotation to tag itemsPatrick Walton2011-03-311-4/+4
|
* Improve line comment positioningMarijn Haverbeke2011-03-311-2/+2
| | | | This involved making ast.variant spanned.
* rustc: Thread an item-to-type mapping throughout the typechecking and ↵Patrick Walton2011-03-301-39/+60
| | | | translation phases
* rustc: Partially resolve external module importsPatrick Walton2011-03-291-4/+88
|
* Another go at changing compile-command, this time using RBUILD env var.Graydon Hoare2011-03-251-1/+1
|
* Revert "Bulk-edit compile commands in emacs chatter to point to assumed ↵Graydon Hoare2011-03-251-1/+1
| | | | | | build/ dir off src root." This reverts commit 846f2e2ba994268725f38c36fa12f1a09f21615c.
* Bulk-edit compile commands in emacs chatter to point to assumed build/ dir ↵Graydon Hoare2011-03-251-1/+1
| | | | off src root.
* rustc: Store cached crate metadata in the sessionPatrick Walton2011-03-251-9/+5
|
* Start hooking resolve into creater.Graydon Hoare2011-03-241-5/+23
|
* Modify native_item_fn to handle trailing linkage names that differ from the ↵Graydon Hoare2011-03-201-2/+2
| | | | item name (used in win32 build of std.dll)
* rustc: Add an annotation for the crate definition to view_item_usePatrick Walton2011-03-151-2/+2
|
* Add support for indexing tags in blocks.Rafael Ávila de Espíndola2011-03-111-8/+36
|
* Handle resolving to native modules.Rafael Ávila de Espíndola2011-03-101-0/+7
|
* Permit view items in native modules.Graydon Hoare2011-03-071-3/+11
|
* More typechecking for native types and the needed plumbing in codegen.Rafael Avila de Espindola2011-02-161-2/+2
|
* Add basic front-end support for 'for each' loops.Graydon Hoare2011-02-141-0/+3
|
* Teach resolve about ty params on tags.Graydon Hoare2011-02-141-0/+8
|
* Add missing fold of native functions.Rafael Avila de Espindola2011-02-101-12/+35
|
* Add native modules to resolve. With this hello world gets to typecheck.Rafael Avila de Espindola2011-02-071-19/+58
|
* Fix expressions with paths with more than one element.Rafael Avila de Espindola2011-02-071-2/+1
|
* Parse function declarations.Rafael Ávila de Espíndola2011-02-041-1/+1
|
* Correctly handle "import foo = bar.zed;".Rafael Ávila de Espíndola2011-01-281-6/+6
|
* Simplify and fix the resolution of expr_path. With this we now get to codegenRafael Ávila de Espíndola2011-01-271-19/+10
| | | | | | | | | | | | | | | 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; } -------------------
* Resolve type paths.Rafael Ávila de Espíndola2011-01-271-18/+3
|
* Handle paths correctly. This lets us handle one more test :-)Rafael Ávila de Espíndola2011-01-271-13/+7
|
* First step for supporting "case (foo.bar(?zed))": Change the ast ofRafael Ávila de Espíndola2011-01-271-5/+7
| | | | pat_tag to hold a path.
* Correctly split a.b.c into its path and field access components.Rafael Ávila de Espíndola2011-01-271-12/+14
|
* Print an error if we try to refer to a module in an expr_path.Rafael Ávila de Espíndola2011-01-251-1/+11
|
* Small first step in expr_path. Call find_final_def just to detectRafael Ávila de Espíndola2011-01-251-24/+38
| | | | | unresolved names. find_final_def is going to be extended to return the final expr.
* Remove unimplemented erorr and enable test.Rafael Ávila de Espíndola2011-01-241-5/+0
|
* Implement a bit of type parameter matching to get a simple case working.Rafael Ávila de Espíndola2011-01-241-4/+0
|
* Teach resolve about linear for loops.Graydon Hoare2011-01-201-2/+26
|
* Look at the type params of an item_ty when resolving.Rafael Ávila de Espíndola2011-01-191-1/+8
|
* Twiddle comment.Graydon Hoare2011-01-181-1/+1
|
* One last refactoring of the import handling:Rafael Ávila de Espíndola2011-01-181-79/+109
| | | | | | | | | | | | | * Create an import resolving stage. Currently this involves a copy of the ast, we can probably revisit this once we revisit doing full copies of the ast in general. * Don't repeat work. Once we resolve a import, put it on a hash table and use it next time we are asked for it. This solves a O(n^2) behaviour in degenerated cases. * Once import resolution is done, the target of an import is stored on the import itself.
* Enable more tests.Rafael Ávila de Espíndola2011-01-171-1/+1
|
* Fix the last known (to me) bug in import resolution. We were not properlyRafael Ávila de Espíndola2011-01-171-12/+27
| | | | | dropping the inner part of the environment when an intermediate item resolved in an outer scope.
* Some misc cleanups:Rafael Ávila de Espíndola2011-01-171-25/+26
| | | | | * Remove unused argument * Move option.t wrapping to outer functions.
* Fix the import handling in "complex" cases. When looking a.b.c and 'a' is aRafael Ávila de Espíndola2011-01-141-5/+22
| | | | | | | module, we should look for 'b' *just* in the module 'a' and then continue resolving b.c in the environment created by updating *with* a. Still not 100% correct, but getting there.
* Make lookup non recursive and instead move the recursion just toRafael Ávila de Espíndola2011-01-141-60/+88
| | | | | find_final_def. Use the fact that the recursion is in a simpler function to detected import loops and exit.
* Change single-ident expr_ident to greedy/fat multi-ident expr_path, to ↵Graydon Hoare2011-01-131-15/+51
| | | | handle the module-path/value-indexing distinction.
* Produce better errors for invalid imports.Rafael Ávila de Espíndola2011-01-121-0/+6
|
* Call find_final_def directly in fold_view_item_import. It is both cleaner andRafael Ávila de Espíndola2011-01-121-1/+1
| | | | faster.
* Change mod_index_entry to point directly to items and view_items.Rafael Ávila de Espíndola2011-01-121-6/+6
|
* Fix another import case we got wrong: The local environment should notRafael Ávila de Espíndola2011-01-111-27/+47
| | | | interfere with the import statements.
* Fix two invalid import cases we were not detecting:Rafael Ávila de Espíndola2011-01-111-12/+29
| | | | | | | * If an import was unused we would never print any errors for it. * We would keep the existing environment in scope when descending 'foo.bar' and would find 'bar' in the global environment if there was no 'bar' in 'foo'.
* Add sufficient import support to compile some simple single-crate programs.Rafael Ávila de Espíndola2011-01-071-32/+111
| | | | | This is likely not the final solution. It does repetitive work and doesn't produce errors for invalid but unused imports. In any case, I think it is a useful step.
* Add names from imports to the namespace.Rafael Ávila de Espíndola2011-01-041-2/+2
|
* Add support for looking up a name introduced by a 'use'.Rafael Ávila de Espíndola2011-01-041-0/+14
| | | | | | | | | | With this we go from "error: unresolved name: foo" to "unimplemented definition variant for: foo" in use foo; fn main(vec[str] args) { foo.bar(); }