Marijn Haverbeke
15f71b3600
Refactor ast::item representation
...
Most of the fields in an AST item were present in all variants. Things
could be simplified considerably by putting them in the rec rather
than in the variant tags.
2011-06-16 13:32:35 +02:00
Patrick Walton
1fa9133b76
rustc: Implement interior vector concatenation
2011-06-15 18:03:25 -07:00
Eric Holk
260aa408f3
Merge branch 'master' of github.com:graydon/rust into fastcall
2011-06-15 17:45:24 -07:00
Brian Anderson
94d971c0e8
rustc: Remove unused variable from check_assignment
2011-06-15 16:48:59 -07:00
Tim Chevalier
a5bca7df88
Refactor data structures representing constraints (again...)
...
I added a "resolved" version of the ast::constr type -- ty::constr_def
-- that has a def_id field instead of an ann_field. This is more
consistent with other types and eliminates some checking.
Incidentally, I removed the def_map argument to the top-level function
in middle::alias, since the ty::ctxt already has a def_map field.
2011-06-15 15:38:12 -07:00
Patrick Walton
52d4f48144
rustc: Move ivec stuff to an ivec module in trans
2011-06-15 14:43:00 -07:00
Marijn Haverbeke
9b5ebe726c
Implement checking of alias safety in tail calls.
2011-06-15 21:39:27 +02:00
Marijn Haverbeke
b2b8002fd3
Fix unsafe uses of aliases in tail calls
2011-06-15 21:39:27 +02:00
Lindsey Kuper
fa5a7e7453
Simple anonymous objects get through translation.
2011-06-15 12:18:52 -07:00
Eric Holk
01ea27b205
Step 1 of moving task startup to always be cdecl.
2011-06-15 12:10:15 -07:00
Graydon Hoare
ce72993488
Reformat source tree (minus a couple tests that are still grumpy).
2011-06-15 11:19:50 -07:00
Brian Anderson
1c9277e0d3
rustc: Make room in remaining AST item nodes for attributes
...
Issue #487
2011-06-15 09:48:55 -07:00
Brian Anderson
31116dcdd5
rustc: Make room in item_mod for metadata
...
Issue #487
2011-06-15 09:46:37 -07:00
Marijn Haverbeke
c7ab88cc35
Implement checking against assignments to immutable obj fields
2011-06-15 14:59:51 +02:00
Marijn Haverbeke
0ddade3d7a
Extend alias analysis to check assignments
...
This is a somewhat odd place to put these checks, but the data tracked
by that pass, and the available functions, make it trivial to do such
a check there.
2011-06-15 14:10:07 +02:00
Marijn Haverbeke
5fb518abc9
Fix assignments to immutable fields throughout the code
2011-06-15 14:10:07 +02:00
Marijn Haverbeke
180db08470
Refactor expr_root in alias.rs
...
It was too clunky and specific before. Now returns a vec of dereference specs
instead of a bunch of special-case information. Further accessors extract
the information they need from this vec.
2011-06-15 11:03:23 +02:00
Patrick Walton
ac743cfcb0
Merge pull request #490 from msullivan/fix_vec_append
...
Move the implementation of vec_append from llvm assembly to a regular upcall
2011-06-14 18:32:04 -07:00
Patrick Walton
c6be352f73
rustc: Implement on-heap resizing for interior vectors
2011-06-14 18:23:13 -07:00
Michael Sullivan
ccd1bcf7a7
Make tydesc glue functions use cdecl.
2011-06-14 16:09:21 -07:00
Michael Sullivan
5378f48a03
Remove vec_append_glue from the compiler.
2011-06-14 16:09:17 -07:00
Patrick Walton
14258b87a7
rustc: Free heapified interior vectors
2011-06-14 16:00:30 -07:00
Patrick Walton
bd18860be7
rustc: Fix LLVM type error that occurred when translating large unique vector literals
2011-06-14 16:00:02 -07:00
Michael Sullivan
95def699f1
Implement upcall_vec_append and use it for vector append.
2011-06-14 15:35:09 -07:00
Tim Chevalier
05b7eb6dff
Make the typechecker check that dynamically sized arguments are passed by alias
...
Before, this would cause an assertion failure in trans.
2011-06-14 15:11:48 -07:00
Tim Chevalier
1513539b67
Improve error message for a failed assert or check
2011-06-14 14:17:28 -07:00
Patrick Walton
bf5840d530
rustc: Do a dynamic alloca for generic interior vectors; fix data pointer calculation when spilling vectors
2011-06-14 14:03:38 -07:00
Marijn Haverbeke
f24408d89a
Don't error when trans_lval is called on a non-lval
...
This allows directly calling a function expression, or the
result of an alt/if/block expression.
2011-06-14 21:38:56 +02:00
Marijn Haverbeke
471436a299
Implement function expressions/anonymous functions
...
Looks like 'fn(..arg..) -> ret {body;}. They don't support type
parameters or upvars yet.
2011-06-14 18:22:46 +02:00
Patrick Walton
c3bf7d07e9
rustc: Implement simple interior vector append translation
2011-06-13 18:57:25 -07:00
Tim Chevalier
a1bb4a4ded
Refactor some typestate-related data structures
2011-06-13 18:21:22 -07:00
Eric Holk
d1857d30fc
This is the mega-ucontext commit. It replaces the task switching mechanism with a new one inspired by ucontext. It works under Linux, OS X and Windows, and is Valgrind clean on Linux and OS X (provided the runtime is built with gcc).
...
This commit also moves yield and join to the standard library, as requested in #42 . Join is currently a no-op though.
2011-06-13 18:14:13 -07:00
Brian Anderson
1595c9d767
rustc: Assignment expressions have nil type. Closes #483
2011-06-13 17:57:43 -07:00
Tim Chevalier
d65ad8c31c
Change decl to local in expr_for and expr_for_each
...
Since the decl in a for or for-each loop must always be a local
decl, I changed the AST to express this. Fewer potential match
failures and "the impossible happened" error messages = yay!
2011-06-13 17:33:04 -07:00
Patrick Walton
913383d775
rustc: Preserve more type information for interior vectors at the LLVM level, allowing SROA to take place. log ~[ 2 ].(0)
now optimizes to just log 2
.
2011-06-12 00:44:43 -07:00
Patrick Walton
770bf24d72
rustc: Use in-bounds GEPs for fetching length and data of interior vectors
2011-06-11 23:32:21 -07:00
Patrick Walton
4375329031
rustc: Translate interior vector index expressions
2011-06-11 23:15:16 -07:00
Patrick Walton
8b318be4ce
rustc: Typecheck vector index expressions for interior vectors
2011-06-11 19:52:49 -07:00
Patrick Walton
00eb3f5798
rustc: Sketch out translation of interior vector literals and take/drop glue
2011-06-10 19:36:33 -07:00
Tim Chevalier
698c6406ba
Reject programs with unsatisfied predicate constraints
...
Generate appropriate constraints for calls to functions with
preconditions, and reject calls where those constraints don't
hold true in the prestate.
...by which I mean that it works for one test case :-)
2011-06-10 19:17:15 -07:00
Lindsey Kuper
f6d7d75699
More work on typechecking anon objs.
2011-06-10 17:18:08 -07:00
Graydon Hoare
8876e2c29e
Oops, fix logging string specs. Nobody likes writing RUST_LOG=_ZN5rustc5front7creaderE, do they?
2011-06-10 16:32:21 -07:00
Tim Chevalier
774c6d0198
Friendlier error message for break outside a loop
...
The typechecker should really check for this, but at least now
there's an error message rather than an inexhaustive match failure
in trans.
2011-06-10 14:34:01 -07:00
Tim Chevalier
e5eacf8ea9
Use RHS type when translating assignments
...
In code like "auto foo = fail", a type gets inferred for foo
depending on how it's used. However, fail still has type _|_ and
still should be treated that way: particularly, its value shouldn't
be copied. Fixed trans to reflect that.
2011-06-10 14:05:06 -07:00
Patrick Walton
f1431adb40
rustc: Add a generic struct_elt() function to trans
2011-06-10 13:49:22 -07:00
Patrick Walton
451fc176d3
rustc: Derive flags for unsafe pointers. Puts out burning tinderbox.
2011-06-10 13:13:46 -07:00
Graydon Hoare
52c4c9014f
Encode meta tags in the crate and start sketching enhanced logic for resolving crate "use" directives.
...
Now with extra "works on OSX" kludging.
2011-06-10 12:57:29 -07:00
Patrick Walton
4634f236a9
rustc: Add some missing cases to ty.rs for interior vectors, and modify the pattern match so this is less likely to happen again. Add the LLVM type mapping as well.
2011-06-10 12:07:38 -07:00
Patrick Walton
cc3d484d9d
rustc: Add missing cases for istr and ivec to equal_type_structures()
2011-06-10 11:00:56 -07:00
Patrick Walton
7b7c746c1e
Merge pull request #447 from paulstansifer/quick_error_message_fix
...
Error message, instead of segfault, when recursive types are used.
2011-06-10 10:53:42 -07:00