289 Commits

Author SHA1 Message Date
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