Lindsey Kuper
ba537fa5f5
Knocking out a quick fixme: pretty-printing exprs in error messages.
2011-04-05 11:55:12 -07:00
Graydon Hoare
70e5457d7c
Make box prefix operator and box type carry mutability flag.
2011-04-04 15:44:15 -07:00
Patrick Walton
f10a5bbad0
rustc: Make type_of() return the type of the wrapper for native functions. lib-map now compiles, but fails to work properly.
2011-04-03 15:23:58 -07:00
Brian Anderson
bd9f45446a
Begin comparing vectors from the correct address
...
Start at the first element instead of the address of the vector.
2011-04-03 03:09:20 -04:00
Graydon Hoare
8e9c5b96fb
Change rust_vec to have a 16-byte header, to 16-byte-align vec-body data. Major perf win.
2011-04-02 19:05:12 -07:00
Brian Anderson
99901bdbc4
Add FIXMEs around type handling in trans_if, trans_alt
2011-04-02 20:35:51 -04:00
Brian Anderson
21fb49ad95
Join the results of alt arms so alt can be used as an expression.
...
Un-XFAIL expr-alt.rs.
2011-04-02 20:35:50 -04:00
Brian Anderson
203e33b611
Make join_results branch into the join block even when only one edge is live.
...
I don't don't totally understand the implications of this but it makes the
behavior consistent for all live edges, which is going to make joining the
arms of an alt expression work correctly.
2011-04-02 20:35:50 -04:00
Brian Anderson
6e6acaa39a
Fail on non-exhaustive alt matches
2011-04-02 20:35:50 -04:00
Brian Anderson
9d0a505d61
Terminate fail blocks by making their ends unreachable.
...
This will make implementing default alt arms simpler.
2011-04-02 20:35:50 -04:00
Graydon Hoare
4f90c88b4d
Write typarams for variants. Typecheck gets as far as ty.rs now.
2011-04-01 18:53:08 -07:00
Graydon Hoare
5b7961b641
Encode ty_native ebml node for native types so typechecker has something to work with.
2011-04-01 18:34:13 -07:00
Graydon Hoare
c077da553d
Remove typestate_check reference to nonexistent ast.init node; rustc compiling itself notices what rustboot did not :)
2011-04-01 18:33:47 -07:00
Graydon Hoare
23f18a096f
Re-enable typestate_check in build, was lost during merge. Sorry.
2011-04-01 17:23:56 -07:00
Graydon Hoare
0397c05f42
Support for passing native types through metadata/creader.
2011-04-01 17:04:51 -07:00
Graydon Hoare
3971110d7f
Guh. Actually commit the staged undo-of-indentation. Forgotten git staging wins again.
2011-04-01 16:04:22 -07:00
Graydon Hoare
7d88e63ec8
Switch private linkage to local, re-indent trans.rs.
2011-04-01 15:01:46 -07:00
Patrick Walton
3a8b0be1cb
rustc: Write symbols for native items into the crate metadata
2011-04-01 14:18:46 -07:00
Patrick Walton
a0eb9c814b
rustc: Don't try to write symbols into the metadata for nullary tags. Puts out burning tinderbox.
2011-04-01 14:14:10 -07:00
Patrick Walton
6dc452335a
rustc: Get tag variants from the crate metadata
2011-04-01 13:02:44 -07:00
Patrick Walton
ec9d7abf8c
rustc: Have tag_variants() return a new variant_info structure instead of an AST node
2011-04-01 11:37:31 -07:00
Tim Chevalier
3130348ee1
Started adding support for typestate checking.
...
I added a new field to the ast "ann" type for typestate information.
Currently, the field contains a record of a precondition bit vector and
postcondition vector, but I tried to structure things so as to make
it easy to change the representation of the typestate annotation type.
I also had to add annotations to some syntactic forms that didn't have
them before (fail, ret, be...), with all the boilerplate changes
that that would imply.
The main call to the typestate_check entry point is commented out and
the actual pre-postcondition algorithm only has a few cases
implemented, though the overall AST traversal is there. The rest of
the typestate algorithm isn't implemented yet.
2011-04-01 11:27:32 -07:00
Patrick Walton
69a34b992b
rustc: Remove useless call to tag_variant_with_id()
2011-04-01 10:59:59 -07:00
Brian Anderson
1bc06bc59b
Cleanup typos and newlines
2011-04-01 00:05:13 -04:00
Brian Anderson
f16e7242d2
Initialize the alloca used to retrieve boxed block results to null.
...
This allows blocks to be used in conditional constructs where the block may
not ever execute: the drop glue will notice that it was never used and ignore
it.
Also, beef up the comments.
2011-03-31 23:15:11 -04:00
Brian Anderson
524e803582
Only use allocas to hold expression results for boxed types
2011-03-31 23:15:11 -04:00
Brian Anderson
f05d3c516b
Add more comments to trans_block
2011-03-31 23:15:11 -04:00
Brian Anderson
125bebbf60
Modify trans.rs to allow blocks to result in boxed values
2011-03-31 23:15:11 -04:00
Patrick Walton
c66edca83d
rustc: Add a type annotation to tag items
2011-03-31 19:12:40 -07:00
Patrick Walton
1eeedbd008
rustc: Make tag_ty_params() and substitute_ty_params() take def ids instead of ty_params, and to check in external crates
2011-03-31 18:45:24 -07:00
Patrick Walton
fffc5d3b3d
rustc: Write out a path index as well
2011-03-31 18:28:59 -07:00
Lindsey Kuper
ef0c903f6a
More stuff to go with the new expr_call_self AST node
2011-03-31 14:16:02 -07:00
Lindsey Kuper
e939d6f17c
More machinery for adding an expr_call_self AST node.
2011-03-31 14:04:53 -07:00
Patrick Walton
6c383bbd7b
rustc: Index only the local part of definition IDs
2011-03-31 12:24:59 -07:00
Patrick Walton
3945ace520
rustc: Write out an index of definition info in crate metadata
2011-03-31 11:56:02 -07:00
Patrick Walton
7f3f66df7b
rustc: Use the scaled index, not the raw index, if a vector has generic size. lib-vec.rs works now.
2011-03-31 10:10:21 -07:00
Brian Anderson
607fa14960
Rename incr_all_refcnts to take_ty, to match drop_ty
2011-03-31 14:52:30 +00:00
Brian Anderson
b0b72ab472
Restore scope block contexts to the translation of expr_block.
...
I removed this previously but that was wrong because it caused
block expressions to not create a new scope.
2011-03-31 14:52:29 +00:00
Marijn Haverbeke
39f0656b4f
Improve line comment positioning
...
This involved making ast.variant spanned.
2011-03-31 14:41:40 +00:00
Marijn Haverbeke
f8393cc572
Add effect field to ast.ty_fn.
...
Still not used, except by the pretty-printer.
2011-03-31 14:41:40 +00:00
Patrick Walton
ae5ba62b24
rustc: Use the type cache to construct external item references
2011-03-30 18:15:29 -07:00
Patrick Walton
cc59cea8b0
rustc: Thread an item-to-type mapping throughout the typechecking and translation phases
2011-03-30 17:28:06 -07:00
Graydon Hoare
3e7b991d49
Ensure task stacks start out with a 16-byte aligned entry frame. Should make OSX behave a bit better.
2011-03-30 13:04:18 -07:00
Patrick Walton
301cfe1354
rustc: Add all items to the item table during translation. lib-vec now compiles, but asserts and then segfaults.
2011-03-29 18:16:53 -07:00
Patrick Walton
626bdaaa1f
rustc: Parse parameter IDs in external crate metadata. Un-XFAIL lib-bitv.rs.
2011-03-29 17:25:55 -07:00
Patrick Walton
c67eb1a575
rustc: Partially resolve external module imports
2011-03-29 17:01:27 -07:00
Lindsey Kuper
55fbed3d8d
Beginnings of support for magical self prefix; nothing profound happening yet.
2011-03-29 15:59:15 -07:00
Patrick Walton
94c061729b
rustc: Resolve external modules and native modules to definition IDs as well
2011-03-29 14:46:42 -07:00
Graydon Hoare
77f85460e6
Rename trans_native to trans_native_call, for clarity.
2011-03-29 13:23:51 -07:00
Graydon Hoare
734abe593d
Teach trans to emit undefined references to 'use'd symbols. Can compile and run a simple 'use std;' example now.
2011-03-29 13:23:51 -07:00
Brian Anderson
8f2a97a562
Add partial support for if expressions resulting in generic types
2011-03-28 21:14:08 -07:00
Brian Anderson
aced4ce145
Handle structural types as the result of if expressions
2011-03-28 21:14:04 -07:00
Brian Anderson
a5a319fa04
Teach rustc to use the result of if expressions
2011-03-28 21:14:03 -07:00
Brian Anderson
2b27d12ce1
Add expr_spawn, spawn parsing, folding, typechecking, ty_task
2011-03-28 21:13:53 -07:00
Graydon Hoare
540d29f641
Move all allocas to dedicated basic block at top of function, to keep frames finite. Un-comment next size in nbody.rs.
2011-03-28 18:07:29 -07:00
Patrick Walton
ace2c92a96
rustc: Populate the item types table with types of items from external crates; remove the redundant typeck.ty_and_params type on the way
2011-03-28 14:42:01 -07:00
Patrick Walton
621ab34410
rustc: Remove commented out "encode_tag_variant_info" call that sneaked in
2011-03-28 13:31:13 -07:00
Patrick Walton
cc221c472a
rustc: Don't include a trailing null when writing out metadata; it corrupts the EBML
2011-03-28 13:15:03 -07:00
Graydon Hoare
8b5968165f
Fix get_tydesc to alloca enough room for root; remove hack that was attempting to paper over it. Fix from espindola.
2011-03-28 11:11:03 -07:00
Patrick Walton
81695a19f8
rustc: Add support for calling LLVM intrinsics as native functions
2011-03-28 08:24:58 -07:00
Marijn Haverbeke
6ecdc04788
Add support for break and cont to rustc
...
Testing proper cleanup is hampered by
https://github.com/graydon/rust/issues/293
2011-03-27 14:11:23 +02:00
Graydon Hoare
f59e49c9a6
Twiddle visibility, start exposing only type-mangled names (64 bit truncated sha1 prefixes).
2011-03-26 19:14:07 -07:00
Graydon Hoare
dbc7289a4d
Start refactoring name-mangling in trans.
2011-03-26 17:36:47 -07:00
Graydon Hoare
ac6e1131e9
Teach creader and metadata writer how to do ty.ty_type.
2011-03-26 17:35:51 -07:00
Graydon Hoare
ee686dacb8
Add get_extern_const, factor get_extern into get_extern_fn and get_simple_extern_fn.
2011-03-25 17:59:56 -07:00
Graydon Hoare
661f1c541e
Trans nomenclature tidy-up: upcall vs. native vs. extern.
2011-03-25 15:48:00 -07:00
Graydon Hoare
b2427509e2
Another go at changing compile-command, this time using RBUILD env var.
2011-03-25 15:07:27 -07:00
Graydon Hoare
3712ee68ad
Sketch of wiring typeck up to creader.
2011-03-25 14:34:32 -07:00
Graydon Hoare
91c2b82b09
Revert "Bulk-edit compile commands in emacs chatter to point to assumed build/ dir off src root."
...
This reverts commit 846f2e2ba9
.
2011-03-25 14:05:38 -07:00
Graydon Hoare
846f2e2ba9
Bulk-edit compile commands in emacs chatter to point to assumed build/ dir off src root.
2011-03-25 13:48:37 -07:00
Patrick Walton
e2d6475308
rustc: Store cached crate metadata in the session
2011-03-25 11:11:21 -07:00
Brian Anderson
ebc4df3c7a
Implement local declarations with receive. Un-XFAIL decl-with-recv.rs.
2011-03-25 11:01:52 -07:00
Brian Anderson
71f058499a
Refactor ast.local to make room for initialization via recv
2011-03-25 11:01:52 -07:00
Patrick Walton
77a3373d53
rustc: Create a crate metadata cache
2011-03-25 10:44:24 -07:00
Graydon Hoare
4e49ca8abd
Start hooking resolve into creater.
2011-03-24 17:37:32 -07:00
Patrick Walton
2c21195b21
rustc: Emit a better error message when a type is used where a value was expected
2011-03-24 10:29:15 -07:00
Graydon Hoare
08bea1d9a2
Revert "Change the type of the second argument of upcalls to be a %task*.", breaks win32 build.
...
This reverts commit dcf122ede0
.
2011-03-23 16:31:30 -07:00
Lindsey Kuper
0b63512f4c
Support for 'float' in type signatures.
2011-03-23 16:01:29 -07:00
Patrick Walton
c669f20231
rustc: Write out crate metadata
2011-03-23 15:44:17 -07:00
Tim Chevalier
23e23bd762
Further support for floating-point. Literals with exponents work
...
and literals with the 'f32' or 'f64' suffixes work as well. In
addition, logging things with the f32 or f64 type works. (float is
still assumed to be a synonym for f64).
2011-03-22 17:31:27 -07:00
Rafael Ávila de Espíndola
dcf122ede0
Change the type of the second argument of upcalls to be a %task*.
2011-03-22 17:50:18 -04:00
Lindsey Kuper
0ce0c4c41a
Support for shorter error messages that are aware of objects' cnames.
2011-03-22 14:23:43 -07:00
Patrick Walton
bcf04e253f
Revert "Remove usages of case(_) { fail; } since the compiler does this automatically". When we have exhaustiveness checking, "case(_) { fail; }" will be useful to silence warnings.
...
This reverts commit 92a716d862
.
2011-03-22 14:02:52 -07:00
Brian Anderson
92a716d862
Remove usages of case(_) { fail; } since the compiler does this automatically
2011-03-22 08:11:34 -07:00
Brian Anderson
530fe1daea
Add a cleanup to trans_send. Express further confusion about cleanups in trans_recv
2011-03-22 08:04:53 -07:00
Brian Anderson
cddd8094da
Remove a todo from trans_chan that doesn't appear necessary
2011-03-22 08:04:49 -07:00
Brian Anderson
c02cdc32a8
Generalize send/recv to work for more types
2011-03-22 08:04:45 -07:00
Brian Anderson
39c01c97ba
Fix trans_recv
2011-03-22 08:04:41 -07:00
Brian Anderson
b2ee569c23
Implement trans_send and a broken trans_recv
2011-03-22 08:04:39 -07:00
Brian Anderson
261d1e4c61
Add codegen for ports and chans
2011-03-22 08:04:38 -07:00
Tim Chevalier
1e1ff638a3
Make floating-point operations work (neg, add, sub, mul, div, rem,
...
and comparison ops.)
2011-03-21 18:10:34 -07:00
Tim Chevalier
caa22c9341
Started adding support for floating-point type, floating-point literals, and logging of floats. Other operations on float probably don't work yet.
2011-03-21 18:10:34 -07:00
Rafael Ávila de Espíndola
933c01bd15
Every upcall needs a task pointer to find the C stack. It is just that when
...
handling cdecl call they should skip it when calling the final function.
There is some cleanup to be done on the generated IL, but this gets us
running Hello World for real.
2011-03-21 17:53:11 -04:00
Rafael Ávila de Espíndola
f3057244a6
Make the wrapper function of native functions private.
2011-03-21 16:02:00 -04:00
Rafael Ávila de Espíndola
12e7feb71c
The T_taskptr is already included in the n_args, don't add it twice.
2011-03-21 15:15:22 -04:00
Patrick Walton
84c0d8638e
rustc: Update type serialization and deserialization for the "mutable?" change
2011-03-21 11:44:08 -07:00
Marijn Haverbeke
86d05655b4
rustc: Merge in type serialization and deserialization
...
Signed-off-by: Patrick Walton <pcwalton@mimiga.net>
2011-03-21 11:35:04 -07:00
Rafael Ávila de Espíndola
e687dd5ce7
Make lltaskptr a regular argument element in args in calls to trans_upcall2.
2011-03-21 11:59:14 -04:00
Rafael Ávila de Espíndola
770a49520c
Move calls to PtrToInt out of trans_upcall2.
2011-03-21 11:11:22 -04:00
Graydon Hoare
4b946cea35
Modify native_item_fn to handle trailing linkage names that differ from the item name (used in win32 build of std.dll)
2011-03-20 20:18:19 -07:00
Patrick Walton
d31bfc8692
rustc: Internalize glue. Cuts libstd size by 8% or so.
2011-03-20 15:05:13 -07:00
Patrick Walton
277d42f589
rustc: Only declare each native function once. std.rc now links.
2011-03-19 17:33:46 -07:00
Patrick Walton
a1aad28690
rustc: Use the right block context to generate unary operands. std.rc compiles now. For realz.
2011-03-19 15:03:21 -07:00
Patrick Walton
8e597b295f
rustc: Allow arguments to be captured as upvars. std.rc compiles now, except for the lack of a main fn.
2011-03-19 14:26:12 -07:00
Patrick Walton
c710c9a1b8
rustc: Do argument casts before loading aggregates, not after
2011-03-19 13:58:48 -07:00
Patrick Walton
3f2bae4449
rustc: Implement int-to-native casts
2011-03-18 18:49:59 -07:00
Patrick Walton
e6b6d1b645
rustc: Make trans_path() generic-safe wrt nullary tags
2011-03-18 18:45:49 -07:00
Patrick Walton
95dc89f012
rustc: Make iter_structural_ty_full() generic-safe wrt tags
2011-03-18 18:34:06 -07:00
Patrick Walton
8c48fae726
rustc: Do pointer casts when casting native types
2011-03-18 18:12:58 -07:00
Patrick Walton
9c0c0af1b2
rustc: Fix inference for auto slots (forgot to stage changes before)
2011-03-18 17:45:47 -07:00
Patrick Walton
f3b58947c0
rustc: Don't always build a constant multiply instruction when translating literal vectors; the size of the referent isn't always constant
2011-03-18 16:41:56 -07:00
Patrick Walton
533dea772f
rustc: Move type_of() behind the check for dynamic size in trans_vec()
2011-03-18 16:34:22 -07:00
Patrick Walton
78bcfe28f2
rustc: Create global variable constants during the collection phase
2011-03-18 16:24:01 -07:00
Patrick Walton
8ff77b14a9
rustc: Make iter_sequence() work with generic vectors
2011-03-18 16:04:16 -07:00
Patrick Walton
47d650e25b
rustc: Box the tuples returned by hashmap.items() for now since we don't have alias iterators yet
2011-03-18 15:18:45 -07:00
Patrick Walton
ebee49314b
rustc: Get type params from the item when translating native items
2011-03-18 15:01:45 -07:00
Patrick Walton
e8938f5fb2
rustc: Unify over alt expressions
2011-03-18 12:49:48 -07:00
Patrick Walton
6f65ce5255
rustc: Add a span_unimpl() for debugging
2011-03-18 12:30:44 -07:00
Patrick Walton
2ef9c01ffc
rustc: Implement "mutable?". Add a test case and XFAIL it in rustboot for now.
2011-03-18 11:49:47 -07:00
Patrick Walton
5eca7129e3
rustc: Switch mutability from being a type constructor to a field annotation
2011-03-17 17:39:47 -07:00
Patrick Walton
67bac63aa3
rustc: Correctly report mutability when stringifying types
2011-03-17 11:54:00 -07:00
Patrick Walton
2ca66718ce
rustc: Consider native types to be scalar
2011-03-17 11:46:21 -07:00
Patrick Walton
55587a554c
rustc: Sort object methods when parsing textual types in the AST
2011-03-17 11:40:05 -07:00
Patrick Walton
bc51842d4f
rustc: Don't go over inner functions' locals during the writeback phase of typechecking
2011-03-17 11:23:17 -07:00
Rafael Ávila de Espíndola
9dc3f3f183
Fixed version of my previous patch to rename the upcall functions. This time also update the inline assembly.
2011-03-16 18:09:12 -04:00
Graydon Hoare
54587bdccb
Switch all vases of vec += elt to vec += vec. Prohibit former in rustboot. Tweak std lib vec fns in process.
2011-03-16 14:58:02 -07:00
Rafael Ávila de Espíndola
8dc5059058
Update comment to reflect the decision to avoid cycles.
2011-03-16 11:29:41 -04:00
Patrick Walton
71b6e602c5
rustc: Add an annotation for the crate definition to view_item_use
2011-03-15 17:33:05 -07:00
Patrick Walton
341d128ad3
Revert "Change the numbering of upcall functions. upcall_0 now calls a function" due to tinderbox failure on win32
...
This reverts commit bd9dd5ed1a
.
2011-03-15 17:20:00 -07:00
Rafael Ávila de Espíndola
bd9dd5ed1a
Change the numbering of upcall functions. upcall_0 now calls a function
...
with no arguments. This is still preparation for calling functions that
don't take a rust task argument.
2011-03-15 16:24:03 -04:00
Graydon Hoare
7f5bffc3ea
Merge remote branch 'brson/recursive-elseif'
2011-03-14 16:59:04 -07:00
Brian Anderson
8b5574ac09
Rename check_assignment_like to check_assignment since it turned out not to be useful for send/recv
2011-03-14 16:41:46 -07:00
Brian Anderson
b83a4af93c
Fix the typechecking for expr_send and expr_recv
2011-03-14 16:41:46 -07:00
Brian Anderson
4ce4d8857f
Add ty_port and ty_chan to expr_ty function
2011-03-14 16:41:46 -07:00
Brian Anderson
83f758cf0d
Typecheck expr_send and expr_recv
2011-03-14 16:41:46 -07:00
Brian Anderson
a309f74a94
Reorganize evaluation of expr_send/recv to put them closer to expr_assign, to which they are similar
2011-03-14 16:41:46 -07:00
Brian Anderson
644d8b95da
Factor out expression checking for forms that look like assignment
2011-03-14 16:41:46 -07:00
Brian Anderson
7464237256
Add folding and type checking for ports and chans
2011-03-14 16:41:46 -07:00
Brian Anderson
a3cca65f6d
Fold ty_chan and ty_port
2011-03-14 16:41:46 -07:00
Rafael Ávila de Espíndola
3436979b17
Split trans' collection in two passes. This allows us to handle tags
...
that are defined after use in a block.
This is really inefficient, but for now it lets us compile the included test.
2011-03-14 16:56:03 -04:00
Brian Anderson
bbb6836da0
Merge branch 'master' into recursive-elseif
...
Conflicts:
src/comp/middle/typeck.rs
2011-03-13 19:40:25 -04:00
Brian Anderson
2a662944a4
Remove extra blocks from the translation of expr_block
...
Doesn't seem to break anything and allows trans_if to be streamlined
2011-03-13 19:29:40 -04:00
Graydon Hoare
ec7e84ae0d
Preserve crate directives in the parsed crate.
2011-03-11 15:49:56 -08:00
Patrick Walton
9b3db0ed44
rustc: Add some stub metadata to each crate
2011-03-11 15:35:50 -08:00
Rafael Ávila de Espíndola
74d891517b
reindex the block index.
2011-03-11 17:35:33 -05:00
Patrick Walton
6392bd1681
rustc: Load structural loop variables in iterators. Un-XFAIL foreach-put-structured.rs.
2011-03-11 14:29:45 -08:00
Rafael Ávila de Espíndola
28d51e3fd2
Add support for indexing tags in blocks.
2011-03-11 17:12:25 -05:00
Patrick Walton
37007a4d01
rustc: Populate the upvar environment when calling iterator bodies. Un-XFAIL test/run-pass/iter-range.rs.
2011-03-11 12:02:51 -08:00
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
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
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
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
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
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