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
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
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
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
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
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
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
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
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
Brian Anderson
c1e6f5328c
Make the expanded expression in expr_ext not optional
2011-03-02 10:28:15 -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
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
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
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
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
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
Patrick Walton
b4d6589e73
Implement type descriptor binding. Un-XFAIL test/run-pass/generic-bind.rs.
2011-02-23 17:08:02 -08: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
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
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
84dd64b6cf
Switch ast.is_call_expr check in trans to non-typestate form.
2011-02-14 16:33:51 -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
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
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 Á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