bors
ce24ebb858
auto merge of #5314 : jld/rust/adt-simplification, r=pcwalton
...
Struct and enum representations have some complicatedness that's no longer needed. Now that everything's in one place and has access to anything we'd want to know about the type, flatten some of that out. Slight changes to representations in some cases.
2013-03-11 11:54:49 -07:00
Patrick Walton
08c840205e
librustc: Lint the old drop
destructor notation off
2013-03-11 09:36:00 -07:00
Patrick Walton
7353568cd8
librustc: Remove old-style operator overloading
2013-03-11 09:36:00 -07:00
Patrick Walton
dc4869945c
librustc: Remove newtype enums from librustc
2013-03-11 09:35:59 -07:00
Patrick Walton
d18f785457
librustc: Replace all uses of fn()
with &fn()
. rs=defun
2013-03-11 09:35:58 -07:00
Seo Sanghyeon
9e85589ad3
Implement vector destructuring from tail
2013-03-11 19:01:51 +09:00
Jed Davis
9eaa608b04
Get rid of the Unit
enum representation.
...
The only thing we really lose is that C-like enums with one variant and a
non-zero discriminant now take up space, but I do not think this is a
common usage. As previously noted, that was mostly there for
transitional compatibility with the pre-adt.rs codebase.
2013-03-11 00:01:04 -07:00
Jed Davis
e6b5e00ea2
Simplify struct representation.
...
Out goes the extra layer of struct wrapping; the destructedness flag is
added to the end of the struct. This means that, if the struct
previously had alignment padding at the end, the flag will live there
instead of increasing the struct size.
2013-03-10 23:57:38 -07:00
Niko Matsakis
62aa8d7de9
Simplify the interface to check_fn by pulling some of the madness out to its callers
2013-03-10 15:05:22 -04:00
Jed Davis
1df0a0ba0f
Const dereference works now, so allow it.
2013-03-09 17:40:59 -08:00
Jed Davis
122e4a28b8
Don't copy const data to do an autoderef+autoref.
2013-03-09 17:40:59 -08:00
Jed Davis
e42afd3129
Let const_deref "dereference" newtypes.
2013-03-09 17:40:59 -08:00
Jed Davis
5ca1d353de
Implement most of adjustment handling for consts.
...
Changes the ad-hoc closure adjustment into using adjustment info instead
of being separately driven from types, and likewise for autoderef.
Also takes care of autoref (the cases we should be seeing in consts,
at least, since we can't be doing method calls which would need the
ref-to-vec mode), which didn't quite work right previously.
However, "dereference" of a newtype isn't handled yet....
2013-03-09 17:40:59 -08:00
Jed Davis
5571ca9b21
Break out const_addr_of.
2013-03-09 17:40:59 -08:00
Niko Matsakis
7cbd4b20ee
Remove @ast::Region and replace with @ast::Lifetime.
...
Modify pretty-printer to emit lifetimes and fix a few minor
parser bugs that this uncovered.
2013-03-09 19:43:59 -05:00
Ben Striegel
fdf69dd7b0
Finish de-implicit-selfing everything but the test suite
2013-03-08 19:34:39 -05:00
Alex Crichton
2c87920f52
test: Removing dvec uses
2013-03-08 09:54:41 -05:00
Alex Crichton
2a72099063
rustc: Remove uses of DVec
2013-03-08 09:54:20 -05:00
Patrick Walton
48b14f5562
librustc: Add #[link_args] to metadata
2013-03-07 22:37:58 -08:00
Patrick Walton
d661711cc2
test: Fix tests.
2013-03-07 22:37:58 -08:00
Patrick Walton
9a17ef9b52
librustc: Stop parsing assert
.
2013-03-07 22:37:57 -08:00
Patrick Walton
d7e74b5e91
librustc: Convert all uses of assert
over to fail_unless!
2013-03-07 22:37:57 -08:00
Patrick Walton
0ea031bcb8
librustc: Remove record patterns from the compiler
2013-03-07 22:37:03 -08:00
Patrick Walton
954ae9c975
libsyntax: Remove struct literal expressions from the compiler
2013-03-07 22:32:55 -08:00
Patrick Walton
4e3dbfe052
librustc: Remove structural record types from the compiler
2013-03-07 22:32:54 -08:00
Patrick Walton
239e64242c
libsyntax: Stop parsing structural record types
2013-03-07 22:32:52 -08:00
Patrick Walton
6b5d1afeec
librustc: Remove "extern mod { ... }" from librustc, librustdoc, and tests. rs=deexterning
2013-03-07 22:32:52 -08:00
Josh Matthews
27668fbfab
Allow casting integers to unsafe pointers in constant expressions.
2013-03-07 15:36:55 -05:00
Josh Matthews
7bb03345cf
Inline constants across crates.
2013-03-07 15:34:52 -05:00
Josh Matthews
50277ec555
Permit casting region pointers to unsafe ones.
2013-03-07 14:48:28 -05:00
Brian Anderson
81e370285f
Merge remote-tracking branch 'brson/cross7'
...
Conflicts:
configure
mk/rt.mk
2013-03-06 23:54:35 -08:00
Jed Davis
a69ec175f8
GC now-unused imports
2013-03-06 20:41:58 -08:00
Jed Davis
1f9bc64bae
adt.rs renaming: "field" rather than "element"; set_discr -> start_init.
...
This way "field" refers to the abstraction and "element" (as in get_elt,
"get element pointer", etc.) refers to the low-level LLVM operations.
2013-03-06 20:41:58 -08:00
Jed Davis
e13111fc5a
Even more comments for ADT-related interfaces
2013-03-06 20:41:58 -08:00
Jed Davis
6840b48074
trans_cast_to_int is hard to explain; make it trans_get_discr instead.
2013-03-06 20:41:58 -08:00
Jed Davis
8dca7be1df
A little more cosmetic cleanup
2013-03-06 20:41:58 -08:00
Jed Davis
d6acb96c9c
Add lots of comments to adt.rs, and some minor cleanup.
2013-03-06 20:41:58 -08:00
Jed Davis
a9026c7f19
Memoize trans::adt::represent_type
2013-03-06 20:41:58 -08:00
Jed Davis
a8237a46f1
Bonus Fix: typarams are no longer inhabited
2013-03-06 20:41:58 -08:00
Jed Davis
8105da8067
GC the now-unused old layout helpers
2013-03-06 20:41:58 -08:00
Jed Davis
b6bcf1a81f
Finish removing struct layout dependencies from glue.
2013-03-06 20:41:58 -08:00
Jed Davis
71b6e945c1
glue::trans_struct_drop -> adt
2013-03-06 20:41:58 -08:00
Jed Davis
5ca4fdfc98
Convert trans_tuple_struct to trans::adt.
...
Surely this cannot be the best way to get the type.
2013-03-06 20:41:57 -08:00
Jed Davis
29d0430c56
Convert iter_structural_ty to trans::adt
2013-03-06 20:41:57 -08:00
Jed Davis
c0f6909f7e
base::iter_structural_ty: structs and records
2013-03-06 20:41:57 -08:00
Jed Davis
68b3f0d8a4
base::iter_structural_ty: tuples
2013-03-06 20:41:57 -08:00
Jed Davis
ca450e345f
Move trans_enum_variant to trans::adt.
...
As a result, trans_enum_variant no longer cares what kind of enum it's
dealing with, so the "degen" parameter goes away in a bunch of places.
2013-03-06 20:41:57 -08:00
Jed Davis
6bb6baba2c
Renovate cast-to-int
2013-03-06 20:41:57 -08:00
Jed Davis
075affa50d
Convert const field extraction to trans::adt
2013-03-06 20:41:57 -08:00
Jed Davis
59daf76a8d
Make functional-update struct consts not an ICE
2013-03-06 20:41:57 -08:00
Jed Davis
bb689c09f5
Convert const ADT construction to trans::adt.
...
Also converts const cast-from-enum, because it used the same routine to
get the discriminant as what's renovated to construct the enums.
Also fixes ICE on struct-like variants as consts, and provides a slightly
less bad ICE for functional-update-like struct expressions in consts.
2013-03-06 20:41:57 -08:00
Jed Davis
2a028c5ab8
Convert newtype "dereference" to trans::adt.
...
Note that in the ByValue case (which can't happen? yet?) we're still
effectively bitcasting, I think. So this change adds a way to assert
that that's safe.
Note also, for future reference, that LLVM's instcombine pass will turn
a bitcast into a GEP(0, 0, ...) if possible.
2013-03-06 20:41:57 -08:00
Jed Davis
c7325c4172
Convert the rest of the adt GEPi's in _match
2013-03-06 20:41:57 -08:00
Jed Davis
3a4714d92e
Renovate field projection expressions
2013-03-06 20:41:57 -08:00
Jed Davis
40313fb6b0
Renovate nullary variant construction
2013-03-06 20:41:57 -08:00
Jed Davis
fdd28451f6
Convert expr_struct to use adt, and try to share code with tuples.
2013-03-06 20:41:57 -08:00
Jed Davis
5cbc2571c1
Renovate expr_tup translation
2013-03-06 20:41:57 -08:00
Jed Davis
b673b26f03
Factor out discriminant loading more, for use in casts.
2013-03-06 20:41:57 -08:00
Jed Davis
a5030e7615
Wrap const structs in as many LLVM structs as the non-const case.
...
This, like the previous change for unit-like enums, is only necessary
until everything is fully converted to use trans::adt.
2013-03-06 20:40:42 -08:00
Jed Davis
e09a843973
Handle unit-like types specially.
...
This change remains separate from the addition of adt.rs, even though
it's necessary for compatibility with pre-trans::adt representation,
to serve as an example of a change to the representation logic.
2013-03-06 20:37:59 -08:00
Jed Davis
7b2b4faba8
Add a test for enum discriminant range overflow.
...
It causes an LLVM assertion for every host/target word-size combination
on incoming at the time of this writing.
2013-03-06 20:37:28 -08:00
Jed Davis
04ecab909a
Re-add discriminant range annotations
2013-03-06 20:37:28 -08:00
Jed Davis
8a1706610b
Avoid unnecessary casts in struct_GEP
2013-03-06 20:37:28 -08:00
Jed Davis
5e2302a56f
Convert type_of to use trans::adt.
2013-03-06 20:37:28 -08:00
Jed Davis
c4682dcabe
Convert match on enums to use trans::adt.
2013-03-06 20:37:28 -08:00
Jed Davis
626ad484fe
Unified algebraic datatype representation implementation, initial version.
...
Later changes on this branch adapt the rest of rustc::middle::trans
to use this module instead of scattered hard-coded knowledge of
representations; a few of them also have improvements or cleanup for
adt.rs (and many added comments) that weren't drastic enough to justify
changing history to move them into this commit.
2013-03-06 20:37:23 -08:00
bors
95c07479dd
auto merge of #5182 : youknowone/rust/enum-cast, r=brson
...
Fix #4926
2013-03-06 16:51:47 -08:00
bors
8c3728f839
auto merge of #5125 : nikomatsakis/rust/issue-4846-lifetime-defaults, r=nikomatsakis
...
Work towards #4846 .
- Institute new region defaults where all omitted regions get a fresh lifetime.
- Require explicit region names except in functions.
- Fix a bug in region parameterization inference. I've been putting this off because it will not be important when we remove RP inference in favor of explicit declarations, but then it was blocking this patch.
r? @pcwalton
2013-03-06 13:45:51 -08:00
Niko Matsakis
3280e5a33d
Improve error messages when illegal lifetimes are used
2013-03-06 15:12:58 -05:00
Niko Matsakis
d26f6eddfd
Convert region parameterization to change defaults and handle
...
methods correctly
2013-03-06 15:12:58 -05:00
Niko Matsakis
824b9e7dbf
convert FnCtxt methods from @mut self to &self
2013-03-06 15:12:57 -05:00
Niko Matsakis
3168fe06ff
Add manual &self/ and &static/ and /&self declarations that
...
are currently inferred. New rules are coming that will require
them to be explicit. All add some explicit self declarations.
2013-03-06 15:12:57 -05:00
bors
02623871ed
auto merge of #5246 : brson/rust/demode, r=brson
...
r?
2013-03-06 11:51:57 -08:00
Brian Anderson
f1a8b58811
rustc: De-mode some bits of trans
2013-03-06 11:18:34 -08:00
bors
876b6ba792
auto merge of #5253 : nikomatsakis/rust/issue-5243, r=graydon
...
them to be non-monomorphic. Merely having lifetime parameters
is not enough to qualify for that status. Fixes #5243 .
r?
2013-03-06 10:54:58 -08:00
Niko Matsakis
704cd648ac
Fix a bug with region-parameterized enums etc where trans considered
...
them to be non-monomorphic. Merely having lifetime parameters
is not enough to qualify for that status. Fixes #5243 .
2013-03-06 13:01:16 -05:00
Niko Matsakis
6d764cc361
Make object types not implement associated trait. Fixes #5087 .
2013-03-06 11:02:19 -05:00
Niko Matsakis
6267339d68
Fix bug in coherence that causes all cross-crate impls to be regarded as
...
inherent impls, not just those of the `impl Type` variety.
2013-03-06 11:02:19 -05:00
Erick Tryzelaar
743cfce703
core: convert vec::{last,last_opt} to return references
2013-03-05 19:39:18 -08:00
Erick Tryzelaar
a18bf8c67d
rustc: minor code cleanup
2013-03-05 19:37:50 -08:00
Erick Tryzelaar
8f263dd023
rustc: remove some copies
2013-03-05 19:37:05 -08:00
Erick Tryzelaar
d60747a248
core: convert vec::{init,initn} to return references
2013-03-05 19:37:04 -08:00
Erick Tryzelaar
5ae06ae9de
core: convert vec::{tail,tailn} to return references
2013-03-05 19:37:04 -08:00
Patrick Walton
c4075492ad
librustc: Fix silly bug in AST conversion for const vstores. rs=bugfix
...
Means that we'll need another snapshot to rid the language of `[const T]`.
2013-03-05 10:18:36 -08:00
Niko Matsakis
cbfd88a486
Update region inference for traits so that a method with
...
explicit self doesn't incorrectly cause the entire trait to
be tagged as being region-parameterized.
Fixes #5224 .
2013-03-05 08:46:23 -05:00
bors
65986ba0c0
auto merge of #5215 : jld/rust/fn-const-env, r=graydon
...
Fixes #5210 ; unblocks #5183 .
2013-03-05 03:12:43 -08:00
bors
eddefbc893
auto merge of #5212 : thestinger/rust/iter, r=graydon
...
A small step towards fixing #2827
2013-03-05 02:06:50 -08:00
Young-il Choi
a35dc95969
mk: --android-cross-path to rustc
2013-03-05 13:12:23 +09:00
Alex Crichton
cb4ab76e4a
Adding missing imports for tests, and gate off others
2013-03-04 12:27:01 -05:00
Alex Crichton
bc3bee410a
Add a special FIXME for subduing warnings in rpath.rs
2013-03-04 12:27:01 -05:00
Alex Crichton
dfb5c10dea
Remove unused imports throughout src/
2013-03-04 12:27:01 -05:00
Alex Crichton
55461d888f
Change the default level of unused_imports to warn
2013-03-04 12:27:01 -05:00
Jyun-Yan You
c2a61d7df3
rustc: implement MIPS O32 ABI
2013-03-03 20:02:03 -08:00
Jyun-Yan You
5150b9811b
rustc: MIPS32 support
2013-03-03 19:27:27 -08:00
Jed Davis
514fd3efec
Assert that constants are translated with the correct size.
2013-03-03 16:40:44 -08:00
Jed Davis
5f0a123f0d
Construct const fns based on the type, not the definition.
...
Otherwise we can add a null environment when we shouldn't.
Fixes #5210 .
2013-03-03 16:40:41 -08:00
Daniel Micay
af645e8487
replace option::iter with a BaseIter impl
2013-03-03 11:01:17 -05:00
Patrick Walton
ccec510f39
librustc: Stop parsing fn@
, fn~
, and fn&
2013-03-02 18:47:48 -08:00
Patrick Walton
97fd421319
librustc: Remove fn@
, fn~
, and fn&
from librustc. rs=defun
2013-03-02 16:49:31 -08:00
Patrick Walton
a3f728238b
librustc: Forbid chained imports and fix the logic for one-level renaming imports
2013-03-02 16:49:30 -08:00