aboutsummaryrefslogtreecommitdiff
path: root/src/comp/middle/resolve.rs
Commit message (Collapse)AuthorAgeFilesLines
...
* 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(); }
* Change resolve errs to span_errs.Graydon Hoare2010-12-311-4/+4
|
* Teach resolve to find obj fields and ty params from methods.Graydon Hoare2010-12-301-0/+12
|
* rustc: Resolve type paramsPatrick Walton2010-12-151-1/+6
|
* Teach resolve about obj items.Graydon Hoare2010-12-141-0/+3
|
* rustc: Fix nonexhaustive match failure on unresolved identifiersPatrick Walton2010-12-121-0/+1
|
* rustc: Resolve variant names in patternsPatrick Walton2010-12-121-1/+26
|
* rustc: "resoling" -> "resolving" typoPatrick Walton2010-12-121-3/+3
|
* rustc: Remove "update_env_for_arm" debugging messagePatrick Walton2010-12-111-1/+0
|
* rustc: Resolve pattern bindingsPatrick Walton2010-12-101-1/+17
|
* First sketch of support for const items, not including most of trans.Graydon Hoare2010-12-091-0/+3
|
* Fix missing case in resolve, un-XFAIL rec-tup.rs.Graydon Hoare2010-12-081-0/+1
|
* Add code to fail on non-exhaustive alt matching. Fix all cases this picked ↵Graydon Hoare2010-12-011-0/+1
| | | | up in rustc.
* rustc: Resolve tag variant namesPatrick Walton2010-12-011-2/+21
|
* rustc: Parse type-parametric typedefsPatrick Walton2010-11-241-1/+1
|
* rustc: Parse type-parametric functionsPatrick Walton2010-11-241-2/+2
|
* Resolve the easy case of type paths.Graydon Hoare2010-11-221-0/+35
|
* rustc: Add an annotation to function and type items so that the typechecker ↵Patrick Walton2010-11-101-3/+3
| | | | can store types with them
* Move the option type to its own modulePatrick Walton2010-11-051-9/+9
|
* Revert "Move the option type to its own module"Patrick Walton2010-11-051-2/+2
|
* Move the option type to its own modulePatrick Walton2010-11-051-2/+2
|
* rustc: Use an extensible annotation field instead of putting option[@ty] ↵Patrick Walton2010-11-031-2/+3
| | | | everywhere