Commit graph

743 commits

Author SHA1 Message Date
Graydon Hoare
2cbfb8795d Fix off-by-one in vector append code. 2011-03-06 23:06:01 -08:00
Graydon Hoare
386ba3ae63 Further work on vec-append. Almost working. 2011-03-06 22:37:14 -08:00
Brian Anderson
d39da6f978 Remove typestate workarounds 2011-03-06 15:13:35 -08:00
Brian Anderson
b893bec4bb Flatten conditionals in rustc.rs. Remove FIXME 2011-03-06 15:13:32 -08:00
Graydon Hoare
138c55a69d Fix return value on trans_vec_add. 2011-03-06 15:12:33 -08:00
Graydon Hoare
3eb20f3f6e Correct signatures and arguments associated with call into vec_append_glue. 2011-03-06 12:46:33 -08:00
Graydon Hoare
d97c800e31 Make ret and fail stmts have 0 out-edges, Closes #250. 2011-03-05 20:05:02 +00:00
Patrick Walton
94b681afe4 rustc: Use copy_ty() when initializing N-ary tag variants. Un-XFAIL generic-tag.rs. 2011-03-04 18:05:48 -08:00
Patrick Walton
1dc6bdf331 rustc: Don't recurse forever if type glue needs to refer to its own type descriptor 2011-03-04 17:22:43 -08:00
Patrick Walton
0aa74828e3 rustc: Remove "translating variants" debug string 2011-03-04 15:15:12 -08:00
Patrick Walton
76ec67063e rustc: Don't use recursive types for tags; remove tag_info; introduce GEP_tag() 2011-03-04 15:10:22 -08:00
Graydon Hoare
596face274 Parse (and generally ignore) constraints and constrained types. 2011-03-04 14:19:48 -08:00
Rafael Ávila de Espíndola
95c0cefd32 Build empty wrappers. This lets us compile hello world, but so far it
just returns 0.
2011-03-04 15:29:33 -05:00
Rafael Ávila de Espíndola
2ff67ed94e Remove unused argument. 2011-03-04 14:53:52 -05:00
Graydon Hoare
02dff96b52 Parse meta directives in crates. 2011-03-04 11:28:40 -08:00
Graydon Hoare
652cb48475 Assortment of additional work on vec-append. Not done yet. 2011-03-03 18:18:59 -08:00
Patrick Walton
629eba1d06 rustc: Make tag discriminants per-tag-ID, not per-tag-ID-and-subtypes 2011-03-03 18:15:17 -08:00
Graydon Hoare
b4a85c7b58 Factor out and generalize sequence pointer walking, for use in vec-grow. 2011-03-03 17:36:38 -08:00
Patrick Walton
04a0a6fbef Revert "rustc: Add support for folding over tag types" as it's unnecessary. Oops. 2011-03-03 17:09:20 -08:00
Patrick Walton
f6682280f3 rustc: Add support for folding over tag types 2011-03-03 16:54:15 -08:00
Patrick Walton
39b0563205 rustc: Remove dead code that used to generate tag constants from trans_constant() 2011-03-03 16:18:43 -08:00
Patrick Walton
f44fea8b6d rustc: Teach trans_tag_variant() about generic tags 2011-03-03 15:53:36 -08:00
Patrick Walton
2a241ece3a rustc: Disallow calling type_of() on dynamically-sized types 2011-03-03 14:10:36 -08:00
Patrick Walton
5dba7a77d2 rustc: Don't call type_of() in GEP_tup_like() if there are any type parameters in the result 2011-03-03 14:03:37 -08:00
Rafael Ávila de Espíndola
da8058ff83 Handle native types in calls. 2011-03-03 16:44:15 -05:00
Patrick Walton
fae6870d05 rustc: Make populate_fn_ctxt_from_llself() generic-aware 2011-03-03 11:50:35 -08:00
Brian Anderson
5876da00cf Remove some erroneous FIXMEs from #fmt parser 2011-03-02 22:05:19 -05:00
Patrick Walton
7ab58db4d0 rustc: Use llsize_of rather than size_of in trans_malloc_without_cleanup(). Should put out burning tinderbox... 2011-03-02 18:36:03 -08:00
Patrick Walton
675f762621 rustc: Have make_generic_glue pass an opaque type instead of an incorrect type in the case of dynamically sized types 2011-03-02 18:23:38 -08:00
Patrick Walton
792af12a3c rustc: Remove unused call to type_of() in trans_tup() 2011-03-02 18:06:53 -08:00
Patrick Walton
ec5c5a750d rustc: Rework the API for trans_malloc() to be generic-aware and so that clients don't need to call trans_malloc_inner() 2011-03-02 17:31:01 -08:00
Graydon Hoare
dddeba19d3 Sketch out some more pieces of vec-append. 2011-03-02 16:42:19 -08:00
Patrick Walton
5ebb91f24d rustc: Teach iter_structural_ty about dynamically-sized tuples and records 2011-03-02 16:31:20 -08:00
Patrick Walton
21e42ad88a rustc: For derived tydescs, explicitly store 0 for size and align when the type in question has a dynamic size 2011-03-02 16:23:14 -08:00
Patrick Walton
c19e4e1c29 rustc: Don't have type_of_arg() rely on the particular lie told by type_of() 2011-03-02 16:15:20 -08: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
f1500e5872 Add fold, typecheck and trans for expr_ext 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
Patrick Walton
9869aebf7d rustc: Remove the static "size" field from the tag info 2011-03-01 16:58:33 -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
Patrick Walton
9d59d33515 rustc: Add in the size of the discriminant to generic_size_of() for tags 2011-03-01 16:49:05 -08:00
Patrick Walton
71f853b3fd rustc: Add logic for generic tags to dynamic_size_of(). 2011-03-01 16:37:17 -08:00
Patrick Walton
bdbaf0c789 rustc: Factor out the align-elements logic in dynamic_size_of() 2011-03-01 16:02:19 -08:00
Graydon Hoare
348c77c31b Populate default compilation environment as in rustboot. 2011-03-01 15:57:55 -08:00
Graydon Hoare
0761c5f462 Fix typo in comment. 2011-03-01 15:13:50 -08:00
Graydon Hoare
7f2398e557 Implement structured compare for rec, tup, tag. Un-XFAIL structured-compare.rs. 2011-03-01 13:00:58 -08:00
Patrick Walton
f239ecb5f2 rustc: Switch from storing nullary tags as constants to storing their discriminants 2011-03-01 12:41:41 -08:00
Patrick Walton
8d8b3d985a rustc: Mark tags that have subtypes with dynamic size as dynamic 2011-02-28 19:07:26 -08:00
Patrick Walton
687d328d7c rustc: Trivial cleanup: Remove unused "arity" tag 2011-02-28 18:27:50 -08:00
Graydon Hoare
d08f3a1c70 More complete sketch of structural compare. Still not quite working. 2011-02-28 17:49:26 -08:00
Graydon Hoare
1291cc2df9 Groundwork for structural comparison. Still lacking the actual loop that does it. 2011-02-28 16:36:14 -08:00
Patrick Walton
86309ed3ea rustc: Write tag variant discriminants into the crate as integer constants 2011-02-28 16:09:22 -08:00
Rafael Ávila de Espíndola
a172f5aef5 Declare wrappers to the native functions and use those to create
the fn/closure pairs.

Disable native2.rs for now as we are not yet defining the wrappers and it
fails to link.
2011-02-28 17:33:46 -05:00
Rafael Ávila de Espíndola
4ac4d03f0c Update the function declarations with rust abi. A cdecl
fn write(int fd, rustrt.vbuf buf, uint count) -> int;

compiles to

declare i32 @write(i32, i8*, i32)

and a rust

fn vec_buf[T](vec[T] v, uint offset) -> vbuf;

compiles to

declare i8* @vec_buf(%task*, %tydesc*, %"vec[<P0:2>]", i32)

which I think is the correct declaration for both :-)
2011-02-28 10:37:49 -05:00
Patrick Walton
0120571e90 rustc: Make the tag info table keyed by both tag ID and type parameter. Also fix a bug that was causing all tags to compare equal. 2011-02-25 19:42:26 -08:00
Patrick Walton
e37db13b02 rustc: Eliminate the "ty_params" field from the tag info 2011-02-25 18:24:58 -08:00
Patrick Walton
699eb69cc8 rustc: Eliminate the "variants" field from the tag info 2011-02-25 18:16:50 -08:00
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