Patrick Walton
336f22db61
rustc: Resolve upvars as necessary
2011-03-11 10:39:36 -08:00
Rafael Ávila de Espíndola
0117cf2fc2
Handle resolving to native modules.
2011-03-10 21:33:53 -05:00
Graydon Hoare
3aac5059ee
Move the glue code to a .o file. This reduces how much asm we print
...
in each "translation unit".
Part of it is not repetitive and should probably be moved to a .ll file, but
for now we autogen all of it.
(Modified somewhat by graydon while integrating).
2011-03-10 17:30:08 -08:00
Patrick Walton
7454b53411
rustc: Build up a list of upvars inside foreach bodies
2011-03-10 16:49:00 -08:00
Patrick Walton
60f86354ad
rustc: Use the generic info from the item in bind thunks just as calls do. Un-XFAIL drop-parametric-closure-with-bound-box.rs.
2011-03-10 15:14:45 -08:00
Patrick Walton
185bcc6218
rustc: Increment the counter in trans_bind_thunk()
2011-03-10 15:09:41 -08:00
Patrick Walton
41d5094a8e
rustc: Fix off-by-one error and logic error regarding type parameters in the translation of bind expressions. Un-XFAIL bind-obj-ctor.rs.
2011-03-10 14:38:06 -08:00
Rafael Ávila de Espíndola
4ca0259b20
Update the current id when we create sub parsers.
2011-03-10 17:36:41 -05:00
Patrick Walton
36b81abf61
rustc: Perform a cast in vector initialization due to changing layers of indirection. Keep test/run-pass/size-and-align.rs XFAIL'd due to a leak in rustboot.
2011-03-10 12:15:07 -08:00
Patrick Walton
7505c1fa23
rustc: Run cleanups on while expressions' condition blocks. Un-XFAIL while-prelude-drop.rs.
2011-03-10 11:46:37 -08:00
Graydon Hoare
0d3cec71a3
Fix eval typo (caught by Martin Hock).
2011-03-10 10:17:10 -08:00
Graydon Hoare
8e8c336f93
Implement deep structural comparison through boxes and sequences.
2011-03-09 20:14:19 -08:00
Patrick Walton
874e8e3505
rustc: Have tag patterns use the type parameter information from the typechecker instead of trying to deduce it in trans. Un-XFAIL test/run-pass/generic-tag-values.rs.
2011-03-09 17:50:46 -08:00
Graydon Hoare
bafcbb101c
Fold exports.
2011-03-09 17:34:22 -08:00
Marijn Haverbeke
ec22fe9733
Add ty_obj case to pretty printer
2011-03-09 16:15:58 -08:00
Marijn Haverbeke
aed40fbcd8
Have the pretty-printer take a writer stream as argument
...
It now uses a string writer to also fill in for
middle.ty.ast_ty_to_str
2011-03-09 16:15:55 -08:00
Patrick Walton
ea2c868744
rustc: Perform type substitutions for tag variants in dynamic_size_of()
2011-03-09 16:07:55 -08:00
Patrick Walton
1e65baad94
rustc Remove dead "llunit_ty" assignment in trans_index
2011-03-09 15:23:41 -08:00
Patrick Walton
7dc64b45b5
rustc: Make tag pattern translation generic-aware. Un-XFAIL generic-tag-alt.rs.
2011-03-09 15:17:06 -08:00
Patrick Walton
ba2e04f271
Rename confusing usage of "lltag" to "lldiscrim" in trans_pat_match()
2011-03-09 14:29:00 -08:00
Patrick Walton
603d820b85
rustc: Have demand_pat() extract type parameters from tags. Add a test case.
2011-03-09 14:09:02 -08:00
Patrick Walton
2986ed43e9
rustc: Substitute type parameters in type_of_variant(). Add a test case.
2011-03-09 13:31:25 -08:00
Patrick Walton
9aa26904b8
rustc: Remove redundant ty_params_of_tag() function
2011-03-09 13:07:06 -08:00
Patrick Walton
80fa01fb57
rustc: Perform type parameter substitutions in static_size_of_tag()
2011-03-09 12:53:12 -08:00
Patrick Walton
fcd195bb4c
rustc: Don't try to load dynamically-sized types when translating tag variants. Add a test case for this.
2011-03-09 12:53:12 -08:00
Rafael Ávila de Espíndola
02f669ca67
Pass the task pointer as just another i32.
2011-03-09 15:35:54 -05:00
Rafael Ávila de Espíndola
10d8b4e861
Fix access to the rust stack.
2011-03-09 15:05:22 -05:00
Rafael Ávila de Espíndola
aeca138944
swap taskptr and callee in preparation for making taskptr optional.
2011-03-09 14:16:11 -05:00
Patrick Walton
50da3ea5bc
rustc: Instantiate tag patterns with the type parameters supplied by the programmer. size-and-align.rs typechecks now.
2011-03-09 11:08:59 -08:00
Patrick Walton
b828ec36fb
rustc: Factor the type parameter and type lookup out of instantiate_path(), as patterns need different logic
2011-03-09 10:56:45 -08:00
Patrick Walton
3c200f3e14
rustc: Grammar police work in check_pat() error messages
2011-03-09 10:21:48 -08:00
Patrick Walton
0a22a4edbb
rustc: Factor out path type instantiation so that tag patterns can use it as well
2011-03-08 18:48:17 -08:00
Patrick Walton
e64085b0a2
rustc: Fold over the paths in tag patterns so that we can resolve type variables in them
2011-03-08 18:11:00 -08:00
Patrick Walton
5b7c3b8b5d
rustc: Typecheck the base part of record extension expressions. Un-XFAIL rec-extend.rs.
2011-03-08 17:34:41 -08:00
Patrick Walton
e9fe47b359
rustc: Make ann_to_type() fail if the node has no type. Miraculously, no test cases fail.
2011-03-08 17:03:00 -08:00
Patrick Walton
e62424944b
rustc: Have trans get the type parameters from the annotation instead of trying to deduce them itself. Un-XFAIL generic-fn-twice.rs.
2011-03-08 16:56:19 -08:00
Graydon Hoare
01bfc3ae8b
Fix generic-bind support for bound aliases and generics.
2011-03-08 16:32:39 -08:00
Patrick Walton
da9ea9ab69
rustc: Move type parameter resolution from translation into the typechecker
2011-03-08 14:55:39 -08:00
Graydon Hoare
27547c6514
Revert "Move the glue asm code to a .o file. This reduces how much asm we print"
...
This reverts commit 55c80e763b
.
2011-03-08 13:20:16 -08:00
Rafael Ávila de Espíndola
55c80e763b
Move the glue asm code to a .o file. This reduces how much asm we print
...
in each "translation unit".
2011-03-08 13:08:31 -08:00
Patrick Walton
35bee753de
rustc: Pass explicit type substitutions to later passes
2011-03-08 13:00:31 -08:00
Patrick Walton
4654faa67c
rustc: Add a slot for explicit type parameter instantations to the typechecker's AST annotation
2011-03-08 12:42:56 -08:00
Patrick Walton
e2f6f19fc8
rustc: Rework type substitution to pair up type parameter IDs with the supplied type parameter instantiations explicitly
2011-03-08 12:19:37 -08:00
Patrick Walton
51be50490e
rustc: Expose common.def_eq().
2011-03-08 11:59:38 -08:00
Patrick Walton
473a242525
rustc: Store type parameter definition IDs instead of type parameter counts in the typechecker
2011-03-08 11:27:36 -08:00
Patrick Walton
0054efc412
rustc: Store the number of type parameters per item, which will be needed to get unused type params working
2011-03-08 10:57:40 -08:00
Brian Anderson
5aabe7e84f
Add partial pretty-printing for syntax extensions
2011-03-07 22:06:26 -05:00
Brian Anderson
fa2525a7bd
Remove old pretty-printer from rustc
2011-03-07 22:06:07 -05:00
Brian Anderson
5ba012f4a5
Add missing alt arm to expr_if pretty-printer
2011-03-07 22:05:55 -05:00
Brian Anderson
9fc4db6b89
Merge branch 'master' into recursive-elseif
...
Conflicts:
src/Makefile
src/comp/front/ast.rs
src/comp/front/parser.rs
src/comp/middle/fold.rs
src/comp/middle/trans.rs
2011-03-07 21:21:01 -05:00
Graydon Hoare
0d60918855
Most of the way through genericizing bind properly with new malloc path. Still getting the thunk call wrong.
2011-03-07 18:13:56 -08:00
Patrick Walton
3473ff3bff
rustc: Cast dynamically-sized tags in iter_structural_ty_full() to opaque tag types. Un-XFAIL generic-recursive-tag.rs.
2011-03-07 18:03:33 -08:00
Patrick Walton
6ed226c6b3
rustc: Cast the LLVM representations of tag types when constructing boxes. Un-XFAIL list.rs.
2011-03-07 16:35:00 -08:00
Patrick Walton
6f7e21ddac
rustc: Truncate or zero-extend indexes appropriately. Un-XFAIL integral-indexing.rs.
2011-03-07 15:44:42 -08:00
Graydon Hoare
df3038e68b
Parse opacity (and drop on the floor), so std.rc parses now.
2011-03-07 15:38:20 -08:00
Graydon Hoare
abbcc0385d
Poison ty_param values in trans; fix buggy parametric obj and box malloc paths. Add generic-box test.
2011-03-07 14:05:16 -08:00
Marijn Haverbeke
0624f9db4a
Add a pretty-printer
...
Adds a -pp option to the compiler which will cause it to simply
pretty-print the given file.
2011-03-07 12:58:08 -08:00
Rafael Ávila de Espíndola
8047957b99
Construct the wrappers to native functions. Hello world now works :-)
2011-03-07 15:37:40 -05:00
Graydon Hoare
90f299e710
Permit view items in native modules.
2011-03-07 11:48:43 -08:00
Graydon Hoare
dfa85968c3
Stage the last compile fix to put out fire. Thanks git.
2011-03-07 10:33:04 -08:00
Graydon Hoare
44bceb84a7
Complain on unexpected native symbol, rather than failing with none-exhaustive match.
2011-03-07 10:02:01 -08:00
Marijn Haverbeke
1ce6cfbe7c
use a precedence table for operator parsing
2011-03-07 15:32:11 +01:00
Graydon Hoare
60657fa8aa
Set the cleanup on the post-growth vector, not the temporary one.
2011-03-07 00:13:56 -08:00
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
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
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
Brian Anderson
c848ed1e98
Merge branch 'master' into forgraydon-elseif
2011-01-31 20:27:38 -05: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
Brian Anderson
214c32393a
Teach rustc to parse 'else if'
2011-01-30 14:15:22 -05: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