aboutsummaryrefslogtreecommitdiff
path: root/src/comp/middle/resolve.rs
Commit message (Collapse)AuthorAgeFilesLines
* Implement module namespacesMarijn Haverbeke2011-05-131-70/+72
| | | | | | | Module names no longer clash with type and value names. The tokenizer/parser still needs to be taught to be more careful in identifying keywords, so that we can use 'str' and 'vec' and so as module names.
* Extend crate format to allow multiple definitions for a single nameMarijn Haverbeke2011-05-131-23/+25
| | | | | The type/value namespace distinction pretty much works now. Module namespace is up next.
* Make module indices hold a list of itemsMarijn Haverbeke2011-05-131-42/+87
| | | | | This way, they can support having both a type and a value of the same name.
* Move capture checking into resolve.rsMarijn Haverbeke2011-05-131-12/+49
| | | | | Drops capture.rs. The new algorithm also checks for captures function arguments and obj fields.
* Change resolve to use walk instead of foldMarijn Haverbeke2011-05-131-100/+162
| | | | | | Possibly, at some point, we should add a state-passing variant of walk, or a wrapper that makes it easier to thread state. (See the repetetive pop_state_for_* functions in this commit.)
* Downcase std modules again, move to :: for module dereferencingMarijn Haverbeke2011-05-121-223/+223
| | | | This should be a snapshot transition.
* Change module dereference syntax from . to ::Marijn Haverbeke2011-05-121-48/+6
| | | | This will need to be a snapshot.
* Keep resolve data in external hash table, rather than embedded defsMarijn Haverbeke2011-05-121-36/+45
| | | | | | | | | | | | | One step closer to removing fold and having a single, immutable AST. Resolve still uses fold, because it has to detect and transform expr_field expressions. If we go through on our plan of moving to a different syntax for module dereferencing, the parser can spit out expr_field expressions, and resolve can move to walk. (I am truly sorry for the things I did in typestate_check.rs. I expect we'll want to change that to walk as well in the near future, at which point it should probably pass around a context record, which could hold the def_map.)
* Remove mod indices from the ASTMarijn Haverbeke2011-05-111-37/+134
| | | | | They are now created by the resolve pass, which is the only pass that needs them, and kept internal to that pass.
* Get rid of arm indicesMarijn Haverbeke2011-05-111-6/+19
|
* Get rid of block indicesMarijn Haverbeke2011-05-111-52/+47
|
* Hash only on def_num when storing def_ids that are localMarijn Haverbeke2011-05-111-13/+14
|
* Use a const for crate-num-zero (ast.local_crate)Marijn Haverbeke2011-05-111-2/+1
|
* Cache external crate lookups in resolve.rsMarijn Haverbeke2011-05-111-6/+28
| | | | | | According to --time-passes, resolution went from 2 to 0 seconds. Not really the bottleneck... but if we want to be crazy fast, just consider this a future bottleneck that was fixed very timely.
* Rewrite comp/middle/resolve.rsMarijn Haverbeke2011-05-111-631/+539
| | | | | | | | | * 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)
* Alias-ify fold and its users, remove another 85kb.Graydon Hoare2011-05-091-15/+15
|
* Rename std modules to be camelcasedMarijn Haverbeke2011-05-061-47/+47
| | | | (Have fun mergining your stuff with this.)
* Add missing ret statements to check_modBrian Anderson2011-05-041-0/+4
| | | | Un-XFAIL compile-fail export tests
* Extract ast.is_exported from the resolve moduleBrian Anderson2011-05-021-18/+1
|
* Un-revert "Use different syntax for checks that matter to typestate", fixing ↵Patrick Walton2011-05-021-1/+1
| | | | | | the problem. This reverts commit d08b443fffb1181d8d45ae5d061412f202dd4118.
* Revert "Use different syntax for checks that matter to typestate"Graydon Hoare2011-05-021-1/+1
| | | | This reverts commit aa25f22f197682de3b18fc4c8ba068d1feda220f. It broke stage2, not sure why yet.
* Use different syntax for checks that matter to typestateTim Chevalier2011-05-021-1/+1
| | | | | | | | | | 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.
* Remove the search direction from resolve's fold environmentBrian Anderson2011-05-011-36/+31
| | | | | It's not actually involved in the fold so it can just be passed between the functions that need it.
* Hide unexported tag variantsBrian Anderson2011-05-011-3/+5
|
* Implement simple module exportBrian Anderson2011-05-011-12/+60
|
* replace error logging with log_err in stdlib and rustcMarijn Haverbeke2011-04-191-2/+2
|
* rustc: Switch to indices for type parametersPatrick Walton2011-04-121-21/+31
|
* Remove unused function.Rafael Ávila de Espíndola2011-04-081-17/+0
|
* Remove unused function.Rafael Ávila de Espíndola2011-04-081-12/+0
|
* 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
|