Brian Anderson
5876da00cf
Remove some erroneous FIXMEs from #fmt parser
2011-03-02 22:05:19 -05:00
Graydon Hoare
fc722b17c9
Comment-out some logging chatter in extfmt.
2011-03-02 13:53:08 -08:00
Graydon Hoare
9e4943c922
Parse, add to AST, and otherwise ignore 'export' view items. Need to add support to resolve.
2011-03-02 13:50:42 -08:00
Brian Anderson
012c2d18d0
Finish #fmt string parsing. Completely untested.
2011-03-02 10:28:15 -08:00
Brian Anderson
4bc9052e13
Add debug logging for #fmt conv. Implement peek_num fn
2011-03-02 10:28:15 -08:00
Brian Anderson
77a0dc06a7
Whitespace cleanup
2011-03-02 10:28:15 -08:00
Brian Anderson
dbd90996ee
Remove unused is_ext_expr
2011-03-02 10:28:15 -08:00
Brian Anderson
c1e6f5328c
Make the expanded expression in expr_ext not optional
2011-03-02 10:28:15 -08:00
Brian Anderson
7cef1b3a0f
Add pretty printing for expr_call, expr_path, and more literals
2011-03-02 10:28:14 -08:00
Brian Anderson
41a043303a
Remove debug logging from extfmt
2011-03-02 10:28:14 -08:00
Brian Anderson
61edf544a2
Implement #fmt conversion for int and uint
2011-03-02 10:28:14 -08:00
Brian Anderson
f9144d5972
Start generating AST nodes for #fmt
2011-03-02 10:28:14 -08:00
Brian Anderson
1badf9316a
Begin an AST pretty-printer
2011-03-02 10:28:14 -08:00
Brian Anderson
5e06ec977f
Rewrite expand_syntax_ext to avoid a mysterious memory leak
2011-03-02 10:28:14 -08:00
Brian Anderson
fe5de6bfff
Parse parameter types for fmt extension
2011-03-02 10:28:14 -08:00
Brian Anderson
1c60399257
Begin work on #fmt parsing
2011-03-02 10:28:14 -08:00
Brian Anderson
9528c34774
Begin implementing #fmt in rustc
2011-03-02 10:28:14 -08:00
Graydon Hoare
64ab5eaaf0
Parse (and ignore) dtors on objs.
2011-03-01 17:33:17 -08:00
Graydon Hoare
7cae0c8c4d
Implement the gross rustboot hack for contextual parser access to the compilation environment.
2011-03-01 16:50:32 -08:00
Graydon Hoare
348c77c31b
Populate default compilation environment as in rustboot.
2011-03-01 15:57:55 -08:00
Graydon Hoare
7a6ac1c000
Fix typo in crate directive evaluator.
2011-02-25 15:43:50 -08:00
Rafael Ávila de Espíndola
081c3aa76d
Pass the abi of native functions all the way to codegen.
2011-02-25 15:58:08 -05:00
Rafael Ávila de Espíndola
f8f6f078c5
There are no native iterators (or at least they are not going to be supported
...
soon.).
2011-02-25 12:08:21 -05:00
Graydon Hoare
88f0463c2b
Support the awful alt-else form in rustboot's cexp grammar, at least transiently. Remove in the future.
2011-02-24 17:17:39 -08:00
Graydon Hoare
dbf53b4c37
Connect the crate and source parsers together.
2011-02-24 17:00:24 -08:00
Graydon Hoare
9acf4b9127
Handle the mutant 'let'-block directive in rustboot, temporarily.
2011-02-24 16:42:04 -08:00
Graydon Hoare
b2a09562a6
Factor crate expr evaluator out of parser, expand to simple scalars and ops, if, alt.
2011-02-24 15:55:10 -08:00
Graydon Hoare
127139aecd
Parse crate directive tree in one pass, then evaluate it in a second.
2011-02-24 12:14:05 -08:00
Graydon Hoare
381684043f
Add a type for crate directives, to support intermixing with exprs in crate files.
2011-02-23 14:37:39 -08:00
Graydon Hoare
c6bc5cce4b
Parse auth clauses, drop them on the floor. Nothing exists to use them yet anyways.
2011-02-23 13:28:46 -08:00
Rafael Ávila de Espíndola
5f6110a4db
Use the computed abi :-(
2011-02-23 14:10:02 -05:00
Rafael Ávila de Espíndola
ffcb461370
Parse the abi in native modules.
2011-02-23 14:06:37 -05:00
Brian Anderson
eac75b7648
Teach rustc about reserved keywords
2011-02-22 21:52:23 -05:00
Brian Anderson
c4df39609c
Rename std._io to std.io since 'io' is no longer a keyword
2011-02-22 21:52:23 -05:00
Graydon Hoare
34c60b6edb
Make a tag for iterness / fnness, teach many places about it.
2011-02-18 17:30:57 -08:00
Rafael Avila de Espindola
012fa69ea5
More typechecking for native types and the needed plumbing in codegen.
2011-02-16 14:02:02 -05:00
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
3e613c1648
Add native modules to resolve. With this hello world gets to typecheck.
2011-02-07 15:07:27 -05: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
Graydon Hoare
8ef22972db
Add ty_type.
2011-02-01 14:56:21 -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
2fb09eb585
Add sufficient import support to compile some simple single-crate programs.
...
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.
2011-01-07 15:17:18 -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
Graydon Hoare
a9d03dd1a2
Add def id to ast for obj fields.
2010-12-30 15:27: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
Patrick Walton
744b164b7d
rustc: Move type logic out of typeck so trans doesn't look like it's calling into typeck
2010-12-21 16:24:17 -08:00
Patrick Walton
5cbf8889d0
rustc: Add bind expressions to the AST
2010-12-20 18:58:18 -08:00
Graydon Hoare
a3f828f941
Sketch trans_vtbl.
2010-12-16 18:34:04 -08:00
Patrick Walton
0d3400fec2
rustc: Lex '_' as an underscore, not as an identifier
2010-12-15 09:44:48 -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
8383b1c435
Fix token span tracking in lexer.
2010-12-09 17:11:05 -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
a98b2ebb4a
Change 'stratum' to the friendlier term 'layer'.
2010-12-03 12:15:32 -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
ccc21fd4da
Fix lexer bug, enable 5 more tests on rustc.
2010-11-22 11:35:00 -08:00
Patrick Walton
c00bda539d
rustc: First stab at a typechecker
2010-11-19 17:50:45 -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
dc299c9a19
Teach rustc lexer about changes to stratum, opacity and effect keywords.
2010-11-03 10:29:48 -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
Graydon Hoare
71b1f1d117
Parse and translate assignments.
2010-10-19 16:33:11 -07:00
Graydon Hoare
b8cca0971f
Teach trans to allocate, initialize and load from local variables.
2010-10-19 14:54:10 -07:00