Commit graph

22874 commits

Author SHA1 Message Date
David Wood
388dffe347
Make conflicting borrow description more robust.
This commit improves the logic for place descriptions in conflicting
borrow errors so that borrows of union fields have better messages even
when the unions are embedded in other unions or structs.
2019-01-04 20:56:41 +01:00
David Wood
69bded2493
Add union justifications to conflicting borrows.
This commit adds justifications to error messages for conflicting
borrows of union fields.

Where previously an error message would say
``cannot borrow `u.b` as mutable..``, it now says
``cannot borrow `u` (via `u.b`) as mutable..``.
2018-12-26 21:28:33 +01:00
Mark Rousskov
2a663555dd Remove licenses 2018-12-25 21:08:33 -07:00
bors
14b96659e4 Auto merge of #57088 - euclio:non-camel-case-early-lint, r=estebank
make non_camel_case_types an early lint

This allows us to catch these kinds of style violations much earlier, as evidenced by the large number of tests that had to be updated for this change.
2018-12-25 16:12:24 +00:00
bors
27a25df2e2 Auto merge of #56962 - nivkner:fixme_fixup4, r=pnkfelix
address some FIXME whose associated issues were marked as closed

part of #44366
2018-12-25 13:32:31 +00:00
kennytm
07f5dbc490
Revert "Rollup merge of #56944 - alexcrichton:less-thin2, r=michaelwoerister"
This reverts commit f1051b574c, reversing
changes made to 833e0b3b8a.
2018-12-25 13:25:57 +08:00
Andy Russell
6474de904c
make non_camel_case_types an early lint 2018-12-24 12:58:52 -05:00
Mazdak Farrokhzad
c44bb0230e
Rollup merge of #57021 - nikic:arg-pointer-align, r=nagisa
Enable emission of alignment attrs for pointer params

Instead disable creation of assumptions during inlining using an LLVM opt flag. For non-inlined functions, this gives us alignment information, while not inserting any assumes that kill other optimizations.

The `-Z arg-align-attributes` option which previously controlled this behavior is removed.

Fixes #54982.

r? @nagisa

cc @eddyb who added the current behavior, and @scottmcm, who added the `-Z arg-align-attributes` flag.
2018-12-24 13:29:35 +01:00
Mazdak Farrokhzad
f1051b574c
Rollup merge of #56944 - alexcrichton:less-thin2, r=michaelwoerister
bootstrap: Link LLVM as a dylib with ThinLTO

When building a distributed compiler on Linux where we use ThinLTO to
create the LLVM shared object this commit switches the compiler to
dynamically linking that LLVM artifact instead of statically linking to
LLVM. The primary goal here is to reduce CI compile times, avoiding two+
ThinLTO builds of all of LLVM. By linking dynamically to LLVM we'll
reuse the one ThinLTO step done by LLVM's build itself.

Lots of discussion about this change can be found [here] and down. A
perf run will show whether this is worth it or not!

[here]: https://github.com/rust-lang/rust/pull/53245#issuecomment-417015334
2018-12-24 13:29:28 +01:00
Mazdak Farrokhzad
dff3e41914
Rollup merge of #57078 - glaubitz:ignore-tests, r=nikic
Ignore two tests on s390x

Ignore two tests on s390x which don't make sense on s390x as they are x86-specific.
2018-12-23 23:09:15 +01:00
Mazdak Farrokhzad
975a7f01f0
Rollup merge of #57067 - Centril:stabilize-min_const_unsafe_fn, r=oli-obk
Stabilize min_const_unsafe_fn in 1.33

Fixes #55607

r? @oli-obk
2018-12-23 23:09:14 +01:00
Mazdak Farrokhzad
4ebc7b7e63
Rollup merge of #57053 - nikic:fix-gep-align, r=nagisa
Fix alignment for array indexing

We need to reduce the alignment with the used offset. If the offset isn't known, use the element size, as this will yield the minimum possible alignment.

This handles both direct array indexing, and array repeat expressions.

Fixes #56927.

r? @nagisa
2018-12-23 23:09:12 +01:00
Mazdak Farrokhzad
0c1ba07a77
Rollup merge of #57020 - estebank:return-span, r=zackmdavis
Point to cause of `fn` expected return type

Fix #48136.
2018-12-23 23:09:09 +01:00
Mazdak Farrokhzad
eb24b33b66
Rollup merge of #56966 - varkor:raw-pointer-deref-parens, r=zackmdavis
Correct strings for raw pointer deref and array access suggestions

Fixes https://github.com/rust-lang/rust/issues/56714.
Fixes https://github.com/rust-lang/rust/issues/56963.

r? @zackmdavis
2018-12-23 23:09:08 +01:00
Mazdak Farrokhzad
5157c22eba
Rollup merge of #56953 - oli-obk:dead_const, r=petrochenkov
Mark tuple structs as live if their constructors are used

fixes https://github.com/rust-lang/rust/issues/56281
2018-12-23 23:09:05 +01:00
Mazdak Farrokhzad
93af1e7369
Rollup merge of #56939 - cramertj:pin-stabilization, r=alexcrichton
Pin stabilization

This implements the changes suggested in https://github.com/rust-lang/rust/issues/55766#issue-378417538 and stabilizes the `pin` feature. @alexcrichton also listed several "blockers" in that issue, but then in [this comment](https://github.com/rust-lang/rust/issues/55766#issuecomment-445074980) mentioned that they're more "TODO items":
>  In that vein I think it's fine for a stabilization PR to be posted at any time now with FCP lapsed for a week or so now. The final points about self/pin/pinned can be briefly discussed there (if even necessary, they could be left as the proposal above).

Let's settle these last bits here and get this thing stabilized! :)

r? @alexcrichton
cc @withoutboats
2018-12-23 23:09:04 +01:00
Mazdak Farrokhzad
84bc34e70e
Rollup merge of #56916 - oli-obk:static_mut_beta_regression, r=davidtwco
Fix mutable references in `static mut`

fixes #56903
2018-12-23 23:09:02 +01:00
Mazdak Farrokhzad
4c971620e4
Rollup merge of #56188 - zackmdavis:if_i_may_suggest, r=davidtwco
enum type instead of variant suggestion unification

Fixes #56028.

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.

In a second commit, we do some unprincipled special-casing to correct and beautify suggestions for `Option` and `Result` (where the existing code was being confused by their being reexported in the prelude).

r? @davidtwco
2018-12-23 23:08:59 +01:00
John Paul Adrian Glaubitz
ecdbcada5d test: Ignore codegen/x86_mmx.rs on s390x 2018-12-23 13:32:03 +01:00
John Paul Adrian Glaubitz
db542b884d test: Ignore ui/target-feature-gate on s390x 2018-12-23 13:29:40 +01:00
Mazdak Farrokhzad
7ae6fb2152 stabilize min_const_unsafe_fn -- revert const-size_of-cycle changes 2018-12-23 10:29:38 +01:00
Mazdak Farrokhzad
bd1d5bc629 stabilize min_const_unsafe_fn --bless tests. 2018-12-23 10:29:38 +01:00
Mazdak Farrokhzad
b42a3acaec stabilize min_const_unsafe_fn in 1.33. 2018-12-23 10:29:38 +01:00
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
bors
16329b0ad3 Auto merge of #57063 - kennytm:rollup, r=kennytm
Rollup of 25 pull requests

Successful merges:

 - #56802 (Add DoubleEndedIterator::nth_back)
 - #56909 (static eval: Do not ICE on layout size overflow)
 - #56914 (Ignore ui/target-feature-gate on sparc, sparc64, powerpc, powerpc64 and powerpc64le)
 - #56919 (Remove a wrong multiplier on relocation offset computation)
 - #56933 (Add --progress to git submodule commands in x.py)
 - #56936 (rename div_euc -> div_euclid, and mod_euc -> rem_euclid)
 - #56941 (deny intra-doc link resolution failures in libstd)
 - #56945 (Fix rustdoc-js tests)
 - #56967 (Replace current crate's searchIndex when regenerating)
 - #56970 (Mem uninit doc ptr drop)
 - #56973 (make basic CTFE tracing available on release builds)
 - #56979 (Adding unwinding support for x86_64_fortanix_unknown_sgx target.)
 - #56981 (miri: allocation is infallible)
 - #56984 (A few tweaks to dropck_outlives)
 - #56989 (Fix compiletest `trim` deprecation warnings)
 - #56992 (suggest similar lint names for unknown lints)
 - #57002 (Stabilize Vec(Deque)::resize_with)
 - #57011 (rustdoc: add new CLI flag to load static files from a different location)
 - #57027 (Optimize away a move)
 - #57034 (Inline tweaks)
 - #57039 (Update migrate warning wording.)
 - #57040 (Fix feature gate to point to 1.32.0 for `path_from_str`)
 - #57049 (Stabilize #[repr(packed(N))])
 - #57050 (Fixed typo in HashMap documentation)
 - #57052 (Fix stabilization version numbers (exhaustive_integer_patterns + macro_literal_matcher))
2018-12-22 23:12:23 +00:00
bors
2d3e909e4e Auto merge of #56887 - emilio:enum-field-reordering, r=eddyb
Disable field reordering for repr(int).

This fixes the problem that the test in #56619 uncovers.

Closes #56619.
2018-12-22 20:35:30 +00: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
4446c65d9b
Rollup merge of #57011 - QuietMisdreavus:static-root-path, r=GuillaumeGomez
rustdoc: add new CLI flag to load static files from a different location

This PR adds a new CLI flag to rustdoc, `--static-root-path`, which controls how rustdoc links pages to the CSS/JS/font static files bundled with the output. By default, these files are linked with a series of `../` which is calculated per-page to link it to the documentation root - i.e. a relative link to the directory given by `-o`. This is causing problems for docs.rs, because even though docs.rs has saved one copy of these files and is dispatching them dynamically, browsers have no way of knowing that these are the same files and can cache them. This can allow it to link these files as, for example, `/rustdoc.css` instead of `../../rustdoc.css`, creating a single location that the files are loaded from.

I made sure to only change links for the *static* files, those that don't change between crates. Files like the search index, aliases, the source files listing, etc, are still linked with relative links.

r? @GuillaumeGomez

cc @onur
2018-12-23 02:12:16 +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
Taylor Cramer
684fe9a6b2 Rename Box/Arc/Rc::pinned to ::pin 2018-12-21 20:42:50 -08:00
Taylor Cramer
610bcaf6f3 Stabilize Pin 2018-12-21 20:42:50 -08:00
bors
24667aa19d Auto merge of #56824 - euclio:internal-apis, r=QuietMisdreavus
rustdoc: display rustc_private APIs as "Internal"

This PR updates the display of `rustc_private` APIs to be "Internal" instead of "Experimental", and changes the colors appropriately. It also updates the copy of the `rustc_private` feature to sound more informative and less like a compiler suggestion.

The PR additionally contains a significant refactor of the `short_stability` function to remove duplication and fix a few rendering bugs due to extra or missing spaces.

Before:

![screen shot 2018-12-14 at 11 45 28 am](https://user-images.githubusercontent.com/1372438/50015926-c9768d80-ff95-11e8-9649-5df29df6909b.png)

After:

![screen shot 2018-12-14 at 11 45 11 am](https://user-images.githubusercontent.com/1372438/50015934-cf6c6e80-ff95-11e8-912b-74b893f55425.png)
2018-12-22 04:21:30 +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
Nikita Popov
097d39d8ec Fix alignment for array indexing
We need to reduce the alignment with the used offset. If the offset
isn't known, we need to reduce with the element size to support
arbitrary offsets.
2018-12-21 23:51:55 +01: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
bors
6d34ec18c7 Auto merge of #55798 - GuillaumeGomez:version-display-associated-const, r=QuietMisdreavus
Add version display for associated consts

Fixes #54030.

<img width="1440" alt="screenshot 2018-11-08 at 23 57 29" src="https://user-images.githubusercontent.com/3050060/48232648-99decf00-e3b2-11e8-9f41-6bd12a161c7d.png">

r? @QuietMisdreavus
2018-12-21 01:58:16 +00: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
Nikita Popov
db24d8e8e2 Enable emission of alignment attrs for pointer params
Instead disable creation of assumptions during inlining using an
LLVM opt flag.

The -Z arg-align-attributes option which previously controlled this
behavior is removed.
2018-12-21 00:31:18 +01: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