87788 Commits

Author SHA1 Message Date
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
Esteban Küber
59f643fc5f Point to return span when writing return; on non-() fn 2018-12-20 14:00:30 -08:00
bors
09d6ab90e5 Auto merge of #56845 - GuillaumeGomez:const-docs, r=oli-obk
Don't render const keyword on stable

Fixes #55246.

Continuation of #55327.

r? @oli-obk
2018-12-20 19:26:12 +00:00
varkor
0a8b696793 Remove nil-enum test 2018-12-20 19:24:16 +00:00
Andy Russell
8d393bf797
display rustc_private APIs as "Internal" 2018-12-20 13:47:39 -05:00
Philipp Hansch
0493c99777
Move compiletest test run to mingw-check builder
This way, checktools.sh continues to be used only for tools that are
published later on.
2018-12-20 18:00:07 +01:00
QuietMisdreavus
8dc8d7ac51 split extra_scripts to handle root_path shenanigans 2018-12-20 10:57:03 -06:00
QuietMisdreavus
0b0a00cc05 new --static-root-path flag for controlling static file locations 2018-12-20 10:18:45 -06:00
Philipp Hansch
2d2435b47e
Run compiletest tests on CI
I was assuming that https://github.com/rust-lang/rust/pull/56792 would
have resulted in compiletest tests being executed in CI. However, I
couldn't find any mentions of the unit test names in any CI logs.

This adds the compiletest test execution to the checktools.sh script.
2018-12-20 16:03:49 +01: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
Adrian Budau
da47bd3ae0 Fix typo in comment 2018-12-20 13:29:04 +02:00
Adrian Budau
cc53f4e9f4 Fix pipe2 and accept4 on static linked executables on linux (like musl). 2018-12-20 13:22:31 +02:00
bors
4755e2f3b6 Auto merge of #56741 - RalfJung:retag-to-raw, r=oli-obk
treat ref-to-raw cast like a reborrow: do a special kind of retag

r? @oli-obk

Cc @nikomatsakis
2018-12-20 09:58:10 +00:00
Guillaume Gomez
ca04c63930 Add test for associated const version display 2018-12-20 10:39:25 +01:00
Nicole Mazzuca
455bc95317 fix nits 2018-12-20 01:37:20 -08:00
David Tolnay
66bb34c3ab
Update src/libcore/num/mod.rs
Co-Authored-By: ubsan <npmazzuca@gmail.com>
2018-12-20 01:34:31 -08: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
Clar Fon
fb18ddaaaa Add DoubleEndedIterator::nth_back 2018-12-20 01:18:04 -05:00
Michael Hewson
1d93c6149d add a doc comment on receiver_is_valid 2018-12-20 01:14:01 -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
Scott McMurray
7b6cf6e87b Stabilize Vec(Deque)::resize_with
Closes #41758
2018-12-19 22:00:25 -08:00
Jethro Beekman
dcb5db80b2 Add std::os::fortanix_sgx module 2018-12-20 10:09:52 +05:30
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
Nicholas Nethercote
e7c5146c5d Remove TokenStream::JointTree.
This is done by adding a new `IsJoint` field to `TokenStream::Tree`,
which simplifies a lot of `match` statements. And likewise for
`CursorKind`.

The commit also adds a new method `TokenTree:stream()` which can replace
a choice between `.into()` and `.joint()`.
2018-12-20 10:18:16 +11:00
bors
daa8792f17 Auto merge of #54252 - arielb1:deref-query, r=nikomatsakis
process nested obligations in autoderef

Fixes #53843.

r? @nikomatsakis
2018-12-19 22:51:39 +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
Vadim Petrochenkov
8a8ef260be proc_macro: Validate tokens coming from the compiler again 2018-12-19 23:17:53 +03:00
Vadim Petrochenkov
4a38408940 Remove eliminate_crate_var and special pretty-printing for $crate 2018-12-19 23:17:53 +03:00
bors
790f4c566d Auto merge of #56613 - Zoxc:query-perf1, r=michaelwoerister
Tweak query code for performance

Split from https://github.com/rust-lang/rust/pull/56509

r? @michaelwoerister
2018-12-19 20:13:40 +00:00
Niv Kaminer
7894717e91 FIXME(9639) remove fixme and accept non-utf8 paths in librustdoc 2018-12-19 21:23:05 +02:00
Niv Kaminer
0e72c80afe FIXME(9639) remove fixme and accept non-utf8 paths in compiletest 2018-12-19 21:23:05 +02:00
Philipp Hansch
036ce5cdc4
Fix compiletest trim deprecation warnings 2018-12-19 19:41:22 +01: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
ljedrz
dfe187d348 query: simplify stack trimming in cycle_check 2018-12-19 17:36:39 +01:00
Alex Crichton
ba0ed5b13f rustc: Move jemalloc from rustc_driver to rustc
This commit moves jemalloc to just the rustc binary rather than the
rustc_driver shared library, enusring that it's only used for binaries
that opt-in to it like rustc rather than other binaries using
librustc_driver like rustdoc/rls/etc. This will hopefully address #56980
2018-12-19 08:27:23 -08:00
Oliver Scherer
d8ddb47fce Allow testing pointers for inboundedness while forbidding dangling pointers 2018-12-19 16:48:31 +01:00
ljedrz
ae3f6b015e dropck: remove unnecessary call to cloned() 2018-12-19 16:41:15 +01:00
ljedrz
818ed6935d dropck: simplify common patterns 2018-12-19 16:39:01 +01:00
bors
0a4a4ffc69 Auto merge of #56601 - Zoxc:lifetime-killer, r=nikomatsakis
Make the 'a lifetime on TyCtxt useless

cc @rust-lang/compiler

r? @nikomatsakis
2018-12-19 15:22:55 +00:00
ljedrz
c2fa99d2c6 query: minor refactoring 2018-12-19 15:15:24 +01:00
ljedrz
d7ca075881 query: insert visited queries more eagerly 2018-12-19 15:15:04 +01:00
Ralf Jung
81a45e2038 miri: allocation is infallible 2018-12-19 14:11:01 +01:00