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
Graydon Hoare
5f591c3767
Allocate and reload retslots. Copy into them on polymorphic returns.
2011-01-17 15:22:45 -08:00
Rafael Ávila de Espíndola
9f3caed8a0
Enable more tests.
2011-01-17 18:13:55 -05:00
Graydon Hoare
a8be673a9c
Whitespace cleanup.
2011-01-17 14:35:57 -08:00
Rafael Ávila de Espíndola
58490d7fa0
Fix the last known (to me) bug in import resolution. We were not properly
...
dropping the inner part of the environment when an intermediate item resolved
in an outer scope.
2011-01-17 13:33:13 -08:00
Graydon Hoare
d1fdf0ab23
Teach copy_ty to finish via memcpy of tydesc-provided size.
2011-01-17 13:30:29 -08:00
Rafael Ávila de Espíndola
57b281533d
Some misc cleanups:
...
* Remove unused argument
* Move option.t wrapping to outer functions.
2011-01-17 14:58:18 -05:00
Graydon Hoare
4b8779ea95
Pass tydescs to parametric fns, along with (dummy, presently) retptr when needed. Can call simple parametric fn now.
2011-01-14 16:50:37 -08:00
Rafael Ávila de Espíndola
5b9eda4a41
Fix the import handling in "complex" cases. When looking a.b.c and 'a' is a
...
module, we should look for 'b' *just* in the module 'a' and then continue
resolving b.c in the environment created by updating *with* a.
Still not 100% correct, but getting there.
2011-01-14 17:34:00 -05:00
Graydon Hoare
c8a2c44a8e
Expand generic info in lval_result.
2011-01-14 14:17:57 -08:00
Graydon Hoare
bc416284ac
Trim long lines.
2011-01-14 13:59:35 -08:00
Graydon Hoare
b039be1e5c
Pass tydescs to parametric fns.
2011-01-14 13:58:19 -08:00
Rafael Ávila de Espíndola
bdcb9d9b53
Make lookup non recursive and instead move the recursion just to
...
find_final_def. Use the fact that the recursion is in a simpler function to
detected import loops and exit.
2011-01-14 11:10:06 -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
c1f2e29596
Produce better errors for invalid imports.
2011-01-12 12:27:31 -08:00
Rafael Ávila de Espíndola
c489abedb4
Call find_final_def directly in fold_view_item_import. It is both cleaner and
...
faster.
2011-01-12 12:26:59 -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
Patrick Walton
2aa36777f1
Figure out what tydescs we need to pass when translating parametric function calls
2011-01-12 11:05:38 -08:00
Rafael Ávila de Espíndola
34643eeac8
Fix another import case we got wrong: The local environment should not
...
interfere with the import statements.
2011-01-11 13:59:52 -08:00
Rafael Ávila de Espíndola
c5a766f133
Fix two invalid import cases we were not detecting:
...
* If an import was unused we would never print any errors for it.
* We would keep the existing environment in scope when descending 'foo.bar'
and would find 'bar' in the global environment if there was no 'bar' in
'foo'.
2011-01-11 13:58:39 -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
Graydon Hoare
3b0e207109
Drop closures. Un-XFAIL bind-interior.rs.
2011-01-07 16:26:30 -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
Graydon Hoare
3c61793b5a
Synthesize closure thunks, and pass closure pointer into fn calls.
2011-01-07 15:12:23 -08:00
Graydon Hoare
27b4c3f962
Whitespace cleanup, and copy target into closure.
2011-01-06 12:55:27 -08:00
Rafael Ávila de Espíndola
fb8eff95e2
Add the boilerplate for folding view items.
2011-01-06 11:26:29 -05:00
Graydon Hoare
62c79fb216
Sketch closure-forming logic for nontrivial bindings.
2011-01-05 18:57:28 -08:00
Graydon Hoare
f3f63da7c8
Translate trivial bindings. Un-XFAIL bind-trivial.rs.
2011-01-05 16:06:01 -08:00
Graydon Hoare
5d2a6c73ca
Use uniform pair representation of functions everywhere, including static functions.
2011-01-05 15:31:35 -08:00
Patrick Walton
b7d2fe57cf
rustc: Allow the type unification handler to handle both expected and actual param types
2011-01-04 16:53:28 -08:00
Graydon Hoare
116dd9e338
Correct function pointer type in closure.
2011-01-04 15:29:38 -08:00
Graydon Hoare
2ec0b724c4
Merge remote branch 'espindola/import'
2011-01-04 15:07:38 -08:00
Rafael Ávila de Espíndola
7c8f99fdc1
Add names from imports to the namespace.
2011-01-04 17:58:10 -05:00
Patrick Walton
29fb238a39
rustc: Add an item type accessor
2011-01-04 12:46:11 -08: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
cfb97b3393
Begin sketching translation of bind_expr. No captures yet, also crashy.
2011-01-03 22:39:43 -08: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
546f1e98cb
Typecheck expr_bind.
2011-01-03 18:22:56 -08:00