Patrick Walton
9c928fcf8c
rustc: Make iter_structural_ty() not use the "variants" field in the tag info
2011-02-25 17:14:48 -08:00
Patrick Walton
b5081a6a82
Add a tag_variant_count() function to trans that doesn't go through the soon-to-be-deprecated tag info table
2011-02-25 16:45:43 -08:00
Patrick Walton
2cd7fbbdf1
rustc: Move all of the logic in type_of() to type_of_inner()
2011-02-25 16:24:19 -08:00
Patrick Walton
6c24d0403b
Revert "rustc: Push type parameters down through alt tag patterns; add a test" due to valgrind failures
...
This reverts commit 7a1d01effc
.
2011-02-25 15:49:35 -08:00
Graydon Hoare
7a6ac1c000
Fix typo in crate directive evaluator.
2011-02-25 15:43:50 -08:00
Patrick Walton
69464aae62
rustc: Remove FIXME obsoleted by the previous commit
2011-02-25 13:44:37 -08:00
Patrick Walton
7a1d01effc
rustc: Push type parameters down through alt tag patterns; add a test
2011-02-25 13:44:08 -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
Patrick Walton
19b2850388
rustc: Perform type parameter substitutions when emitting glue for generic tags. Un-XFAIL generic-tag.rs.
2011-02-24 19:25:05 -08: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
Patrick Walton
dcd65fac19
Cast more aggressively to the callee type when calling generic functions. Add a test-case for this, and XFAIL it in rustboot.
2011-02-24 14:24:32 -08:00
Patrick Walton
5332250d3b
Revert "Cast more aggressively to the callee type when calling generic functions. Add a test-case for this, and XFAIL it in rustboot." due to test failures
...
This reverts commit 0a65283c5e
.
2011-02-24 13:51:18 -08:00
Patrick Walton
0a65283c5e
Cast more aggressively to the callee type when calling generic functions. Add a test-case for this, and XFAIL it in rustboot.
2011-02-24 12:33:08 -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
Patrick Walton
b4d6589e73
Implement type descriptor binding. Un-XFAIL test/run-pass/generic-bind.rs.
2011-02-23 17:08:02 -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
Rafael Ávila de Espíndola
6849abcf7d
Handle the new ty_native_fn in type check.
2011-02-23 11:59:07 -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
Patrick Walton
b6f1c832e3
rustc: Perform explicit type substitution as requested by the programmer
2011-02-22 18:33:07 -08:00
Graydon Hoare
d7f7634c95
Drop for-loop temporary at end of scope, fixes memory leak.
2011-02-22 18:07:47 -08:00
Graydon Hoare
af4d6ae76b
Add ABI tagging to crates, adjust rustc output and runtime stack-frame setup so access to argv works.
2011-02-22 16:37:27 -08:00
Patrick Walton
01c2761769
Rework typechecking of bind expressions
2011-02-22 15:50:07 -08:00
Rafael Ávila de Espíndola
b389611ce7
Finish the type of native functions. We now get
...
declare i32 @write(i32, i8*, i32)
2011-02-22 17:37:11 -05:00
Graydon Hoare
60f97aa9cc
Find main functions buried within modules. Un-XFAIL import.rs.
2011-02-21 17:42:23 -08:00
Graydon Hoare
b0c7439d77
Implement expr_put. Un-XFAIL foreach-simple.rs; iters w/o env access work.
2011-02-18 18:52:31 -08:00
Patrick Walton
5508c28ff0
Factor out the call typechecking logic so that bind can use it
2011-02-18 18:19:27 -08:00
Graydon Hoare
80c67268fc
Pass correct lliterbody; can compile and run no-put iters.
2011-02-18 18:04:37 -08:00
Graydon Hoare
34c60b6edb
Make a tag for iterness / fnness, teach many places about it.
2011-02-18 17:30:57 -08:00
Patrick Walton
3aba50ff33
Implement Robinson's algorithm for type unification. Closes #227 .
2011-02-18 14:52:33 -08:00
Graydon Hoare
0ddb832a4e
Teach trans and llvm to cooperate on producing tidier diagnostic names in trans.ty_str.
2011-02-17 18:16:51 -08:00
Patrick Walton
10befcd9a4
Add type parameters to tag types
2011-02-17 16:23:31 -08:00
Graydon Hoare
79d3ceaac0
Steps toward implementing iterators.
2011-02-17 12:20:55 -08:00
Rafael Avila de Espindola
07c7888037
Don't add the rust arguments to native functions. We now produce the
...
correct arguments for native functions.
2011-02-16 16:16:11 -05:00
Rafael Avila de Espindola
a63696dfe2
Add a more specialized decl_native_fn_and_pair. Native functions now have
...
the right name.
2011-02-16 15:34:59 -05:00
Rafael Avila de Espindola
293637139f
Add missing case to ty_to_str.
...
Disable test that now fails because we produce undefined references to the
native functions.
2011-02-16 15:00:40 -05:00
Graydon Hoare
f50caa75c2
Wrap long line in last commit.
2011-02-16 11:33:14 -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
d4bf67dde6
Translate record extension.
2011-02-15 18:16:13 -08:00
Graydon Hoare
370c1ad00e
Handle record update in typeck.
2011-02-15 15:07:55 -08:00
Graydon Hoare
7a02798d1b
Change another typestate check to an expr check.
2011-02-15 12:30:09 -08: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
84dd64b6cf
Switch ast.is_call_expr check in trans to non-typestate form.
2011-02-14 16:33:51 -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
6393a34e6e
Teach typeck about generic tags.
2011-02-14 14:14:28 -08:00
Graydon Hoare
0043f99f83
Teach resolve about ty params on tags.
2011-02-14 13:36:20 -08:00
Brian Anderson
0ebfb8227c
Add support for unsigned binops. Closes #57
2011-02-14 08:31:52 -08:00
Rafael Avila de Espindola
bd56dd9f2a
Add missing case to unify. This gets hello world to codegen.
2011-02-14 11:22:10 -05:00
Graydon Hoare
7446af747d
Translate pat_lit, un-XFAIL alt-pattern-lit.rs for rustc.
2011-02-10 19:40:02 -08:00
Graydon Hoare
c9956a65b4
Teach ty and typeck about pat_lit.
2011-02-10 19:22:30 -08:00
Graydon Hoare
f951b52e91
Add support to pat_lit to fold.
2011-02-10 19:13:47 -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
Graydon Hoare
7c25fb5628
Fix bug in trans_field, un-XFAIL two more tests.
2011-02-10 17:33:08 -08:00
Rafael Avila de Espindola
0d27eb1341
Add type checking for native types.
2011-02-10 16:22:08 -08:00
Graydon Hoare
c958eebf5d
Change more of trans to rely on tydescs when dealing with generics.
2011-02-10 15:00:16 -08:00
Graydon Hoare
140d6fd964
Switch "." to "_" in name mangling, makes gdb happier. Also factor out into sep() helper.
2011-02-10 14:59:20 -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
580d527aa2
Add missing fold of native functions.
2011-02-10 14:36:38 -05:00
Graydon Hoare
3d63aa14e0
Handle instantiations where some type parameters remain parameters (eg. derived typedefs).
2011-02-10 11:30:29 -08:00
Graydon Hoare
8c0d35066b
Elide passed-typarams when tydescs are captured. Un-XFAIL generic-obj.rs.
2011-02-09 09:54:58 -08:00
Graydon Hoare
467a628ffa
Add the single instruction required in activate glue to fix burning darwin tinderbox. And transplant 100 lines of comments from the ML code.
2011-02-08 18:09:50 -08:00
Graydon Hoare
2f25d9c983
Handle subtle view-shift on outptr in generic calls. Can construct generic objs now.
2011-02-08 17:05:53 -08:00
Graydon Hoare
74f71d387e
Overhaul ABI. All retptrs, all the time.
2011-02-08 11:47:53 -08:00
Graydon Hoare
9d576993f3
Add a fixme for last commit.
2011-02-07 14:16:40 -08:00
Graydon Hoare
d7f118135b
Iterate type unification to drive the types a bit further down into the leaves of results with residual vars. Cheap but kinda works.
2011-02-07 14:11:43 -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
ff6864aa5c
Fix expressions with paths with more than one element.
2011-02-07 14:57:34 -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
Graydon Hoare
be97a77be8
Capture typarams into obj, independent of body tydesc.
2011-02-03 14:40:57 -08:00
Graydon Hoare
ce17fe2a90
Attempt to put out burning tinderbox.
2011-02-02 17:49:15 -08:00
Graydon Hoare
c863427b64
Hack to work around apparent LLVM bug?
2011-02-02 16:22:11 -08:00
Graydon Hoare
b37995664b
Store tydesc for whole body, not just fields, in objs and closures. Handles unusual field alignment.
2011-02-02 15:28:11 -08:00
Graydon Hoare
c61ff98985
Handle missing case in linearize_ty_params.
2011-02-02 15:26:16 -08:00
Graydon Hoare
c42a2d2bfb
Change decl_upcall to decl_upcall_glue, more correct name.
2011-02-02 15:25:53 -08:00
Graydon Hoare
8e963f63a8
Add trace and trap helpers to trans for low level diagnostics.
2011-02-02 15:23:49 -08: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
Graydon Hoare
f22dc4d581
Fix buggy argument assembly for upcall_get_type_desc. Can now complete calls to glue of derived tydescs.
2011-02-01 18:02:57 -08: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
b3689e7c20
Pick up case for expr_block from brson's other branch.
2011-02-01 16:26:49 -08:00
Graydon Hoare
70bf54bcac
Implement 'else if'
2011-02-01 16:23:48 -08:00
Graydon Hoare
eb16942c1d
Use dynamic GEP and silly offset-encoding on tydescs. Successful call into a derived tydesc.
2011-02-01 14:57:03 -08:00
Graydon Hoare
8ef22972db
Add ty_type.
2011-02-01 14:56:21 -08:00
Graydon Hoare
ef50d0e668
More work on derived tydescs. Can compile simple tests with generic objects.
2011-01-31 18:06:35 -08:00
Graydon Hoare
784b2decf2
Majority of the remaining work for derived tydescs. Not quite working yet.
2011-01-31 15:03:05 -08:00
Graydon Hoare
f9b37c7348
Run cleanups in reverse order. Not presently observable, no dtors.
2011-01-31 12:06:27 -08:00
Graydon Hoare
bf9cebfc06
Fix a bug in linearize and get the captured tydescs type right.
2011-01-28 15:45:13 -08:00
Graydon Hoare
caa5b92985
Pass linearized typarams to make_generic_glue. Steps toward derived tydescs.
2011-01-28 15:28:20 -08:00
Graydon Hoare
ea42911561
Pass tydesc array into type glue fns as first arg. Required for derived tydescs to work.
2011-01-28 14:34:25 -08: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
Graydon Hoare
13b7a356f8
Add helper function for derived type descriptors.
2011-01-27 17:07:52 -08:00
Rafael Ávila de Espíndola
a2081deb2d
Simplify and fix the resolution of expr_path. With this we now get to codegen
...
in
-------------------
type foo = rec(int a);
mod m1 {
mod m2 {
const foo bar = rec(a = 4);
}
}
fn main(vec[str] args) {
log m1.m2.bar.a;
}
-------------------
2011-01-27 16:51:41 -05:00
Rafael Ávila de Espíndola
c170e7edfd
Resolve type paths.
2011-01-27 16:39:31 -05:00
Rafael Ávila de Espíndola
21208f2343
Handle paths correctly. This lets us handle one more test :-)
2011-01-27 15:56:10 -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
Rafael Ávila de Espíndola
56441e19d1
Correctly split a.b.c into its path and field access components.
2011-01-27 11:19:02 -08:00
Graydon Hoare
ce31b02113
Note issue in comments.
2011-01-27 11:18:40 -08:00
Graydon Hoare
0499d4ac29
Update various README files in the tree.
2011-01-26 16:00:19 -08:00
Graydon Hoare
5b857da15f
Change rustc warning to be a little less dismissive.
2011-01-26 13:51:29 -08:00
Graydon Hoare
596a97cf70
Teach typeck to handle obj item names when used as type names, not just constructor calls.
2011-01-26 11:35:30 -08:00
Rafael Ávila de Espíndola
1b82060c5e
Print an error if we try to refer to a module in an expr_path.
2011-01-25 18:16:52 -05:00
Rafael Ávila de Espíndola
9e2324ad1e
Small first step in expr_path. Call find_final_def just to detect
...
unresolved names. find_final_def is going to be extended to return the
final expr.
2011-01-25 17:54:38 -05:00
Graydon Hoare
a32d206d27
Implement autoderef in rustc. Un-XFAIL autoderef-full-lval.rs.
2011-01-24 18:03:31 -08: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
Rafael Ávila de Espíndola
d97137734b
Remove unimplemented erorr and enable test.
2011-01-24 15:29:38 -05:00
Rafael Ávila de Espíndola
c6dec379b0
Implement a bit of type parameter matching to get a simple case working.
2011-01-24 11:58:01 -08:00
Graydon Hoare
546d144009
Teach AST, parser, folder about iter items.
2011-01-21 17:06:20 -08:00
Graydon Hoare
90e329da6b
First cut at translating const items. Support the literal forms at least. Un-XFAIL const.rs.
2011-01-21 12:09:25 -08:00
Graydon Hoare
c72d6a3e7a
Merge remote branch 'espindola/params'
2011-01-21 11:07:09 -08:00
Rafael Ávila de Espíndola
7672813708
Change the return type of the getter method so that we can get to the type
...
params.
2011-01-21 13:54:44 -05:00
Graydon Hoare
51542b279f
Fix bug in trans_for, un-XFAIL linear-for-loop.rs.
2011-01-21 08:25:13 -08:00
Graydon Hoare
6daec4004a
First cut of trans_for.
2011-01-21 07:59:57 -08:00
Graydon Hoare
8bc57fa85e
Tweak effect-checking rules in rustboot, remove/rewrite/re-auth impure cases in trans.rs
2011-01-21 07:59:56 -08:00
Graydon Hoare
2c27feb76a
M-x indent-region on trans.rs.
2011-01-21 07:59:48 -08:00
Graydon Hoare
45fd05ac42
Teach ty and typeck about linear for loops.
2011-01-20 15:54:38 -08:00
Graydon Hoare
61379af1a9
Fix typo in fold.
2011-01-20 15:54:19 -08:00
Graydon Hoare
c9d2eceb45
Teach resolve about linear for loops.
2011-01-20 15:17:26 -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
Graydon Hoare
9d3ebd6a57
Implement dynamic GEP enough to permit expr_field to work on tup(T,T,T).
2011-01-19 16:29:14 -08:00
Rafael Ávila de Espíndola
35d53b7eb1
Look at the type params of an item_ty when resolving.
2011-01-19 16:13:33 -05:00
Rafael Ávila de Espíndola
d313e1579b
Fold function output and argument types. With this change we fail to compile
...
type lteq[T] = fn(&T a) -> bool;
with "unresolved name: T". Before we would silently get to the type checker
and assert in a unresolved ty_path.
2011-01-19 15:02:56 -05:00
Graydon Hoare
a0aedd14c7
Twiddle comment.
2011-01-18 17:19:04 -08:00
Graydon Hoare
9cc00d5f6c
Fix bug (I think) when unifying ty_local and ty_param.
2011-01-18 17:18:51 -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
e92298187b
Add bzero glue and preliminary code for dynamic size/align calculations.
2011-01-18 15:38:35 -08:00
Graydon Hoare
3a920e7ca8
Fix missing case in ty.
2011-01-17 17:24:47 -08:00
Graydon Hoare
bc21965c98
Use homebrew memcpy, not llvm intrinsic. Can't run the latter on a rust stack.
2011-01-17 17:24:33 -08:00
Graydon Hoare
58bf592dcc
Fix a couple bugs in parametric returns.
2011-01-17 15:54:52 -08:00