Commit Graph

2531 Commits

Author SHA1 Message Date
Lindsey Kuper
cd31d5d532 More anon obj work; whitespace police in middle::fold
Passing args to middle::fold::fold_expr_anon_obj by reference to be
consistent with the other folds; adding a dummy fold_expr_anon_obj to
typeck to be filled in later.
2011-05-13 17:35:13 -07:00
Lindsey Kuper
814b17352c Use new module namespace syntax. 2011-05-13 17:35:13 -07:00
Lindsey Kuper
b6f35c6a4b More work toward anonymous objects. 2011-05-13 17:35:13 -07:00
Lindsey Kuper
d3242b9644 Bug fixes.
Fixed infinite loop on anonymous objects in parser; added
expr_anon_obj to walk.rs; fixed syntax of test case.
2011-05-13 17:35:13 -07:00
Lindsey Kuper
6c1c5b3948 More progress on anonymous objects.
Still segfaulting on the method-overriding.rs test, though.
2011-05-13 17:35:13 -07:00
Lindsey Kuper
6a53e39e71 Correct capitalization of "Option". 2011-05-13 17:35:12 -07:00
Lindsey Kuper
7c2979e26f Starting on support for anonymous objects. Just syntax so far. 2011-05-13 17:35:12 -07:00
Graydon Hoare
ae784df3ce Add support for 'T' transition snapshots, which are identical to S snapshots except they tell the makefile to stop at stage1. 2011-05-13 17:06:58 -07:00
Patrick Walton
fac1342513 rustc: Move replace_expr_type() from ty to typeck, as it's only used in the latter 2011-05-13 17:06:30 -07:00
Brian Anderson
843e9435ab rustc: Fix long lines in typeck.rs 2011-05-13 20:06:02 -04:00
Patrick Walton
23d3b0ec57 rustc: Get ann_to_type_params() on board the ann_to_ty_param_substs_opt_and_ty() train 2011-05-13 16:53:35 -07:00
Patrick Walton
0739849e9f rustc: Make all type lookups go through the one ty::ann_to_ty_param_substs_opt_and_ty() function 2011-05-13 16:40:21 -07:00
Patrick Walton
4f2eb31870 rustc: Write types contained in "trivial annotations" to the table 2011-05-13 16:27:55 -07:00
Patrick Walton
e888fe6f9b rustc: Change ty::triv_ann() to take a node ID instead of a full annotation 2011-05-13 14:39:00 -07:00
Brian Anderson
2f440b1452 rustc: lowercase the link and link::write modules 2011-05-13 16:55:37 -04:00
Graydon Hoare
0d32ff723a Slight adjustments to shape, rename to type_glue.rs. 2011-05-13 13:29:50 -07:00
Patrick Walton
c97b05141a rustc: Add write_type() wherever ann_types are written, except for triv_ann() 2011-05-13 13:06:34 -07:00
Marijn Haverbeke
7647b838a1 Remove reserved word tests (since reserved words were removed)
Ping me if you disagree, but I think that in a language that's as
in-flux as rust currently is, it is silly to try and enforce a single
future-compatibility. The reserved words didn't work well with the
parser refactor, so I dropped them for the time being. We can,
eventually, bring them back as type-only reserved words.
2011-05-13 22:00:13 +02:00
Marijn Haverbeke
571afe71ba Safeguard against using statement or item keywords as value ids
This prevents insane things like 'auto while = 2', which would parse
in the previous revision, but then break when you tried to mutate it
with 'while = 10'.
2011-05-13 22:00:13 +02:00
Marijn Haverbeke
57ffa2a487 Make the parser more careful about keywords
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-13 22:00:13 +02:00
Patrick Walton
be9aa1cc5e rustc: Fix the type of node_types; stub the write_type function 2011-05-13 12:12:54 -07:00
Patrick Walton
6e34679a65 rustc: Remove a minor rustboot workaround in typeck::resolve_local_types_in_block() 2011-05-13 11:23:00 -07:00
Brian Anderson
c124404d0e Fix naming of libc that was mangled by recent module changes
It doesn't appear that rustc makes use of these strings so it didn't actually
break anything yet.
2011-05-13 13:55:57 -04:00
Patrick Walton
8a8f68aa75 rustc: Make typeck::instantiate_path() not return an annotation 2011-05-13 10:53:55 -07:00
Marijn Haverbeke
ae26b775b4 Implement module namespaces
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.
2011-05-13 17:20:46 +02:00
Marijn Haverbeke
eb419fd8c7 Extend crate format to allow multiple definitions for a single name
The type/value namespace distinction pretty much works now. Module
namespace is up next.
2011-05-13 17:20:39 +02:00
Marijn Haverbeke
1a12a7b04b Make module indices hold a list of items
This way, they can support having both a type and a value
of the same name.
2011-05-13 13:34:59 +02:00
Marijn Haverbeke
58ec5d1654 Move capture checking into resolve.rs
Drops capture.rs. The new algorithm also checks for captures function
arguments and obj fields.
2011-05-13 12:44:05 +02:00
Marijn Haverbeke
89490e416b Change resolve to use walk instead of fold
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.)
2011-05-13 11:35:25 +02:00
Marijn Haverbeke
7082bf4478 Ensure visit_ty is called on type parameters during walk 2011-05-13 11:35:25 +02:00
Marijn Haverbeke
39a000714a Add visit_arm and visit_method to walk.rs
The resolver needs to update its state for individual arms and
methods.
2011-05-13 11:34:51 +02:00
Brian Anderson
2896a866d6 Change fuzzer to match new module standards 2011-05-12 22:45:55 -04:00
Brian Anderson
02fdd2d2d9 Rename std.extfmt.CT to std.extfmt.RT to ct and rt
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-12 22:22:28 -04:00
Patrick Walton
5295a4dabd rustc: Flatten recursive vectors in trans::simplify_type(). Prevents an infinite loop. 2011-05-12 18:37:28 -07:00
Patrick Walton
b163247d4e rustc: Beginnings of a "shape" module to convert types to shapes 2011-05-12 18:30:21 -07:00
Patrick Walton
033b38b636 rustc: Make ty::expr_ann() terser 2011-05-12 16:57:08 -07:00
Patrick Walton
0b7dd0d918 rustc: Pass a node type table around, unused as of yet 2011-05-12 16:41:55 -07:00
Graydon Hoare
5ceaf345ed Add stats option and lazily emit glue. 2011-05-12 15:42:51 -07:00
Patrick Walton
295c037aac etc: Update rust.vim with new keywords; color types differently from keywords 2011-05-12 14:32:54 -07:00
Graydon Hoare
1fdddede22 Add snap-stageN targets. 2011-05-12 13:08:57 -07:00
Graydon Hoare
b64098e58c Register new snapshots for incompatible-syntax transition. 2011-05-12 13:03:05 -07:00
Marijn Haverbeke
9419c5df77 Fix mistaken replacements in error-pattern comments in tests 2011-05-12 21:45:29 +02:00
Marijn Haverbeke
3816e57fd2 Downcase std modules again, move to :: for module dereferencing
This should be a snapshot transition.
2011-05-12 21:30:44 +02:00
Marijn Haverbeke
b1d3364487 Transitional change to make extfmt output lowercase module name 2011-05-12 21:30:43 +02:00
Marijn Haverbeke
6510f1ce7c Change module dereference syntax from . to ::
This will need to be a snapshot.
2011-05-12 21:30:35 +02:00
Marijn Haverbeke
dd9b6dccb4 Remove some truly wrong logic in parse_constrs 2011-05-12 15:52:12 +02:00
Marijn Haverbeke
358a1aeec9 Keep resolve data in external hash table, rather than embedded defs
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-12 15:40:21 +02:00
Marijn Haverbeke
2b36e40c58 Ensure ann tags are actually kept around during typechecking
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-12 10:51:13 +02:00
Marijn Haverbeke
079512494f Properly lex block comments followed by EOF 2011-05-12 09:31:06 +02:00
Marijn Haverbeke
d719b5cae7 Provide a more useful message when failing to translate a const 2011-05-12 09:17:59 +02:00