Commit graph

4197 commits

Author SHA1 Message Date
Niv Kaminer
e32c63eedc bless ui tests in compare mode 2018-12-23 09:23:50 +02:00
Zack M. Davis
64ad3e2c42 adjust enum type instead of variant suggestions for prelude enums
The present author regrets not thinking of a more eloquent way to do
this.
2018-12-22 19:04:29 -08:00
Zack M. Davis
3986c96448 enum type instead of variant suggestion unification
Weirdly, we were deciding between a help note and a structured
suggestion based on whether the import candidate span was a dummy—but
we weren't using that span in any case! The dummy-ness of the span
(which appears to be a matter of this-crate vs. other-crate
definition) isn't the right criterion by which we should decide
whether it's germane to mention that "there is an enum variant";
instead, let's use the someness of `def` (which is used as the
`has_unexpected_resolution` argument to `error_code`).

Since `import_candidate_to_paths` has no other callers, we are free to
stop returning the span and rename the function. By using
`span_suggestions_`, we leverage the max-suggestions output limit
already built in to the emitter, thus resolving #56028.

In the matter of message wording, "you can" is redundant (and perhaps
too informal); prefer the imperative.
2018-12-22 17:40:48 -08:00
kennytm
26842aeac6
Rollup merge of #57039 - davidtwco:migrate-warning-wording, r=pnkfelix
Update migrate warning wording.

This PR modifies the wording of the warning for backwards-incompatible changes in migrate mode. The warning messages are changed to be lowercase and not include line-breaks in order to be consistent with other compiler diagnostics.
2018-12-23 02:12:28 +08:00
kennytm
60b4ea0472
Rollup merge of #57049 - cramertj:repr-packed, r=Centril
Stabilize #[repr(packed(N))]

Fixes https://github.com/rust-lang/rust/issues/33158
2018-12-23 02:12:23 +08:00
kennytm
7bb40eb362
Rollup merge of #56992 - euclio:unknown-lint-suggestion, r=oli-obk
suggest similar lint names for unknown lints

Fixes #54737.
2018-12-23 02:12:13 +08:00
kennytm
54d4e26b21
Rollup merge of #56919 - oli-obk:null_ref_array_tuple, r=RalfJung
Remove a wrong multiplier on relocation offset computation

r? @RalfJung

fixes #56800
2018-12-23 02:11:51 +08:00
kennytm
beaf071822
Rollup merge of #56914 - glaubitz:ignore-tests, r=alexcrichton
Ignore ui/target-feature-gate on sparc, sparc64, powerpc, powerpc64 and powerpc64le

The test ui/target-feature-gate is not applicable on sparc, sparc64, powerpc, powerpc64 and powerpc64le and consequently fails there. So just ignore it on these targets.
2018-12-23 02:11:49 +08:00
kennytm
a92e21c215
Rollup merge of #56909 - dlrobertson:fix_56762, r=estebank
static eval: Do not ICE on layout size overflow

Layout size overflow and typeck eval errors are reported. Trigger a bug
only when the eval error is strictly labeled as TooGeneric.

Fixes: #56762
2018-12-23 02:11:47 +08:00
David Wood
22b2bd8657
Update migrate warning wording.
This commit modifies the wording of the warning for
backwards-incompatible changes in migrate mode. The warning messages are
changed to be lowercase and not include line-breaks in order to be
consistent with other compiler diagnostics.
2018-12-22 14:54:30 +01:00
bors
9966590422 Auto merge of #56862 - arielb1:fundamentally-clean, r=nikomatsakis
stop treating trait objects from #[fundamental] traits as fundamental

This is a [breaking-change] to code that exploits this functionality (which should be limited to code using `#![feature(fundamental)]`.

Fixes #56503.

r? @nikomatsakis
2018-12-22 11:06:16 +00:00
bors
abaa9344d4 Auto merge of #56805 - mikeyhew:stabilize-pin-as-receiver, r=nikomatsakis
Stabilize `Rc`, `Arc` and `Pin` as method receivers

Replaces #55880
Closes  #55786
r? @nikomatsakis
cc @withoutboats @cramertj

This lets you write methods using `self: Rc<Self>`, `self: Arc<Self>`, `self: Pin<&mut Self>`, `self: Pin<Box<Self>`, and other combinations involving `Pin` and another stdlib receiver type, without needing the `arbitrary_self_types`. Other user-created receiver types can be used, but they still require the feature flag to use.

This is implemented by introducing a new trait, `Receiver`, which the method receiver's type must implement if the `arbitrary_self_types` feature is not enabled. To keep composed receiver types such as `&Arc<Self>` unstable, the receiver type is also required to implement `Deref<Target=Self>` when the feature flag is not enabled.

This lets you use `self: Rc<Self>` and `self: Arc<Self>` in stable Rust, which was not allowed previously. It was agreed that they would be stabilized in #55786. `self: Pin<&Self>` and other pinned receiver types do not require the `arbitrary_self_types` feature, but they cannot be used on stable because `Pin` still requires the `pin` feature.
2018-12-22 01:42:25 +00:00
Taylor Cramer
87c8cdd8ef Stabilize #[repr(packed(N))] 2018-12-21 10:18:38 -08:00
Oliver Scherer
6ed596ebe2 Update tests to changes on master 2018-12-21 13:39:45 +01:00
Oliver Scherer
b9d74fc3ce Also test projections 2018-12-21 11:27:29 +01:00
Oliver Scherer
f8e508cde4 Fix a recently introduces regression 2018-12-21 11:27:29 +01:00
Esteban Küber
cdbccf50a7 Point at coercion source on type errors for fn returning impl Trait 2018-12-20 16:52:52 -08:00
bors
3f7c718926 Auto merge of #54125 - varkor:less-conservative-uninhabitedness-check, r=nikomatsakis
Less conservative uninhabitedness check

Extends the uninhabitedness check to structs, non-empty enums, tuples and arrays.

Pulled out of #47291 and #50262.

Fixes https://github.com/rust-lang/rust/issues/54586.

r? @nikomatsakis
2018-12-20 22:04:21 +00:00
Esteban Küber
59f643fc5f Point to return span when writing return; on non-() fn 2018-12-20 14:00:30 -08:00
Oliver Scherer
405d8b0bb3
Copyrite 2018-12-20 14:31:40 +01:00
bors
9622f9dc47 Auto merge of #56647 - petrochenkov:dcrate2, r=alexcrichton
Rework treatment of `$crate` in procedural macros

Important clarification: `$crate` below means "processed `$crate`" or "output `$crate`". In the input of a decl macro `$crate` is just two separate tokens, but in the *output of a decl macro* `$crate` is a single keyword identifier (https://github.com/rust-lang/rust/issues/55640#issuecomment-435692791).

First of all, this PR removes the `eliminate_crate_var` hack.
`$crate::foo` is no longer replaced with `::foo` or `::crate_name::foo` in the input of derive proc macros, it's passed to the macro instead with its precise span and hygiene data, and can be treated as any other path segment keyword (like `crate` or `self`) after that. (Note: `eliminate_crate_var` was never used for non-derive proc macros.)

This creates an annoying problem - derive macros still may stringify their input before processing and expect `$crate` survive that stringification and refer to the same crate (the Rust 1.15-1.29 way of doing things).
Moreover, the input of proc macro attributes and derives (but not fn-like proc macros) also effectively survives stringification before being passed to the macro (also for legacy implementation reasons).

So we kind of resurrect the `eliminate_crate_var` hack in reduced form, but apply it only to AST pretty-printing.
If an AST fragment is pretty-printed, the resulting *text* will have `$crate` replaced with `crate` or `::crate_name`. This should be enough to keep all the legacy cases working.

Closes https://github.com/rust-lang/rust/issues/55640
Closes https://github.com/rust-lang/rust/issues/56622
r? @ghost
2018-12-20 12:42:54 +00:00
bors
817dda7df0 Auto merge of #56649 - davidtwco:issue-46589, r=pnkfelix
MIR borrowck doesn't accept the example of iterating and updating a mutable reference

Fixes #46589.

r? @pnkfelix or @nikomatsakis
2018-12-20 07:22:15 +00:00
Michael Hewson
286503ace2 Refactor and add comments to code in receiver_is_valid
also updated some error messages

removed the code manually checking for `receiver_ty: Deref<Target=self_ty>`, in favour of using autoderef but only doing one iteration. This will cause error messages to be more consistent. Before, a "mismatched method receiver" error would be emitted when `receiver_ty` was valid except for a lifetime parameter, but only when `feature(arbitrary_self_types)` was enabled, and without the feature flag the error would be "uncoercible receiver". Now it emits "mismatched method receiver" in both cases.
2018-12-20 01:20:17 -05:00
Michael Hewson
153f5a7892 Stabilize Rc, Arc and Pin as method receivers
This lets you write methods using `self: Rc<Self>`, `self: Arc<Self>`, `self: Pin<&mut Self>`, `self: Pin<Box<Self>`, and other combinations involving `Pin` and another stdlib receiver type, without needing the `arbitrary_self_types`. Other user-created receiver types can be used, but they still require the feature flag to use.

This is implemented by introducing a new trait, `Receiver`, which the method receiver's type must implement if the `arbitrary_self_types` feature is not enabled. To keep composed receiver types such as `&Arc<Self>` unstable, the receiver type is also required to implement `Deref<Target=Self>` when the feature flag is not enabled.

This lets you use `self: Rc<Self>` and `self: Arc<Self>` in stable Rust, which was not allowed previously. It was agreed that they would be stabilized in #55786. `self: Pin<&Self>` and other pinned receiver types do not require the `arbitrary_self_types` feature, but they cannot be used on stable because `Pin` still requires the `pin` feature.
2018-12-20 01:14:01 -05:00
bors
e42247f949 Auto merge of #56219 - arielb1:never-coerce-box, r=nikomatsakis
trigger unsized coercions keyed on Sized bounds

This PR causes unsized coercions to not be disabled by `$0: Unsize<dyn
Object>` coercion obligations when we have an `$0: Sized` obligation somewhere.

This should be mostly backwards-compatible, because in these cases not doing the unsize coercion should have caused the `$0: Sized` obligation to fail.

Note that `X: Unsize<dyn Object>` obligations can't fail *as obligations* if `X: Sized` holds, so this still maintains some version of monotonicity (I think that an unsized coercion can't be converted to no coercion by unifying type variables).

Fixes #49593 (unblocking never_type).

r? @eddyb
cc @nikomatsakis
2018-12-20 03:41:00 +00:00
Andy Russell
90726e1ac1
suggest similar lint names for unknown lints 2018-12-19 16:52:09 -05:00
Vadim Petrochenkov
edab6c7492 Workaround issues with crate loading during cross-compilation 2018-12-20 00:04:15 +03:00
Vadim Petrochenkov
f756257fb7 Do not interpret mismatches from pretty-printed $crate as token stream invalidation 2018-12-19 23:17:54 +03:00
Vadim Petrochenkov
69c66286a9 Reintroduce special pretty-printing for $crate when it's necessary for proc macros 2018-12-19 23:17:54 +03:00
Vadim Petrochenkov
2bc67da378 proc_macro: Accept $crate as an identifier if it comes from the compiler 2018-12-19 23:17:53 +03:00
John Paul Adrian Glaubitz
a153d485fe test: Ignore ui/target-feature-gate on sparc and sparc64 2018-12-19 17:53:03 +01:00
John Paul Adrian Glaubitz
7eb67c2503 test: Ignore ui/target-feature-gate on powerpc and powerpc64(le) 2018-12-19 17:52:27 +01:00
Pietro Albini
5b41887e0e
Rollup merge of #56910 - estebank:unclosed-eof, r=oli-obk
Do not point at delim spans for complete correct blocks

Fix #56834.
2018-12-19 11:47:14 +01:00
Pietro Albini
2e5a025d44
Rollup merge of #56908 - alexcrichton:new-features, r=oli-obk
rustc: Don't ICE on usage of two new target features

I seem to always forget to update this portion of the compiler...
2018-12-19 11:47:13 +01:00
Pietro Albini
39dc2c4e34
Rollup merge of #56907 - rumajo:master, r=kennytm,Centril
Fix grammar in compiler error for array iterators

This fixes a small grammatical mistake in the message the compiler gives when attempting to iterate directly over an array `arr` without calling `arr.iter()` or borrowing `&arr`.
2018-12-19 11:47:12 +01:00
Niv Kaminer
e06b81e029 FIXME(21232) update fixme to point to the open issue about accepting partial initialization 2018-12-19 10:51:47 +02:00
Niv Kaminer
cc568e7be1 FIXME(49824) remove fixme because there is no free region error anymore 2018-12-19 10:51:47 +02:00
Niv Kaminer
cf329d5978 FIXME(49821) remove fixme since a tip about let binding is given 2018-12-19 10:51:47 +02:00
Niv Kaminer
3773ae26a0 FIXME(45827) remove comment since errors are reported 2018-12-19 10:51:47 +02:00
varkor
030987481b Fix string for array access suggestion 2018-12-18 23:43:00 +00:00
varkor
d6969ac2fb Fix string for raw pointer deref suggestion 2018-12-18 23:42:42 +00:00
varkor
c2402dca85 Replace "native pointer" in error message with "raw pointer" 2018-12-18 22:58:49 +00:00
bors
d99a320cba Auto merge of #56863 - arielb1:supertrait-self-4, r=nikomatsakis
fix trait objects with a Self-containing projection values

Fixes #56288.

This follows ALT2 in the issue.

beta-nominating since this is a regression.

r? @nikomatsakis
2018-12-18 19:58:14 +00:00
Oliver Scherer
f7314456d0 Mark tuple structs as live if their constructors are used 2018-12-18 15:54:06 +01:00
bors
cb84844e83 Auto merge of #56160 - oli-obk:const_fn_let, r=nikomatsakis
Fix various aspects around `let` bindings inside const functions

* forbid `let` bindings in const contexts that use short circuiting operators
* harden analysis code against derefs of mutable references

Initially this PR was about stabilizing `let` bindings, but too many flaws were exposed that need some more testing on nightly
2018-12-18 14:21:07 +00:00
Oliver Scherer
d815e2b870 Explain that lack of short circuiting support in constants is temporary 2018-12-18 09:42:46 +01:00
Oliver Scherer
b678238070 Properly worded diagnostic message 2018-12-18 09:16:56 +01:00
bors
041254b814 Auto merge of #56481 - arielb1:dynamic-order, r=nikomatsakis
add coherence future-compat warnings for marker-only trait objects

The future-compat warnings break code that assumes that `dyn Send + Sync !=
dyn Sync + Send`, and are the first step in making them equal. cc #33140.

Note: this lint should be made to default-warn before we merge. It is deny only for the crater run.

r? @nikomatsakis / @scalexm . cc @Centril & @alexreg.
2018-12-18 06:50:11 +00:00
Ariel Ben-Yehuda
1fd23f56f3 improve tests as suggested by review comments 2018-12-18 00:33:21 +02:00
Vadim Petrochenkov
7c901ba537 Stabilize underscore_imports 2018-12-17 22:43:00 +03:00