about summary refs log tree commit diff
path: root/src/comp/front
AgeCommit message (Collapse)AuthorLines
2011-05-13Make the parser more careful about keywordsMarijn Haverbeke-1147/+608
Keywords are now only recognized in contexts where they are valid. The lexer no longer recognizes them, all words are lexed as IDENT tokens, that get interpreted by the parser.
2011-05-13Extend crate format to allow multiple definitions for a single nameMarijn Haverbeke-82/+51
The type/value namespace distinction pretty much works now. Module namespace is up next.
2011-05-13Move capture checking into resolve.rsMarijn Haverbeke-2/+0
Drops capture.rs. The new algorithm also checks for captures function arguments and obj fields.
2011-05-12Rename std.extfmt.CT to std.extfmt.RT to ct and rtBrian Anderson-32/+32
Temporarily duplicate the entire RT module, leaving it with the old name to accomodate the stage0 compiler. Will be removed after the next snapshot.
2011-05-12Downcase std modules again, move to :: for module dereferencingMarijn Haverbeke-1497/+1500
This should be a snapshot transition.
2011-05-12Transitional change to make extfmt output lowercase module nameMarijn Haverbeke-1/+1
2011-05-12Change module dereference syntax from . to ::Marijn Haverbeke-58/+30
This will need to be a snapshot.
2011-05-12Remove some truly wrong logic in parse_constrsMarijn Haverbeke-13/+8
2011-05-12Keep resolve data in external hash table, rather than embedded defsMarijn Haverbeke-20/+33
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.)
2011-05-12Ensure ann tags are actually kept around during typecheckingMarijn Haverbeke-1/+9
This way, the tag assigned by the parser stays with the node. I realize ann replacing is probably going away real soon, but I needed this now for moving the resolve defs out of the AST.
2011-05-12Properly lex block comments followed by EOFMarijn Haverbeke-4/+4
2011-05-11Remove unused filename parameter from lexer.new_readerBrian Anderson-3/+3
2011-05-11Give the lexer a session so that it can fail more informativelyBrian Anderson-19/+30
2011-05-11Remove mod indices from the ASTMarijn Haverbeke-148/+27
They are now created by the resolve pass, which is the only pass that needs them, and kept internal to that pass.
2011-05-11Get rid of arm indicesMarijn Haverbeke-24/+3
2011-05-11Get rid of block indicesMarijn Haverbeke-55/+13
2011-05-11Use a const for crate-num-zero (ast.local_crate)Marijn Haverbeke-0/+1
2011-05-11Rewrite comp/middle/resolve.rsMarijn Haverbeke-13/+6
* 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-10rustc: Number everything with an annotationPatrick Walton-148/+166
2011-05-09Alias-ify fold and its users, remove another 85kb.Graydon Hoare-3/+4
2011-05-09Remove boxes from token.t.Graydon Hoare-42/+79
2011-05-09rustc: Alias fix part 1 -- Separate out AST modes from typechecker modes, ↵Patrick Walton-2/+2
and introduce an "either value or alias" mode
2011-05-06Fix GenericOS.getenv returning a raw str, return an Option.t[str] instead.Graydon Hoare-2/+11
2011-05-06Rename std modules to be camelcasedMarijn Haverbeke-256/+256
(Have fun mergining your stuff with this.)
2011-05-05rustc: Add Rust intrinsic support to the crate metadata reader and writerPatrick Walton-3/+4
2011-05-05Bring back "pred" syntax for writing predicates for checkTim Chevalier-12/+31
This commit reinstates the requirement that the predicate in a "check" must be a manifest call to a special kind of function declared with the new "pred" keyword instead of "fn". Preds must have a boolean return type and can only call other preds; they can't have any effects (as enforced by the typechecker). The arguments to a predicate in a check expression must be slot variables or literals.
2011-05-05Check well-formedness of constraintsTim Chevalier-0/+14
Check that the operand in a constraint is an explicit name, and that the operands are all local variables or literals. Still need to check that the name refers to a pure function.
2011-05-05Remove 'deprecated mutable...' from our codeMarijn Haverbeke-2/+2
This should make compilation a bit less noisy.
2011-05-04Add #env syntax extension for plucking strings out of the compilation ↵Graydon Hoare-0/+75
environment.
2011-05-04Add a structure for passing option flags around the compiler, put it in ↵Graydon Hoare-3/+2
session, and use it.
2011-05-03rustc: Stub support for Rust intrinsicsPatrick Walton-0/+3
2011-05-03Revert "Rename the "llvm" API to "llvm-intrinsic"" due to tinderbox bustagePatrick Walton-1/+1
This reverts commit 6871c245a67fab222eccc2a21dcb620d11d3b0d0.
2011-05-03Start sketching --depend support in rustc.Graydon Hoare-1/+18
2011-05-03Rename the "llvm" API to "llvm-intrinsic"Patrick Walton-1/+1
2011-05-02Extract ast.is_exported from the resolve moduleBrian Anderson-0/+22
2011-05-02Un-revert "Use different syntax for checks that matter to typestate", fixing ↵Patrick Walton-28/+38
the problem. This reverts commit d08b443fffb1181d8d45ae5d061412f202dd4118.
2011-05-02Revert "Use different syntax for checks that matter to typestate"Graydon Hoare-38/+28
This reverts commit aa25f22f197682de3b18fc4c8ba068d1feda220f. It broke stage2, not sure why yet.
2011-05-02Use different syntax for checks that matter to typestateTim Chevalier-28/+38
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-04-29Intern metadata while writing, shrink stage1 from 12mb to 5.7mb.Graydon Hoare-16/+49
2011-04-26Support octal #fmt conversionsBrian Anderson-0/+7
2011-04-25rustc: Pass a "type context" around instead of directly passing the type ↵Patrick Walton-45/+43
store; prep for removing type annotations
2011-04-22rustc: Thread the type store through everything that needs to access type ↵Patrick Walton-1/+1
structures
2011-04-22rustc: Switch @ty.t to ty.t so that we can change it to a uintPatrick Walton-8/+8
2011-04-22rustc: Eliminate the direct use of ty.t.structPatrick Walton-1/+1
2011-04-22Switch to binary search in codemap.lookup_posMarijn Haverbeke-19/+15
Patrick observed excessive slowness when looking up positions in rustc. This might help.
2011-04-21Fix the signature of expr_extBrian Anderson-4/+4
The extension body is just a string, not an expression.
2011-04-21rustc: Pass a type store around, which does nothing yetPatrick Walton-43/+45
2011-04-21rustc: Make the parser never assign any types, not even ty_nilPatrick Walton-5/+4
2011-04-20rustc: Remove all manual type construction outside ty.rsPatrick Walton-56/+51
2011-04-19Remove half-baked 'opacity' layer qualifier.Graydon Hoare-27/+0