Commit graph

4160 commits

Author SHA1 Message Date
bors
0d4f91905b Auto merge of #56351 - davidtwco:issue-55396-stabilize-linker-flavor, r=nagisa
Stabilize `linker-flavor` flag.

Part of #55396.

This commit moves the linker-flavor flag from a debugging option to a
codegen option, thus stabilizing it. There are no feature flags
associated with this flag.

r? @nagisa
2018-12-14 00:28:08 +00:00
Alex Crichton
5087aef792 rustc: Add an unstable simd_select_bitmask intrinsic
This is going to be required for binding a number of AVX-512 intrinsics
in the `stdsimd` repository, and this intrinsic is the same as
`simd_select` except that it takes a bitmask as the first argument
instead of a SIMD vector. This bitmask is then transmuted into a `<NN x
i8>` argument, depending on how many bits it is.

cc rust-lang-nursery/stdsimd#310
2018-12-13 14:05:12 -08:00
Matthew Jasper
cdd537339e Make determining the discriminant a normal Shallow read
Enum layout optimizations mean that the discriminant of an enum may not
be stored in a tag disjoint from the rest of the fields of the enum.
Stop borrow checking as though they are.
2018-12-13 20:53:07 +00:00
Esteban Küber
33a34b06ac Wording changes 2018-12-13 09:55:16 -08:00
Oliver Scherer
5df6af49a7 Update tests to show diagnostics 2018-12-13 12:54:49 +01:00
David Wood
9536d04a2d
Stabilize linker-flavor flag.
This commit moves the linker-flavor flag from a debugging option to a
codegen option, thus stabilizing it. There are no feature flags
associated with this flag.
2018-12-13 09:41:46 +01:00
Esteban Küber
c7f1b977ed Suggest using .display() when trying to print a Path 2018-12-12 16:54:27 -08:00
Esteban Küber
bec5b664fe Deduplicate unsatisfied trait bounds 2018-12-12 15:58:27 -08:00
Esteban Küber
b9235ea57c Account for impl Trait when suggesting lifetime 2018-12-12 14:10:36 -08:00
Felix S. Klock II
29e7ca940b Add test of current behavior (infer free region within closure body) previously not in test suite. 2018-12-12 15:50:12 +01:00
Steve Loveless
517bfe0dca Fix private_no_mangle_fns message grammar 2018-12-11 21:42:23 -08:00
Alex Crichton
4c21a3bc2a std: Depend directly on crates.io crates
Ever since we added a Cargo-based build system for the compiler the
standard library has always been a little special, it's never been able
to depend on crates.io crates for runtime dependencies. This has been a
result of various limitations, namely that Cargo doesn't understand that
crates from crates.io depend on libcore, so Cargo tries to build crates
before libcore is finished.

I had an idea this afternoon, however, which lifts the strategy
from #52919 to directly depend on crates.io crates from the standard
library. After all is said and done this removes a whopping three
submodules that we need to manage!

The basic idea here is that for any crate `std` depends on it adds an
*optional* dependency on an empty crate on crates.io, in this case named
`rustc-std-workspace-core`. This crate is overridden via `[patch]` in
this repository to point to a local crate we write, and *that* has a
`path` dependency on libcore.

Note that all `no_std` crates also depend on `compiler_builtins`, but if
we're not using submodules we can publish `compiler_builtins` to
crates.io and all crates can depend on it anyway! The basic strategy
then looks like:

* The standard library (or some transitive dep) decides to depend on a
  crate `foo`.
* The standard library adds

  ```toml
  [dependencies]
  foo = { version = "0.1", features = ['rustc-dep-of-std'] }
  ```
* The crate `foo` has an optional dependency on `rustc-std-workspace-core`
* The crate `foo` has an optional dependency on `compiler_builtins`
* The crate `foo` has a feature `rustc-dep-of-std` which activates these
  crates and any other necessary infrastructure in the crate.

A sample commit for `dlmalloc` [turns out to be quite simple][commit].
After that all `no_std` crates should largely build "as is" and still be
publishable on crates.io! Notably they should be able to continue to use
stable Rust if necessary, since the `rename-dependency` feature of Cargo
is soon stabilizing.

As a proof of concept, this commit removes the `dlmalloc`,
`libcompiler_builtins`, and `libc` submodules from this repository. Long
thorns in our side these are now gone for good and we can directly
depend on crates.io! It's hoped that in the long term we can bring in
other crates as necessary, but for now this is largely intended to
simply make it easier to manage these crates and remove submodules.

This should be a transparent non-breaking change for all users, but one
possible stickler is that this almost for sure breaks out-of-tree
`std`-building tools like `xargo` and `cargo-xbuild`. I think it should
be relatively easy to get them working, however, as all that's needed is
an entry in the `[patch]` section used to build the standard library.
Hopefully we can work with these tools to solve this problem!

[commit]: 28ee12db81
2018-12-11 21:08:22 -08:00
varkor
2ba3e66fa6 Update tests 2018-12-11 12:19:23 +00:00
varkor
3dd5034967 Restore old match behaviour 2018-12-11 11:18:55 +00:00
varkor
4d8a6eac39 Fix some misbehaving tests 2018-12-11 11:18:55 +00:00
varkor
210e234733 Make liveness analysis respect privacy 2018-12-11 11:18:55 +00:00
varkor
20415af142 Add privately uninhabited dead code test 2018-12-11 11:18:55 +00:00
varkor
cb4bd5a22c Update ub-uninhabit tests 2018-12-11 11:18:55 +00:00
varkor
6e5e54f735 Use unions for uninhabitedness checking rather than mem::transmute 2018-12-11 11:18:55 +00:00
varkor
419d2d8f31 Update const eval uninhabited messages 2018-12-11 11:18:55 +00:00
varkor
ffce4fbd6c Update uninhabited matches tests 2018-12-11 11:18:55 +00:00
varkor
510a9fffa2 Fix irrefutable matches on integer ranges 2018-12-11 11:16:53 +00:00
Oliver Scherer
8d0b64f16d Make const unsafe fn bodies unsafe 2018-12-11 10:27:00 +01:00
Guillaume Gomez
a11de4171c
Rollup merge of #56661 - aelred:issue-55846, r=Mark-Simulacrum
Add regression test for ICE

Fixes #55846 with a minimal (or as best as I can manage) test case. I tested this against 1.30.0 manually to confirm it crashes.

The issue seemed to have something to do with associated types. It's possible someone with more knowledge can shrink the test case down further, or make it clearer.
2018-12-10 22:02:02 +01:00
Guillaume Gomez
b37ad661c7
Rollup merge of #56641 - GuillaumeGomez:span-trait-method-invalid-nb-parameters, r=estebank
fix span for invalid number of parameters in trait method

Fixes #56582.
2018-12-10 22:02:00 +01:00
Guillaume Gomez
dec7b19516
Rollup merge of #56491 - euclio:assert-error, r=estebank
emit error with span for empty asserts

Fixes #55547.
2018-12-10 22:01:57 +01:00
Andy Russell
7f7045f847
improve diagnostics for invalid external docs 2018-12-10 12:34:46 -05:00
Andy Russell
c3c2de964d
reject invalid external doc attributes
Also, provide a suggestion for the correct syntax.
2018-12-10 12:34:46 -05:00
Oliver Scherer
8a9414ae19 Add a few more tests of edge cases 2018-12-10 16:34:44 +01:00
Felix Chapman
90b8131abc Add regression test for issue #55846 2018-12-10 02:49:19 +00:00
aheart
aa0428570e Add lint for items deprecated in future 2018-12-09 20:58:20 +02:00
Vadim Petrochenkov
44fe586060 Fix rebase + Add missing // force-host 2018-12-09 21:10:19 +03:00
Vadim Petrochenkov
725d22e645 Move some tests from ui-fulldeps to ui 2018-12-09 19:56:30 +03:00
Vadim Petrochenkov
4c9c70af38 Move former compile-fail-fulldeps tests to ui 2018-12-09 19:56:30 +03:00
Nikita Popov
706e67b0a0 Bump minimum required LLVM version to 6.0 2018-12-09 12:05:40 +01:00
bors
8db23425a3 Auto merge of #56616 - estebank:issue-56539, r=davidtwco
Encode `TraitAlias` as if they were `Trait`

Fix #56539.
2018-12-08 19:34:43 +00:00
Guillaume Gomez
05cea31c8d fix span for invalid number of parameters in trait method 2018-12-08 20:04:14 +01:00
Mazdak Farrokhzad
9f7f949600
Rollup merge of #56620 - petrochenkov:noclutter, r=estebank
resolve: Reduce some clutter in import ambiguity errors

Noticed in https://www.reddit.com/r/rust/comments/a3pyrw/announcing_rust_131_and_rust_2018/eb8alhi/.
The first error is distracting, but unnecessary, it's a *consequence* of the ambiguity error and appears because one of the ambiguous `actix` modules (unsurprisingly) doesn't have the expected name in it.
2018-12-08 08:43:49 +01:00
Mazdak Farrokhzad
ac15b4f4bd
Rollup merge of #56248 - estebank:suggest-bare-pub, r=petrochenkov
Suggest an appropriate token when encountering `pub Ident<'a>`

Fix #55403. Follow up to #45997.
2018-12-08 08:43:43 +01:00
Alexander Regueiro
003c5b796e Fixed nll stderr file. 2018-12-08 03:17:54 +00:00
Vadim Petrochenkov
2010b4f60b resolve: Reduce some clutter in import ambiguity errors 2018-12-08 04:19:29 +03:00
Alexander Regueiro
4d95f5b46d Fixed test stderr files. 2018-12-07 23:53:34 +00:00
Alexander Regueiro
ee89c088b0 Various minor/cosmetic improvements to code 2018-12-07 23:53:34 +00:00
Esteban Küber
14cca296c5 Encode TraitAlias as if they were Trait 2018-12-07 14:52:44 -08:00
John Ginger
c0e3f4b8bb Change to give a help message 2018-12-07 14:15:36 +00:00
David Wood
4a286d33f9
Fix ICE in region naming.
This commit puts a fix in place for the ICE in region naming code so
that it doesn't break the compiler. However, this results in the
diagnostic being poorer as the borrow explanation that was causing the
ICE is not being added - this should be fixed as a follow-up.
2018-12-07 14:45:30 +01:00
David Wood
7fcf31b181
Add suggestion for underscore binding fix.
This commit emits a suggestion for adding an underscore binding to
arguments in trait methods that previously did not have a argument name
specified.
2018-12-07 12:02:41 +01:00
David Wood
e4dc15a969
Add context for RFC 1685 change in 2018 edition.
This commit adds a note providing context for the change to argument
names being required in the 2018 edition for trait methods.
2018-12-07 11:56:56 +01:00
Vadim Petrochenkov
8ab115c21d Unsupport #[derive(Trait)] sugar for #[derive_Trait] legacy plugin attributes 2018-12-07 03:30:01 +03:00
bors
4bb5d35659 Auto merge of #56392 - petrochenkov:regensym, r=oli-obk
Delay gensym creation for "underscore items" (`use foo as _`/`const _`) until name resolution

So they cannot be cloned by macros. See https://github.com/rust-lang/rust/pull/56303 for the discussion.

Mostly fix cross-crate use of underscore items by inverting the "gensyms are lost in metadata" bug as described in https://github.com/rust-lang/rust/pull/56303#issuecomment-442464695.
Fix unused import warnings for single-segment imports (first commit) and `use crate_name as _` imports (as specified in https://github.com/rust-lang/rust/pull/56303#issuecomment-442274118).
Prohibit accidentally implemented `static _: TYPE = EXPR;` (cc https://github.com/rust-lang/rust/pull/55983).
Add more tests for `use foo as _` imports.
2018-12-06 15:08:11 +00:00