489 Commits

Author SHA1 Message Date
Ivan Radanov Ivanov
7496539a00 Change span_help calls to fileline_help where appropriate 2015-03-03 15:18:33 +02:00
Manish Goregaokar
c4b1500fec Rollup merge of #22966 - nikomatsakis:closure-region-hierarchy, r=pnkfelix
Remove the synthetic \"region bound\" from closures and instead update how
type-outlives works for closure types so that it ensures that all upvars
outlive the region in question. This gives the same guarantees but
without introducing artificial regions (and gives better error messages
to boot). This is refactoring towards #3696.

r? @pnkfelix
2015-03-03 01:48:58 +05:30
Björn Steinbrink
fe91974dd6 Properly propagate block changes while translating drop glue 2015-03-02 21:35:40 +05:30
Niko Matsakis
00fcf79448 Remove the synthetic "region bound" from closures and instead update how
type-outlives works for closure types so that it ensures that all upvars
outlive the region in question. This gives the same guarantees but
without introducing artificial regions (and gives better error messages
to boot).
2015-03-02 05:45:41 -05:00
Manish Goregaokar
b79a788f8f Rollup merge of #22935 - dotdash:method_attr, r=eddyb
... objects

For method calls through trait objects, we currently generate the llvm
function argument attributes using the non-opaque method signature that
still has the trait object fat pointer for the self pointer. This leads
to attributes that are plain wrong, e.g. noalias. As we don't know
anything about the concrete type of the underlying object, we must
replace the self argument with an opaque i8 pointer before applying the
attributes.
2015-03-02 03:54:33 +05:30
Manish Goregaokar
d9b352fdc1 Rollup merge of #22923 - dotdash:trans_arg, r=eddyb
The logic for the argument translation was duplicated here.
2015-03-02 03:54:14 +05:30
Manish Goregaokar
644b931437 Rollup merge of #22922 - dotdash:closure_env_attr, r=eddyb 2015-03-02 03:54:07 +05:30
Manish Goregaokar
fb19cd7fb7 Rollup merge of #22504 - GuillaumeGomez:audit-integer-libcore, r=Manishearth
Part of #22240.
2015-03-02 03:53:41 +05:30
Björn Steinbrink
8b6b3c159c Emit proper attributes for the self pointer in method call through trait objects
For method calls through trait objects, we currently generate the llvm
function argument attributes using the non-opaque method signature that
still has the trait object fat pointer for the self pointer. This leads
to attributes that are plain wrong, e.g. noalias. As we don't know
anything about the concrete type of the underlying object, we must
replace the self argument with an opaque i8 pointer before applying the
attributes.
2015-03-01 19:45:35 +01:00
Guillaume Gomez
df126589b9 Remove int/uint from libstd/lib.rs 2015-03-01 13:03:44 +01:00
Björn Steinbrink
708c3858e3 Use trans_arg_datum in trans_args_under_call_abi
The logic for the argument translation was duplicated here.
2015-03-01 12:54:30 +01:00
Björn Steinbrink
549be5f867 Emit proper function argument attributes for closure environments 2015-03-01 12:30:11 +01:00
Manish Goregaokar
d9fb9765a1 Rollup merge of #22907 - dotdash:static_assert_bool, r=eddyb
static_assert is documented as working on static with type `bool`, but
we currently accept it on any const static and crash when the const has
an non-integral type.

This is a breaking-change for anyone who used static_assert on types
likes i32, which happened to work but seems like an unintended
consequence of the missing error checking.

[breaking-change]

Fixes #22056
2015-03-01 09:49:48 +05:30
Björn Steinbrink
d11b48c85c Error out when using static_assert on a non-boolean value
static_assert is documented as working on static with type `bool`, but
we currently accept it on any const static and crash when the const has
an non-integral type.

This is a breaking-change for anyone who used static_assert on types
likes i32, which happened to work but seems like an unintended
consequence of the missing error checking.

[breaking-change]

Fixes #22056
2015-02-28 19:28:49 +01:00
Ms2ger
63513d06a2 Remove the re-exports for InlineAttr variants. 2015-02-28 13:56:32 +01:00
Felix S. Klock II
5e4867eef1 Use more precise type_needs_drop for deciding about emitting cleanup code.
Fix #22536
2015-02-26 15:12:26 +01:00
Felix S. Klock II
2d0e6caeec Add push_ctxt instrumentation to all functions that might call base::zero_mem.
(Instrumentation work for Issue 22536.)
2015-02-26 15:12:26 +01:00
Manish Goregaokar
9692f3bc94 Rollup merge of #22635 - kmcallister:macros-chapter, r=steveklabnik
r? @steveklabnik
2015-02-25 10:27:03 +05:30
Oliver Schneider
0bea550a2a style nitpicks 2015-02-24 14:14:48 +01:00
Eduard Burtescu
d31b9ebef5 Implement <T>::method UFCS expression syntax. 2015-02-24 14:16:02 +02:00
Eduard Burtescu
5a6a9ed792 rustc: combine partial_def_map and last_private_map into def_map. 2015-02-24 14:16:02 +02:00
Eduard Burtescu
7a3054f55c rustc_resolve: remove the distinction between DefStaticMethod and DefMethod. 2015-02-24 14:14:17 +02:00
Eduard Burtescu
0f49254b31 rustc: use partially resolved definitions to replace the T::A hack. 2015-02-24 14:14:17 +02:00
Eduard Burtescu
5809f8ae74 rustc_resolve: use the visitor model more, remove redundant repeated lookups. 2015-02-24 14:14:16 +02:00
Eduard Burtescu
27747ac1a7 Revert bogus rename from DefTrait to DefaultImpl. 2015-02-24 14:14:16 +02:00
Manish Goregaokar
89d5d2448d Rollup merge of #22213 - eddyb:ty_open-case-closed, r=nikomatsakis
This type wasn't necessary, as there was no place using it and unsized types not wrapped in it, at the same time.
r? @nikomatsakis
2015-02-24 12:26:01 +05:30
Eduard Burtescu
8659de0334 rustc_trans: use an Lvalue Datum for an unsized lvalue to avoid bogus drops. 2015-02-24 08:40:15 +02:00
Eduard Burtescu
3b0cafbcd7 tests: update expected recursion limit errors for the temporary lack of spans. 2015-02-24 08:40:15 +02:00
Eduard Burtescu
7a8a5172a5 Remove ty_open and treat Unsized lvalues as *Unsized. 2015-02-24 08:40:14 +02:00
Manish Goregaokar
d7df353377 Rollup merge of #22580 - pnkfelix:guard-pat-cfg2, r=pnkfelix
aatch's cfg revisions, namely to match expressions

Revise handling of match expressions so that arms branch to next arm.

Update the graphviz tests accordingly.

Fixes #22073. (Includes regression test for the issue.)
2015-02-24 12:08:35 +05:30
Manish Goregaokar
5676f6084b Rollup merge of #22301 - nikomatsakis:object-safe-sized-methods, r=huonw
RFC 817 is not yet accepted, but I wanted to put this code up so people can see how it works. And to be ready lest it should be accepted.

cc rust-lang/rfcs#817
2015-02-24 12:08:35 +05:30
bors
2890508d97 Auto merge of #21689 - FlaPer87:oibit-send-and-friends, r=nikomatsakis
This is one more step towards completing #13231

This series of commits add support for default trait implementations. The changes in this PR don't break existing code and they are expected to preserve the existing behavior in the compiler as far as built-in bounds checks go.

The PR adds negative implementations of `Send`/`Sync` for some types and it removes the special cases for `Send`/`Sync` during the trait obligations checks. That is, it now fully relies on the traits check rather than lang items.

Once this patch lands and a new snapshot is created, it'll be possible to add default impls for `Send` and `Sync` and remove entirely the use of `BuiltinBound::{BoundSend,BoundSync}` for positive implementations as well.

This PR also removes the restriction on negative implementations. That is, it is now possible to add negative implementations for traits other than `Send`/`Sync`
2015-02-24 02:22:44 +00:00
Niko Matsakis
8f5d225933 Extend object safety so that methods with Sized:Self are exempt. 2015-02-23 15:28:26 -05:00
Manish Goregaokar
3b69d1b941 Rollup merge of #22490 - nagisa:inline-args, r=alexcrichton 2015-02-23 11:43:58 -08:00
Manish Goregaokar
bf7cde449b Rollup merge of #22538 - nagisa:properise-trans-asserts, r=nikomatsakis 2015-02-23 11:43:58 -08:00
Manish Goregaokar
8f921502bd Rollup merge of #22667 - dotdash:retslot_cast.rs, r=huonw
We already do this for the function arguments, but miss it for the
retslot pointer, which can lead to LLVM assertions because the retslot
has the wrong type.

Fixes #22663
2015-02-23 11:43:56 -08:00
Manish Goregaokar
af81ec2f43 Rollup merge of #22559 - kmcallister:borrowck-readme, r=nikomatsakis
And minor fixes to other docs.

r? @nikomatsakis
2015-02-23 23:28:46 +05:30
bors
f0f7ca27de Auto merge of #21769 - brooksbp:column-line-macro, r=nick29581
Please see discussion in #19284 .
2015-02-23 01:53:38 +00:00
Simonas Kazlauskas
9be8ec82ce Properly translate methods with foreign CC
This fixes a general issue of trying to define extern functions inside impl blocks resulting in
ICE.

Fixes #21238
Fixes #20734
Fixes #19047
2015-02-22 16:04:18 +02:00
Simonas Kazlauskas
0c25e6f509 Convert some panics to bug diagnostics in trans 2015-02-22 16:03:21 +02:00
Björn Steinbrink
b593c60c33 Add missing cast for retslots in case of "subtyping" due to trait bounds
We already do this for the function arguments, but miss it for the
retslot pointer, which can lead to LLVM assertions because the retslot
has the wrong type.

Fixes #22663
2015-02-22 12:47:27 +01:00
Simonas Kazlauskas
c9d0967383 Validate inline attribute arguments 2015-02-22 13:44:28 +02:00
James Miller
97c1711894 Distinguish between AST and various Dummy nodes in CFG.
(Factoring of aatch CFG code, Part 1.)
2015-02-22 12:01:58 +01:00
Flavio Percoco
d38aab397e Rename DefTrait to DefaultImpl 2015-02-22 02:14:25 +01:00
Flavio Percoco
a962d47ef8 look for default trait candidates 2015-02-22 02:14:24 +01:00
Brian Brooks
fc9fa1a563 Resolve barriers to changing column!() / line!() return type to u32 in #19284 . Address review comments in #21769 . 2015-02-21 17:26:29 -05:00
Manish Goregaokar
3e794defda Rollup merge of #22592 - nikomatsakis:deprecate-bracket-bracket, r=aturon
r? @aturon
2015-02-22 01:51:03 +05:30
Manish Goregaokar
f308550c16 Rollup merge of #22527 - dotdash:if-loop, r=huonw
In `if loop {} {}`, the `if` is actually unreachable, but we didn't
handle that correctly and when trying to translate the `if` we tried to
branch on the \"return value\" of the loop expression, which is not an
`i1` and therefore triggered an LLVM assertion.
2015-02-22 01:47:28 +05:30
Niko Matsakis
68e5bb3f2c Remove remaining uses of []. This time I tried to use deref coercions where possible. 2015-02-20 14:08:14 -05:00
Björn Steinbrink
07c0faa407 Fix an ICE when translating if loop {} {}
In `if loop {} {}`, the `if` is actually unreachable, but we didn't
handle that correctly and when trying to translate the `if` we tried to
branch on the "return value" of the loop expression, which is not an
`i1` and therefore triggered an LLVM assertion.
2015-02-19 11:46:47 +01:00