Commit Graph

1469 Commits

Author SHA1 Message Date
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 Ávila de Espíndola
57bb9d809b Parse function declarations. 2011-02-04 11:10:04 -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
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
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
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
2d7c2acf09 Switch from booleans to symbolic tags in a few places. 2011-01-24 15:26:10 -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
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
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
Graydon Hoare
cfb97b3393 Begin sketching translation of bind_expr. No captures yet, also crashy. 2011-01-03 22:39:43 -08:00
Graydon Hoare
546f1e98cb Typecheck expr_bind. 2011-01-03 18:22:56 -08:00
Graydon Hoare
771d76e552 Add type accessors for fn types. 2011-01-03 18:22:39 -08:00
Graydon Hoare
0040a31076 Fix fold bug on expr_bind. 2011-01-03 18:22:27 -08:00
Graydon Hoare
10a130e6c1 Translate local item decls. 2010-12-31 15:16:11 -08:00
Graydon Hoare
1b0da12fe8 Update method-fold env with fake item_fn representing the method. 2010-12-31 15:05:22 -08:00
Graydon Hoare
ad889ba3ae Change resolve errs to span_errs. 2010-12-31 14:43:43 -08:00
Graydon Hoare
bd536ba85f Free objects by indirectly dropping fields via enclosed tydesc first. 2010-12-31 13:01:45 -08:00
Graydon Hoare
f072718cfe Replace arg Load with load_non_structural in obj ctor. 2010-12-31 12:20:18 -08:00
Graydon Hoare
065542378c Teach ty.unify about ty_obj. 2010-12-31 10:26:29 -08:00
Graydon Hoare
aa1d8d0768 Move unify_fn logic out-of-line. 2010-12-31 09:48:54 -08:00
Graydon Hoare
91809a17ac Teach typeck.ast_ty_to_ty about ty_obj. 2010-12-30 17:46:56 -08:00
Graydon Hoare
a99713265b Teach fold about ty_obj. 2010-12-30 17:46:35 -08:00
Graydon Hoare
1f2585f479 Teach trans to access object fields. 2010-12-30 17:01:20 -08:00
Graydon Hoare
9676fb2d0a Assign method types properly by sorted-order. 2010-12-30 17:00:59 -08:00
Graydon Hoare
153efb58bc Teach typeck to check obj field accesses. 2010-12-30 15:28:19 -08:00
Graydon Hoare
bc9db2e972 Teach resolve to find obj fields and ty params from methods. 2010-12-30 15:27:52 -08:00
Patrick Walton
a634b21563 rustc: Make parametric return types go through an out pointer 2010-12-29 19:08:35 -05:00
Rafael Ávila de Espíndola
2c6dd18224 Add a -shared option to rustc and don't try to look for main if it is given. 2010-12-29 11:21:16 -05:00
Graydon Hoare
5c7cd6419c Modify translation of obj methods to accept an initial recursive-self-typed (in the LLVM sense) obj argument. 2010-12-23 17:31:16 -08:00
Patrick Walton
daac7a8b13 rustc: Add a type_has_dynamic_size predicate 2010-12-22 18:02:48 -08:00
Graydon Hoare
3f3a121043 Copy body tydesc and args into obj bodies. 2010-12-22 16:09:59 -08:00
Graydon Hoare
a2a642c17a Correct bug in typechecking ctor arguments to nonempty objects. 2010-12-22 13:57:18 -08:00
Graydon Hoare
ac270fc854 Allocate heap cells to store non-empty object bodies. 2010-12-22 13:56:51 -08:00
Patrick Walton
0411132679 rustc: Move unification out of typeck.rs; trans will need it too. 2010-12-21 17:47:13 -08:00
Patrick Walton
e06263ff4b rustc: Reference count the function context in typechecking so that passing it around via objects isn't as costly 2010-12-21 17:27:29 -08:00
Graydon Hoare
3504f4a4bf Sort methods in object types. 2010-12-21 16:43:28 -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
b9286a7179 rustc: Sanitize names better. Puts out burning tinderbox on OS X. 2010-12-20 19:52:14 -08:00
Patrick Walton
5cbf8889d0 rustc: Add bind expressions to the AST 2010-12-20 18:58:18 -08:00
Graydon Hoare
ed1dddc33f Null-check on obj box ptr, init to null. Un-XFAIL simple-obj.rs. 2010-12-20 17:28:07 -08:00
Graydon Hoare
399929ba0b Support ty_obj in trans_field; simple-obj.rs compiles (but crashes). 2010-12-20 16:48:28 -08:00
Graydon Hoare
86188da348 Mop up cases of s/copy/take/, remove 'binding' terminology, whitespace police, and make obj/fn structural. 2010-12-20 16:26:38 -08:00
Patrick Walton
e70c695ab9 rustc: Use the passed-in tydescs for take and drop glue in parametric fns. Also fix a level-of-indirection problem with tydesc params. 2010-12-20 15:23:24 -08:00
Patrick Walton
194d7844ea rustc: Print the type when we die in trans.make_drop_glue_inner 2010-12-20 14:44:04 -08:00
Patrick Walton
9fb2284600 rustc: Add a type param ID -> type descriptor mapping to function contexts 2010-12-20 14:35:04 -08:00
Graydon Hoare
7bd30f83e1 Put out burning tree (sizeof / alignof bug). 2010-12-20 12:54:50 -08:00
Graydon Hoare
490da3564b Use gvars for vtbls rather than returning const immediates. 2010-12-20 11:41:32 -08:00
Graydon Hoare
6a8518c97b Trailing whitespace police. 2010-12-20 11:41:32 -08:00
Patrick Walton
a7e9984999 rustc: Build tydescs for types, and make all take and drop operations go through the tydescs for simplicity (LLVM inlines them). 2010-12-20 10:23:37 -08:00
Patrick Walton
ad5e920276 rustc: Remove the unused "name" parameter from trans.new_builder 2010-12-17 18:42:15 -08:00
Patrick Walton
9b56b79296 rustc: Make some no-op take and drop glue for scalar types 2010-12-17 18:40:24 -08:00
Graydon Hoare
01bcb1d10e Split part of typeck.check_fn out into typeck.check_item_fn, then check all fns, including obj fns. 2010-12-17 18:25:14 -08:00
Patrick Walton
7210a31e2a rustc: Make all drop and take glue have the same signature, so we can put them in tydescs 2010-12-17 18:20:51 -08:00
Graydon Hoare
b00abd04e2 Record type annotations for methods. 2010-12-17 17:52:25 -08:00
Patrick Walton
c44c7c5ab3 rustc: Zero out slots after dropping them 2010-12-17 17:21:56 -08:00
Graydon Hoare
56e040e61a Trans methods more correctly, and store vtbl pointer in pair returned from obj ctor. 2010-12-17 00:31:41 -08:00
Graydon Hoare
a3f828f941 Sketch trans_vtbl. 2010-12-16 18:34:04 -08:00
Patrick Walton
bfdba2dbcc rustc: Translate parametric function signatures into task + type parameters + formal arguments 2010-12-16 16:35:19 -08:00
Graydon Hoare
31f0642da3 Stub out translation of obj ctors (no vtbl or body built). 2010-12-16 15:55:28 -08:00
Patrick Walton
51782d2c21 rustc: Add a type fold mechanism to the typechecker 2010-12-16 15:13:04 -08:00
Patrick Walton
a6c6e8679e rustc: Only generalize on definition types that can actually be parametric 2010-12-16 13:59:20 -08:00
Patrick Walton
680e858d61 rustc: Write types back when typechecking "ret" statements 2010-12-16 12:25:39 -08:00
Patrick Walton
13b889287b rustc: Make trans.type_of handle parameter types 2010-12-16 12:23:48 -08:00
Patrick Walton
e6908a66ec rustc: Infer the types of type-parametric functions 2010-12-16 11:12:45 -08:00
Graydon Hoare
9759d1e08a Annotate obj items while folding ast in typeck. 2010-12-16 10:34:54 -08:00
Graydon Hoare
7d2feae857 Collect obj items, translate obj-name references and obj-ctor types. 2010-12-16 10:23:47 -08:00
Graydon Hoare
d8d2220b30 Typecheck object method calls. 2010-12-15 20:23:36 -08:00
Graydon Hoare
482dc0c8fa Convert obj item type to ctor type rather than obj type. 2010-12-15 17:04:21 -08:00
Patrick Walton
e17473de07 rustc: Move next_var_id back to the crate context in typechecking; we'll need it when collecting item types 2010-12-15 15:10:41 -08:00
Patrick Walton
d1b2366983 rustc: Resolve type params 2010-12-15 13:13:36 -08:00
Graydon Hoare
76aab6b1a8 Teach typeck to stringify obj types. 2010-12-15 12:30:31 -08:00
Patrick Walton
42789c4b97 rustc: Fix bug involving extracting any variant element beyond the first. Un-XFAIL alt-tag.rs. 2010-12-15 10:11:33 -08:00
Patrick Walton
2a8350e8d9 rustc: Resolve tag names in the typechecker 2010-12-15 10:00:28 -08:00
Patrick Walton
e17806e1c8 rustc: Translate pattern matching 2010-12-15 09:38:40 -08:00
Graydon Hoare
cd55b7ed89 Teach typeck.ty, typeck.collect_item_types and typeck.check_expr about obj items. 2010-12-14 18:04:39 -08:00
Graydon Hoare
4cddeed651 Teach resolve about obj items. 2010-12-14 17:09:37 -08:00
Graydon Hoare
e0998847be Teach fold about objs. 2010-12-14 16:35:31 -08:00
Graydon Hoare
525966a543 Fix a couple bugs in iter_sequence, un-XFAIL vec-drop.rs. 2010-12-13 17:48:42 -08:00
Patrick Walton
90807e240f rustc: Typecheck pattern bindings 2010-12-13 16:44:20 -08:00
Patrick Walton
0ef65780ca rustc: Check patterns before arm blocks in alt expressions; this will be needed for binding type resolution 2010-12-13 16:39:35 -08:00
Patrick Walton
29e6d7a4ad rustc: Hack to get rid of passing i1 types for unit around in most cases, suggested by Rafael 2010-12-13 16:12:45 -08:00
Graydon Hoare
a3cbdc661c Set the new vec fill-size on the compiler side, as in rustboot. Un-XFAIL first 3 vec tests. 2010-12-13 11:16:04 -08:00
Patrick Walton
04e15bf8f8 rustc: Typecheck "alt" expressions and patterns 2010-12-12 20:02:49 -08:00
Patrick Walton
7d0734bb96 rustc: Propagate types for vector, tuple, record, assignment, and if expressions downward again 2010-12-12 19:54:58 -08:00
Patrick Walton
833af6f6f3 Revert "rustc: Propagate types for vector, tuple, record, assignment, and if expressions downward" due to test bustage
This reverts commit 1cdf42dd63.
2010-12-12 19:16:08 -08:00
Patrick Walton
d08b5bc3d4 rustc: Fix nonexhaustive match failure on unresolved identifiers 2010-12-12 16:49:51 -08:00
Patrick Walton
9ac42ca743 rustc: Resolve variant names in patterns 2010-12-12 16:47:37 -08:00
Patrick Walton
bc5fa9bf67 rustc: "resoling" -> "resolving" typo 2010-12-12 16:37:31 -08:00
Patrick Walton
38ba0e6917 rustc: Add a definition ID to tag patterns 2010-12-12 16:30:34 -08:00
Patrick Walton
1cdf42dd63 rustc: Propagate types for vector, tuple, record, assignment, and if expressions downward 2010-12-11 23:22:06 -08:00
Patrick Walton
0d5724b773 rustc: Make return value inference use next_ty_var, now that we have it 2010-12-11 22:40:46 -08:00
Patrick Walton
c3ab601a89 rustc: Move next_var_id from typeck.crate_ctxt to typeck.fn_ctxt 2010-12-11 22:37:23 -08:00
Patrick Walton
368459db43 rustc: Remove "update_env_for_arm" debugging message 2010-12-11 22:30:12 -08:00
Patrick Walton
de118d79b6 rustc: Resolve pattern bindings 2010-12-10 18:08:32 -08:00
Patrick Walton
0509b1b9d7 rustc: Add update_env_for_arm to fold; we'll need it to resolve pattern bindings 2010-12-10 17:49:28 -08:00
Graydon Hoare
f97242c255 Fix bad GEP and missing branch in iter_sequence; vec.rs compiles now. 2010-12-10 17:46:47 -08:00
Graydon Hoare
60affafdcd Implement expr_vec. 2010-12-10 17:25:22 -08:00
Graydon Hoare
779b913348 Fix trans_index implementation. 2010-12-10 17:25:22 -08:00
Patrick Walton
0d43c198f0 rustc: Add def ids to pattern bindings 2010-12-10 17:24:53 -08:00
Patrick Walton
0b84707da7 rustc: Add tag support to ty_of_item in typeck 2010-12-10 16:44:12 -08:00
Patrick Walton
2c472c0de8 rustc: Add LLVM typedefs for rust_crate and rust_task for good measure 2010-12-10 16:29:41 -08:00
Patrick Walton
cf8ad5f56d rustc: Declare LLVM typedefs appropriately 2010-12-10 16:24:47 -08:00
Patrick Walton
e37c032eb0 rustc: Move refcount incrementing out of line too 2010-12-10 16:14:06 -08:00
Graydon Hoare
865c06c1f9 Preliminary translation of expr_index. 2010-12-10 16:10:35 -08:00
Patrick Walton
270b93bd71 rustc: Move refcount decrement-and-free (drop) logic out-of-line 2010-12-10 15:37:17 -08:00
Patrick Walton
10d5d32537 rustc: Change lazy "and" and "or" to use scope contexts rather than sub-block contexts, to run cleanups properly 2010-12-10 15:27:55 -08:00
Graydon Hoare
0565350b5f Typecheck vec and index exprs. 2010-12-10 15:05:19 -08:00
Patrick Walton
eaa76bd83f rustc: Decouple new_fn_ctxt() from AST function arguments, so that it can be used to generate glue 2010-12-09 17:38:57 -08:00
Graydon Hoare
9ee3475e09 Rewrite second pass of collect_item_types to use fold, therefore process all items in crate. Add testcase to check. 2010-12-09 16:06:40 -08:00
Patrick Walton
1c9dc2ca52 rustc: Decouple new_fn_ctxt from AST items so that we can use it to generate glue too 2010-12-09 15:26:16 -08:00
Graydon Hoare
d213f9be95 Simplify second pass of collect_item_types so I can understand it better. 2010-12-09 15:19:38 -08:00
Graydon Hoare
b7e344622c Add a type abbreviation and redo first pass of collect_item_types to collect across the whole crate, not just top level. 2010-12-09 15:03:19 -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
Patrick Walton
5a6cc341ad rustc: Add gross eq_ty() and hash_ty() functions 2010-12-09 14:03:43 -08:00
Patrick Walton
e5bbe93646 rustc: Mark constant strings as constants 2010-12-09 13:49:26 -08:00
Patrick Walton
e652e58bfc rustc: Fix indirection problem with tag constructors 2010-12-09 13:39:33 -08:00
Graydon Hoare
66b5dfabee Remove redundant trans_drop_str, fix buggy branch in trans_if. Un-XFAIL drop-on-ret.rs. 2010-12-09 12:32:16 -08:00
Graydon Hoare
440e637edf Fix boxed returns harder. Un-XFAIL output-slot-variants.rs. 2010-12-08 16:43:59 -08:00
Graydon Hoare
652ae9f50e Fix structure returns harder. 2010-12-08 16:34:16 -08:00
Graydon Hoare
e3a3a03572 Fix boxed returns. 2010-12-08 16:20:04 -08:00
Graydon Hoare
264de9c7fc Fix structure-returns. 2010-12-08 15:52:01 -08:00
Graydon Hoare
2b36a8eab4 Fix log upcall translation bug. Un-XFAIL rec-auto.rs. 2010-12-08 15:29:09 -08:00
Graydon Hoare
68af077e81 Implement binop= forms. Un-XFAIL bitwise.rs. 2010-12-08 14:50:47 -08:00
Graydon Hoare
b971d6312e Fix missing case in resolve, un-XFAIL rec-tup.rs. 2010-12-08 11:52:34 -08:00
Patrick Walton
e558ff907f rustc: Allow callees to use alias args 2010-12-07 12:34:10 -08:00
Patrick Walton
7f85945b05 rustc: Translate function calls with alias parameters (though the callee can't use them yet) 2010-12-07 11:57:19 -08:00
Patrick Walton
15a614acb4 rustc: Implement is_lval 2010-12-07 10:38:42 -08:00
Graydon Hoare
a059b4720c Null slots on missing init, null-check box ptrs on drop. Works around missing typestate pass. Un-XFAIL box-in-tup.rs. 2010-12-06 17:46:44 -08:00
Patrick Walton
3f9d5dab5b rustc: Run the verifier over LLVM modules before writing them out 2010-12-06 17:17:49 -08:00
Patrick Walton
a1c7d19836 rustc: Translate tag constructors. Can't call them at the moment due to lack of alias args, though. 2010-12-06 16:50:24 -08:00
Patrick Walton
fb05d9184b rustc: Make copy_args_to_allocas not insist on a function type so it's easier to make it work with tag constructors 2010-12-06 11:22:08 -08:00
Graydon Hoare
9f6a630519 Drop rec and tup alloca temporariles on block exit. 2010-12-03 18:43:40 -08:00
Patrick Walton
b4d9754347 rustc: Make new_fn_ctxt and copy_args_to_allocas receive a list of args rather than an AST fn, so we can use it for tag constructors 2010-12-03 18:20:41 -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
Patrick Walton
afd3af9bb5 rustc: Remove LLVM unions and represent tags as (discriminant, byte blob) pairs 2010-12-03 16:55:59 -08:00
Patrick Walton
f371dc613a rustc: Set data layout and target triple 2010-12-03 13:52:54 -08:00
Graydon Hoare
aeef8cee29 Add load_non_structural and use it. 2010-12-03 13:03:07 -08:00
Patrick Walton
5347cac92d rustc: Handle n-ary tag constructors in iter_structural_ty (which lets us process their refcounts correctly) 2010-12-03 12:35:49 -08:00
Graydon Hoare
4316df6323 Trim whitespace. 2010-12-03 12:26:27 -08:00
Graydon Hoare
a98b2ebb4a Change 'stratum' to the friendlier term 'layer'. 2010-12-03 12:15:32 -08:00
Patrick Walton
7bdb93266d rustc: Translate nullary tag constructors 2010-12-03 10:24:55 -08:00
Graydon Hoare
d922b0ad9c Drop slots on the way out of scopes. Un-XFAIL box.rs. 2010-12-02 19:44:24 -08:00
Graydon Hoare
966cfed07c Modify block ctxt / cleanup handling to only occur on scope blocks. 2010-12-02 19:12:34 -08:00
Graydon Hoare
1e9c8b923d Implement translation for deref unop. 2010-12-02 19:12:09 -08:00
Graydon Hoare
97247bbb53 Change order of basic blocks in copy_ty, makes nicer disassembly. 2010-12-02 18:33:11 -08:00
Graydon Hoare
f69b4417e6 Don't drop context returned from decl-init call to copy_ty. 2010-12-02 18:32:43 -08:00
Graydon Hoare
0f41f5a8f9 Improve translations of unary box operator and drop_ty on boxes. 2010-12-02 17:43:24 -08:00
Patrick Walton
e233978891 rustc: Change fn_names and fn_ids to item_names and item_ids in trans, since we're soon to be storing tags in there too 2010-12-02 17:30:07 -08:00
Patrick Walton
49b3cd700e rustc: Remove the premature optimization for nullary tag constructors, since it'll be no longer necessary once LLVM gets a unit type 2010-12-02 17:18:06 -08:00
Graydon Hoare
a439f6ec68 Add ty_boxed to typeck.type_is_boxed. 2010-12-02 15:56:44 -08:00
Graydon Hoare
cdcab742a7 Fix fold bug on expr_unary. 2010-12-02 15:54:45 -08:00
Graydon Hoare
b79de6b76c Typecheck the box and deref unops properly. 2010-12-02 14:38:32 -08:00
Patrick Walton
376b35e618 rustc: Remove the overly complex variant_indices and n_ary_variant_indices tables 2010-12-02 11:00:10 -08:00
Patrick Walton
eeecc8d061 rustc: Add stub support for tag constructors in trans 2010-12-01 19:03:47 -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
cd97b9d965 rustc: Typecheck tag constructors 2010-12-01 11:39:03 -08:00
Patrick Walton
67a616340d rustc: Fix segfault due to nonexhaustive match when using tags 2010-12-01 10:53:40 -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
Graydon Hoare
25b973df1b Finish support for typechecking and translating records. Un-XFAIL rec.rs. 2010-11-30 10:39:35 -08:00
Graydon Hoare
9c426521ee Wrap long lines. 2010-11-29 17:53:35 -08:00
Graydon Hoare
a94046f5d2 Teach typechecker about record types. 2010-11-29 17:42:53 -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
6c4e975099 Teach fold about ty_rec. 2010-11-29 16:09:46 -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
Graydon Hoare
20b11c832c Add mut field to typeck.ty. 2010-11-29 12:13:38 -08:00
Graydon Hoare
7be7c23b6b Copy args to allocas, change llargs lookups to 'in mem'. Un-XFAIL tup.rs. 2010-11-26 17:47:27 -08:00
Graydon Hoare
d7ce2425c9 Load structural values through pointer before passing structs as args. 2010-11-26 16:08:10 -08:00
Graydon Hoare
9f56b0061c Pass exprs by @, always treat structural types by pointer, move path and name into trans_lval. 2010-11-26 15:54:04 -08:00
Graydon Hoare
1600974a3a Avoid segfault due to fallthrough in base case of incr_all_refcounts. We could use a typestate checker in rustc, any time now. 2010-11-26 13:03:56 -08:00
Graydon Hoare
7e01aba12d Declare the memcpy intrinsics properly. 2010-11-26 13:02:48 -08:00
Graydon Hoare
3fd3270845 Return memcpy src rather than falling through and failing. 2010-11-25 18:28:15 -08:00
Graydon Hoare
a95dbdef70 Cast memcpy args to correct types. 2010-11-25 18:13:20 -08:00
Graydon Hoare
9b3182a99d Add lookup checks and intrinsics table to trans. 2010-11-25 17:45:26 -08:00
Graydon Hoare
7e2f205866 Add missed case to typeck.ast_ty_to_ty, plus faux exhaustiveness check. 2010-11-25 17:06:36 -08:00
Graydon Hoare
416d9bc0fd Fix typo in numeric-label-parsing loop. 2010-11-25 16:53:17 -08:00
Graydon Hoare
f0abe8f568 Translate field expressions. 2010-11-25 16:40:24 -08:00
Graydon Hoare
5678f5aa56 Typecheck field expressions. 2010-11-25 16:40:03 -08:00
Graydon Hoare
092af6fb76 Typecheck tup expressions. 2010-11-25 14:44:04 -08:00
Graydon Hoare
cffdb66aa4 Translate tuple-expressions. 2010-11-24 18:11:11 -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
Graydon Hoare
f809375b16 Sketch out type-directed structural drop and copy, including vector types. 2010-11-24 16:56:01 -08:00
Graydon Hoare
96540ef0bb move expr_call translation into helper function. 2010-11-24 16:56:01 -08:00
Graydon Hoare
e2f9f746ea Move expr_cast translation into helper function. 2010-11-24 16:56:01 -08:00
Patrick Walton
c1916adc7e rustc: Parse type-parametric functions 2010-11-24 16:52:49 -08:00
Patrick Walton
f075b10af2 rustc: Add patterns to fold 2010-11-24 15:45:59 -08:00
Patrick Walton
5d72dae1d1 rustc: Parse tag items. Currently segfaults in copy glue. 2010-11-24 11:36:35 -08:00
Patrick Walton
f55f46af64 rustc: Typecheck whiles and do-whiles. Add a workaround to complex.rs pending a solution to the one-armed-if problem. 2010-11-23 17:02:08 -08:00
Patrick Walton
4208352527 rustc: As an experiment, swap the expected/actual types when checking function arguments. Produces better diagnostics for arg-type-mismatch.rs. 2010-11-23 10:25:20 -08:00
Graydon Hoare
f2a7e712d3 Remove warning about non-void expr stmts. 2010-11-22 18:03:27 -08:00
Graydon Hoare
e05d7c3ac1 Support mach types in rustc, enable 5 more tests. 2010-11-22 17:41:32 -08:00
Patrick Walton
3e01b2d529 rustc: "Expected" and "actual" were swapped. Also un-XFAIL compile-fail/arg-count-mismatch.rs for good measure. 2010-11-22 17:38:23 -08:00
Patrick Walton
c0741c13ab Remove the global bindings table in the typechecker 2010-11-22 17:14:18 -08:00
Graydon Hoare
d3cb25d5d1 Check and translate 'as' cast-operator, lower target-specific types, reindent rustc.rs, enable uint test. 2010-11-22 16:27:00 -08:00
Graydon Hoare
c262543d3b Fix type disagreements in lowering typeck.ty to llvm TypeRefs, enable complex.rs test. 2010-11-22 14:28:05 -08:00
Graydon Hoare
1090c5e69c Check for structural equality rather than structural-and-cname equality. 2010-11-22 13:24:53 -08:00
Graydon Hoare
6fcf55347e Resolve the easy case of type paths. 2010-11-22 13:24:53 -08:00
Graydon Hoare
3ba6736383 More typeck hacking, check if and call exprs, enable fact and deep tests. 2010-11-21 12:06:09 -08:00
Graydon Hoare
5955e23343 Typecheck assignment exprs, redo decl checking, propagate ty_vars. Enable another test. 2010-11-21 01:16:16 -08:00
Graydon Hoare
79a3811ab8 Typecheck binary, unary and name expressions. Re-enable 3 more tests. 2010-11-20 23:00:52 -08:00
Graydon Hoare
77670e84de Fix bug in llvm type signature of function items; enable three more tests. 2010-11-20 22:05:17 -08:00
Graydon Hoare
eaf9df2dc3 Remove dead code. 2010-11-20 22:04:48 -08:00
Graydon Hoare
e731520be5 Add helper function to double-check non-null types. 2010-11-20 22:04:34 -08:00
Graydon Hoare
244c59ac20 Clean up typechecker file, disable all tests that fail under typechecker. 2010-11-19 20:46:04 -08:00
Graydon Hoare
6d92ca64a7 Translate typeck.ty_fn to a TypeRef. Can compile int.rs test now. 2010-11-19 20:08:57 -08:00
Patrick Walton
c00bda539d rustc: First stab at a typechecker 2010-11-19 17:50:45 -08:00
Graydon Hoare
a352efadad Switch upcall glues to fastcall as well. 2010-11-14 13:41:10 -08:00
Graydon Hoare
4cbef9d8a1 Remove outptr from module-internal calls; use standard ABI returns. 2010-11-14 13:04:01 -08:00
Graydon Hoare
640d167037 Switch module-internal calls (i.e. all user code) to fastcall. Still returning via explicit outptr. Activate glue works by accident. 2010-11-14 12:28:07 -08:00
Graydon Hoare
a7af86155d Support emitting trap instructions for debugging. 2010-11-14 11:21:49 -08:00
Graydon Hoare
2de59aa6b9 Correct infinite-loop, block-context mismatches in early cleanups. 2010-11-14 10:48:44 -08:00
Graydon Hoare
0578978495 Move phi-node generation into a helper that measures the liveness of each incoming edge. Factorial test now succeeds. 2010-11-12 14:51:11 -08:00
Graydon Hoare
2ff0662eae Load outptr alloca as retval; function call/return now works in rustc. 2010-11-12 11:48:18 -08:00
Graydon Hoare
1ff88982fe Stop translating a block when a sub-statement terminates the llvm bb. 2010-11-12 10:15:40 -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
Graydon Hoare
d1e7f0b414 Redo the scheme for block context chaining and termination, to simplify and support ret better. 2010-11-10 17:46:49 -08:00
Graydon Hoare
a404e54261 Teach rustc about const tag value, begin work on trans_copy_ty, make uint's to_str routine less clever and thereby resist overflow. 2010-11-09 17:50:31 -08:00
Graydon Hoare
216082d040 Translate ast.box unary expressions and support extraction of TypeRefs from AST annotations. 2010-11-05 18:31:24 -07:00
Graydon Hoare
c1fb592f62 Emit WinMain@16 entrypoint on windows. 2010-11-05 18:31:22 -07:00
Graydon Hoare
981edaef40 Fix two incorrect block-context uses in rustc. 2010-11-05 18:31:21 -07:00
Graydon Hoare
2122e363df Teach rustc to generate type descriptors. 2010-11-05 18:31:20 -07: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
7db115834f Split out stratum-checking pass, implement more-strict (overly aggressive) impure-effect checking. 2010-11-02 15:24:46 -07:00
Graydon Hoare
f3b7aa9068 Long line police. 2010-10-22 19:37:03 -07:00
Graydon Hoare
3bf775e80f Pass outptr as in rustboot. Probably need to revisit this ABI. Also disgusting hack employed. Please remove. 2010-10-22 19:35:48 -07:00
Graydon Hoare
b2f07c6056 Collect all fns first so decl order doesn't matter to translation. 2010-10-22 19:31:33 -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
6ec402d4a6 Add makefile bits to run rustc on the testsuite as part of 'make check'. Mostly xfailed. 2010-10-22 14:46:03 -07:00
Graydon Hoare
36aea66e47 Give rustc the beginnings of an option-processing loop (at least -nowarn, -h and -o). 2010-10-22 11:47:28 -07:00
Graydon Hoare
3f80e79efc Add support for passing args to fns in rustc. 2010-10-21 18:13:57 -07:00
Graydon Hoare
67477b85ae Support basic function calls in rustc. 2010-10-21 17:24:26 -07:00
Graydon Hoare
368943998d Translate lazy && and || operators in rustc. 2010-10-19 17:24:15 -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
Patrick Walton
10d628dbd0 Add a type slot to the AST 2010-10-19 13:28:43 -07:00
Patrick Walton
e497fe981b Partial work on adding types to the AST 2010-10-19 13:10:39 -07:00
Graydon Hoare
4a3edb320d Store items and decls in vecs to preserve input order, index externally. Implement block-local name lookup. 2010-10-18 18:19:16 -07:00
Graydon Hoare
865bbae685 More work on resolving names in rustc. Basic expr_name lookup working on items and args. 2010-10-18 16:15:25 -07:00
Graydon Hoare
67d4427345 Begin sketching name lookup in rustc. 2010-10-18 14:37:30 -07:00
Graydon Hoare
05e7374e29 Expand rustc's fold to update env on block boundaries. 2010-10-18 14:36:40 -07:00
Patrick Walton
1c3e95e0a5 Roll back the expr->lval change. We're now LL(1) again. 2010-10-18 11:31:31 -07:00
Graydon Hoare
57c7e94c8f Encode and decode tag types in dwarf properly. Add list module to std. Shift rustc to use std.util.option. Fix various dependent bugs. Closes #73. 2010-10-15 22:09:09 -07:00
Graydon Hoare
fc2d4828e7 Finish the fold drivers in fold.rs. 2010-10-14 18:14:09 -07:00
Graydon Hoare
6993346e7d Stop using bound refs (don't work; leak) and work around auto-deref vec-append bug. 2010-10-14 15:52:42 -07:00
Patrick Walton
699ef987d7 rustc: Start work on lvals 2010-10-14 15:20:27 -07:00
Patrick Walton
81a43ef698 rustc: Add mutability to tuple literals 2010-10-12 16:30:44 -07:00
Patrick Walton
8a7a0308e3 rustc: Parse lets 2010-10-11 18:13:14 -07:00
Patrick Walton
e3758fe321 rustc: Make functions output a type, not a slot 2010-10-08 12:26:34 -07:00
Graydon Hoare
785d9b1594 Add a little code to resolve, to check that the fold interface works. 2010-10-07 18:34:22 -07:00
Graydon Hoare
b184be07e1 Revise folds to be much-less-polymorphic after some discussion; flesh out stmt and expr fold drivers. 2010-10-07 16:42:48 -07:00
Graydon Hoare
fa5ef4cfb6 Add the beginnings of an ast folder plus an empty module for resolve. 2010-10-06 18:36:28 -07:00
Graydon Hoare
5f2d35ed08 Make ast node box uses more uniform in rustc. 2010-10-06 15:41:14 -07:00
Graydon Hoare
d1e59d6910 Add input coordinate tracking to all major rustc ast nodes. 2010-10-05 18:21:44 -07:00
Graydon Hoare
44e4b2d63a Teach rustc about phi nodes, block relationships. Translate if- and block-expressions. 2010-10-04 15:55:12 -07:00
Graydon Hoare
a87e81b929 Support refcount-drop and conditional free in rustc. 2010-10-01 18:25:42 -07:00
Graydon Hoare
2e0d075407 Fix bug in bind thunks failing top drop unbound args; add test and adjust rustc to use bind again. 2010-09-30 17:39:37 -07:00
Graydon Hoare
b970563fe3 Patchwork of attempted fixes to effect system and gc system; eventually give up and disable it entirely in the runtime. Will need extensive reworking. 2010-09-29 17:22:13 -07:00
Graydon Hoare
f13306e8d6 Switch boolean operands to 1-bit, as llvm prefers. Will promote to 8-bit when storing to memory. 2010-09-28 16:17:28 -07:00
Graydon Hoare
5a4cb3ef36 Translate a modest selection of easy binops. 2010-09-28 14:01:21 -07:00
Graydon Hoare
11e72fd4e0 Translate literal int, char, bool and str types, as well as logging them. 2010-09-28 12:23:40 -07:00
Graydon Hoare
5b4b035c7a Start building up the expression tower. 2010-09-27 18:25:02 -07:00
Graydon Hoare
f5787ed80c Translate exit-task glue such that rustc's output programs exit properly. 2010-09-27 15:38:34 -07:00
Graydon Hoare
d31eca41d5 First linkable and executable translation from rustc. Upcalls to log, passes wrong arg, crashes. Baby steps. 2010-09-27 13:43:53 -07:00
Graydon Hoare
d53209c927 Construct the crate constant in rustc. 2010-09-24 16:41:01 -07:00
Graydon Hoare
b69a0c137c Modify the task type to not contain any opaques; apparently these make LLVM cross. 2010-09-24 15:22:48 -07:00
Graydon Hoare
4cfc4250bf More work on trans, almost getting to the point of emitting an upcall. 2010-09-24 14:56:04 -07:00
Graydon Hoare
274128c6b2 Add trans.get_upcall and skeleton for trans_log. 2010-09-23 18:38:37 -07:00
Graydon Hoare
2db1f864e2 Declare the global and upcall glues as ValueRefs in rustc's trans. 2010-09-23 17:16:34 -07:00
Graydon Hoare
46e46d0b49 Translate a bunch of the material (lltrans, llasm, abi) from rustboot to rustc, and move files around. 2010-09-23 15:46:31 -07:00