Commit graph

178 commits

Author SHA1 Message Date
Graydon Hoare
9ae89bd404 Add _mutable unop. 2011-02-15 12:20:30 -08:00
Graydon Hoare
2bba49a9fe Fix missing path in expr_ext. 2011-02-15 12:20:13 -08:00
Graydon Hoare
4a72a23171 Add basic front-end support for 'for each' loops. 2011-02-14 18:17:31 -08:00
Graydon Hoare
15a01f5c36 Add basic front-end support for expr_put. 2011-02-14 17:58:32 -08:00
Graydon Hoare
f1f33abdeb Move all non-decl/non-expr stmts to exprs. 2011-02-14 17:46:28 -08:00
Graydon Hoare
88cb966363 Adjust commented-out diagnostic log statement in parser.rs. 2011-02-14 16:35:08 -08:00
Graydon Hoare
890d027b65 Add parse support for expr_ext. 2011-02-14 16:33:25 -08:00
Graydon Hoare
59bce06a96 Expand expr_rec to take its optional trailing 'with' parameter. 2011-02-14 15:52:38 -08:00
Graydon Hoare
c89460bb65 Support indexing pat_lit. 2011-02-10 19:04:37 -08:00
Graydon Hoare
a396652766 Add pat_lit to ast, and support parsing it. 2011-02-10 18:59:23 -08:00
Graydon Hoare
b59d98ccb9 Parse effects and layers in a couple contexts; drop on floor as we have nowhere to put them yet. 2011-02-10 18:58:58 -08:00
Brian Anderson
f17a3421e0 Cleanup for 'be' statement and comments about future typestate 2011-02-10 12:12:10 -08:00
Brian Anderson
378c0087ca Parse 'be' statement. Pass tailcall tests. No actual tailcalls yet. 2011-02-10 12:12:10 -08:00
Rafael Avila de Espindola
8122e0c542 Add support for
native mod foo = "bar" ...
2011-02-07 12:50:04 -05:00
Rafael Ávila de Espíndola
57bb9d809b Parse function declarations. 2011-02-04 11:10:04 -05:00
Rafael Ávila de Espíndola
302cafa81d Factor the parsing of "type foo" into parse_type_decl. 2011-02-04 09:46:10 -05:00
Rafael Ávila de Espíndola
dd3ed6139a Add most of the plumbing for native items and add support for parsing native type declarations. 2011-02-02 10:43:57 -05:00
Rafael Ávila de Espíndola
4b06dc574b Add very minimal support for native modules. For now they must be empty. 2011-02-01 16:57:33 -08:00
Graydon Hoare
70bf54bcac Implement 'else if' 2011-02-01 16:23:48 -08:00
Brian Anderson
3fedb18c0a Allow the else part of an expr_if to be either expr_if or expr_block 2011-02-01 00:08:47 -05:00
Brian Anderson
214c32393a Teach rustc to parse 'else if' 2011-01-30 14:15:22 -05:00
Brian Anderson
6b7cab3602 Teach rustc to fail 2011-01-28 11:12:57 -08:00
Rafael Ávila de Espíndola
3cac20dae3 Correctly handle "import foo = bar.zed;". 2011-01-28 11:54:59 -05:00
Rafael Ávila de Espíndola
5066937f10 First step for supporting "case (foo.bar(?zed))": Change the ast of
pat_tag to hold a path.
2011-01-27 15:27:56 -05:00
Graydon Hoare
0e1e3a9e1e Do better at parsing expr_paths with type arguments. 2011-01-24 15:49:39 -08:00
Graydon Hoare
2d7c2acf09 Switch from booleans to symbolic tags in a few places. 2011-01-24 15:26:10 -08:00
Graydon Hoare
65da18faf8 Teach parser to recognize ITER keyword as item-start. 2011-01-24 15:25:30 -08:00
Graydon Hoare
546d144009 Teach AST, parser, folder about iter items. 2011-01-21 17:06:20 -08:00
Graydon Hoare
a8af013077 Adjust AST encoding, teach fold about linear for loops. 2011-01-20 15:02:12 -08:00
Rafael Ávila de Espíndola
7fdb6437d8 typo 2011-01-20 16:20:45 -05:00
Graydon Hoare
33b342e891 Teach ast and parser about linear for expressions. 2011-01-20 13:11:47 -08:00
Rafael Ávila de Espíndola
41b7d6d74d One last refactoring of the import handling:
* 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.
2011-01-18 15:43:13 -08:00
Graydon Hoare
f3c3fc0353 Change single-ident expr_ident to greedy/fat multi-ident expr_path, to handle the module-path/value-indexing distinction. 2011-01-13 17:42:28 -08:00
Rafael Ávila de Espíndola
359d72b4d0 Change mod_index_entry to point directly to items and view_items. 2011-01-12 12:26:23 -08:00
Graydon Hoare
a8eeec1dbd Sketch support for reading multi-file crates in rustc. Add test, not yet working. 2011-01-10 18:18:16 -08:00
Rafael Ávila de Espíndola
7c8f99fdc1 Add names from imports to the namespace. 2011-01-04 17:58:10 -05:00
Rafael Ávila de Espíndola
e0fe271d34 Add support for looking up a name introduced by a 'use'.
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();
}
2011-01-04 11:35:13 -05:00
Rafael Ávila de Espíndola
5fd3d2ca55 Refactor the view_item code so that it is similar to the code used for
parsing regular items.
2011-01-04 11:34:05 -05:00
Rafael Ávila de Espíndola
35c745da03 Rename use_or_import to view_item. 2011-01-04 11:23:56 -05:00
Graydon Hoare
d1517471fb Split driver between parsing source files and crate files, by extension. Add dummy function for crate files. 2011-01-03 20:41:11 -08:00
Graydon Hoare
019095c9e6 Actually return the correct node from the parser. 2011-01-03 16:18:25 -08:00
Graydon Hoare
2100aceabf Remove missed debug chatter. 2011-01-03 15:06:19 -08:00
Graydon Hoare
0a2e7f2149 Add restricted-parse mode, and parse bind expressions. 2010-12-31 17:28:43 -08:00
Graydon Hoare
b42f49bf99 Parse local item decls. 2010-12-31 14:33:49 -08:00
Graydon Hoare
53d5b11208 Index tag and obj items in decl stmts. 2010-12-31 14:18:19 -08:00
Rafael Ávila de Espíndola
09ef31caa0 Record the ast of uses and imports. 2010-12-30 11:21:37 -05:00
Rafael Ávila de Espíndola
f900792fa3 Parse 'import' directives in rustc. 2010-12-24 21:06:14 -08:00
Rafael Ávila de Espíndola
8d2fdac93b Parse 'use' directives in rustc. 2010-12-24 17:03:46 -08:00
Graydon Hoare
a3f828f941 Sketch trans_vtbl. 2010-12-16 18:34:04 -08:00
Graydon Hoare
b1e0c60d6d Add ty_obj to ast and parser. 2010-12-14 17:42:12 -08:00
Graydon Hoare
a7eb1ac90f Move call_expr parse rule to the place where it needs to be to understand complex calls. 2010-12-14 16:59:13 -08:00
Graydon Hoare
b606ba81cf Add obj items to AST and parser. 2010-12-14 15:32:13 -08:00
Patrick Walton
38ba0e6917 rustc: Add a definition ID to tag patterns 2010-12-12 16:30:34 -08:00
Patrick Walton
de118d79b6 rustc: Resolve pattern bindings 2010-12-10 18:08:32 -08:00
Patrick Walton
0d43c198f0 rustc: Add def ids to pattern bindings 2010-12-10 17:24:53 -08:00
Graydon Hoare
4e1046a508 Fix another bug in expr_index parse rule. 2010-12-09 17:34:44 -08:00
Graydon Hoare
d5ed5e7044 Fix bug in parse rule for expr_index. 2010-12-09 17:12:08 -08:00
Graydon Hoare
e04c24769e Add 'unexpected' fn to parser. 2010-12-09 17:11:52 -08:00
Graydon Hoare
876282791e First sketch of support for const items, not including most of trans. 2010-12-09 14:37:50 -08:00
Graydon Hoare
6ccfba34f3 Add missing case to parse_ty, un-XFAIL cast.rs. 2010-12-08 15:04:57 -08:00
Graydon Hoare
68af077e81 Implement binop= forms. Un-XFAIL bitwise.rs. 2010-12-08 14:50:47 -08:00
Patrick Walton
2e119698b7 rustc: Add def ids to variant arguments so we can turn them into function arguments later 2010-12-03 18:13:15 -08:00
Graydon Hoare
0c19c8e18f Parse layer and effect annotations. 2010-12-03 18:04:18 -08:00
Graydon Hoare
98a63bd1f9 Add code to fail on non-exhaustive alt matching. Fix all cases this picked up in rustc. 2010-12-01 17:09:02 -08:00
Patrick Walton
fd600bad46 rustc: Annotate variants with their types. This may be useful for trans! 2010-12-01 15:27:38 -08:00
Patrick Walton
42282a25c0 rustc: Resolve tag variant names 2010-12-01 10:19:38 -08:00
Graydon Hoare
45043374ff Tidy up structural types for rec, tup AST and typeck nodes. 2010-11-30 16:32:00 -08:00
Patrick Walton
567a45cc70 rustc: Add def ids to variants 2010-11-30 12:32:20 -08:00
Patrick Walton
6c5a05b819 rustc: Implement the block syntax discussed on the mailing list 2010-11-29 17:11:41 -08:00
Graydon Hoare
e6b7f76385 Add ty_rec and parse it. 2010-11-29 15:42:09 -08:00
Graydon Hoare
3e08171fc2 Change mutability into a type constructor. 2010-11-29 15:29:55 -08:00
Graydon Hoare
386f363cfe Change from bool to tag ast.mutability. 2010-11-29 14:18:26 -08:00
Graydon Hoare
38846e39c4 Add ast.ty_mutable. 2010-11-29 12:29:57 -08:00
Patrick Walton
78ec07790a rustc: Assign definition IDs to type params 2010-11-24 18:01:20 -08:00
Patrick Walton
9769b61226 rustc: Parse type-parametric typedefs 2010-11-24 17:36:22 -08:00
Patrick Walton
98e8c2ef21 rustc: Parse type-parametric tags 2010-11-24 17:17:42 -08:00
Patrick Walton
c1916adc7e rustc: Parse type-parametric functions 2010-11-24 16:52:49 -08:00
Patrick Walton
80d099c59a rustc: Don't require a semicolon after an "alt" statement 2010-11-24 16:29:44 -08:00
Patrick Walton
f075b10af2 rustc: Add patterns to fold 2010-11-24 15:45:59 -08:00
Patrick Walton
756880a5f5 rustc: Parse simple patterns 2010-11-24 14:42:01 -08:00
Patrick Walton
5d72dae1d1 rustc: Parse tag items. Currently segfaults in copy glue. 2010-11-24 11:36:35 -08:00
Graydon Hoare
e05d7c3ac1 Support mach types in rustc, enable 5 more tests. 2010-11-22 17:41:32 -08:00
Graydon Hoare
fdac6ffa7c Accumulate type paths as we parse, rather than throwing them away. 2010-11-22 13:24:53 -08:00
Patrick Walton
0847ff7d42 rustc: "expectied" -> "expected" in parser.rs; also say what was found 2010-11-22 11:43:25 -08:00
Graydon Hoare
3352fab59b Parse type items, nil types, named types. Fix some parser bugs. Enable arith-0 and arith-2 tests. 2010-11-19 16:34:47 -08:00
Graydon Hoare
44a0c7225d Isolate while-header bug to minimal testcase, fix in rustboot, remove workaround in rustc. 2010-11-19 14:59:58 -08:00
Graydon Hoare
e94af48bc9 Work around Yet Another Typestate Lifecycle Bug in rustboot. 2010-11-19 10:41:32 -08:00
Patrick Walton
e02ffb2c2d rustc: Add a type annotation for locals 2010-11-12 16:11:33 -08:00
Patrick Walton
c3bc88a325 rustc: Add an annotation to function and type items so that the typechecker can store types with them 2010-11-10 18:20:02 -08:00
Patrick Walton
35eb088ae3 rustc: Implement function types 2010-11-05 15:23:03 -07:00
Patrick Walton
adb1754e4d Move the option type to its own module 2010-11-05 11:18:40 -07:00
Patrick Walton
2fcf81cc4b Revert "Move the option type to its own module" 2010-11-05 10:41:23 -07:00
Patrick Walton
1d214b4df3 Move the option type to its own module 2010-11-05 10:23:22 -07:00
Graydon Hoare
16faef2218 Fix buggy while and do-while translation in rustc. Add test. 2010-11-04 07:55:33 -07:00
Patrick Walton
a3d666bfdf rustc: Use an extensible annotation field instead of putting option[@ty] everywhere 2010-11-03 15:54:46 -07:00
Graydon Hoare
e5fdd7b63a Support while and do-while loops in rustc. 2010-11-03 11:05:15 -07:00
Graydon Hoare
da13c508d8 First pass on splitting stratum and opacity off of effects. WIP. 2010-11-02 11:11:58 -07:00
Graydon Hoare
d4497e481e Extremely broken hacked-up incorrect attempt at 'ret'. 2010-10-22 19:23:10 -07:00
Graydon Hoare
6d47d2abde Implement check-exprs, un-xfail 5 rustc tests. 2010-10-22 15:37:42 -07:00
Graydon Hoare
3aaae2a881 Teach rustc to parse call exprs. 2010-10-21 16:42:02 -07:00