Commit Graph

96307 Commits

Author SHA1 Message Date
Esteban Küber
8c5f6907a1 add test case 2019-07-12 11:13:03 -07:00
Eduard-Mihai Burtescu
c063057beb rustc_codegen_ssa: fix range check in codegen_get_discr. 2019-07-12 17:45:41 +03:00
Felix S. Klock II
44d27ba28d Change indirect_structural_match lint to allow-by-default.
This is a way to address the regression aspect of rust-lang/rust#62614 in the
short term without actually fixing the bug. (My thinking is that the bug that
this lint detects has gone undetected for this long, it can wait a bit longer
until I or someone else has a chance to put in a proper fix that accounts for
rust-lang/rust#62614.)
2019-07-12 15:32:12 +02:00
Felix S. Klock II
00e0d8790d Turn indirect_structural_match lint on explicitly in ui tests. 2019-07-12 15:27:21 +02:00
bors
71f9384e3b Auto merge of #61462 - GuillaumeGomez:fix-local-storage, r=Manishearth
[rustdoc] Fix storage usage when disabled

Fixes #61239.

@starblue: Can you give a try to this change please? I tried on chrome and firefox and both worked so if you're using another web browser, that might be useful. :)

r? @Manishearth
2019-07-12 12:04:25 +00:00
Felix S. Klock II
3c8279a224 Update docs to reflect review feedback. 2019-07-12 11:45:02 +02:00
Felix S. Klock II
e4b8af5d60 Regression test for issue 60431. 2019-07-12 11:45:02 +02:00
Felix S. Klock II
8f171c49ce Replace struct_tail and struct_lockstep_tails with variants handling normalization.
The old struct tail functions did not deal with `<T as Trait>::A` and `impl
Trait`, at least not explicitly. (We didn't notice this bug before because it
is only exposed when the tail (post deep normalization) is not `Sized`, so it
was a rare case to deal with.)

For post type-checking (i.e. during codegen), there is now
`struct_tail_erasing_lifetimes` and `struct_lockstep_tails_erasing_lifetimes`,
which each take an additional `ParamEnv` argument to drive normalization.

For pre type-checking cases where normalization is not needed, there is
`struct_tail_without_normalization`. (Currently, the only instance of this is
`Expectation::rvalue_hint`.)

All of these new entrypoints work by calling out to common helper routines.
The helpers are parameterized over a closure that handles the normalization.
2019-07-12 11:44:58 +02:00
Lzu Tao
b95e15e2e5 submodules: Update clippy from 316da7eb to b0290424 2019-07-12 09:30:07 +00:00
bors
cd1381e91f Auto merge of #62549 - ehuss:update-cargo-vendor, r=alexcrichton
Update cargo-vendor usage

This contains a variety of updates to clean up the usage of cargo-vendor.

- Remove the install step for the old cargo-vendor now that it is built-in to cargo and available in the stage0 install.
- Update installation instructions, dealing with vendoring. The current instructions of running `sudo ./x.py install` is broken, it will almost always fail (since the vendor directory doesn't exist). Since the steps for properly handling this are numerous, I'm recommending removing the suggestion to use `sudo` altogether.
- If the sudo-forced-vendoring detects that the vendor directory is not available, abort with instructions on how to fix.
- Now that cargo-vendor is built-in, automatically run it if it looks like it is needed.
- Update instructions on how to install cargo.
- Remove the unused markdown link references in README/CONTRIBUTING. This reverts most of #44935. These references don't do anything if they are unused.

Closes #49269
cc #61142 #48771 #40108
2019-07-12 08:35:46 +00:00
Delan Azabani
5f8d0a1920 test unsafe fn and async unsafe fn calls in unsafe { async || } 2019-07-12 15:10:52 +10:00
bors
1b1b538843 Auto merge of #61590 - matthewjasper:remove-borrowck-mir-dependency, r=pnkfelix
Remove rustc_mir dependency from rustc_borrowck

Also renames `rustc_borrowck` to `rustc_ast_borrowck` and removes all error reporting from it.

cc #59193
2019-07-12 04:56:05 +00:00
Delan Azabani
d023e47877 remove redundant async_closure test in async-await.rs 2019-07-12 14:50:13 +10:00
Delan Azabani
60f480dacb test E0133 when calling free/impl async unsafe fn in async fn 2019-07-12 14:44:50 +10:00
Delan Azabani
e65c1c44a2
remove unused #![feature(async_closure)]
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-07-12 14:42:44 +10:00
Delan Azabani
beb2435724 test unsafe fn and async unsafe fn calls in async in unsafe 2019-07-12 14:15:09 +10:00
Delan Azabani
0f66ce65db test E0133 when calling free/impl async unsafe fn in safe code 2019-07-12 13:59:17 +10:00
Delan Azabani
1574c2dee2 align async-await.rs and await-macro.rs with one another 2019-07-12 13:23:30 +10:00
Esteban Küber
cc481a46cb Correctly break out of recovery loop 2019-07-11 20:02:54 -07:00
Wesley Wiser
3622311d53 Only error about MSVC + PGO + unwind if we're generating code
When `rustc` is invoked with the `--print` argument, we don't actually
generate any code (unless it's the `native-static-libs` option). So we
don't need to error our in this case since there's no risk of generating
either LLVM assertions or corrupted binaries.
2019-07-11 21:52:21 -04:00
Wesley Wiser
374daa7985 Revert "Emit warning when trying to use PGO in conjunction with unwinding on Windows."
This reverts commit 74a39a39a4.
2019-07-11 21:50:00 -04:00
Wesley Wiser
aabaf12155 Fix leak when early returning out of box syntax
Fixes #62289
2019-07-11 20:12:19 -04:00
Esteban Küber
c9f7a3d206 Emit dropped unemitted errors to aid in ICE debugging 2019-07-11 16:59:19 -07:00
Esteban Küber
e1c7747cf0 Handle errors during error recovery gracefully 2019-07-11 16:54:33 -07:00
bors
e31911ef8f Auto merge of #62594 - JohnTitor:update-miri, r=RalfJung
Update miri

Fixes #62347

r? @RalfJung
2019-07-11 21:54:55 +00:00
Ralf Jung
608249703c move mem::uninitialized deprecation back by 1 release, to 1.39 2019-07-11 22:24:01 +02:00
Josh Stone
955979ab28 Make cold unwraps take &dyn Debug 2019-07-11 12:40:38 -07:00
Josh Stone
5a7e730935 Add Option::expect_none(msg) and unwrap_none()
These are `Option` analogues to `Result::expect_err` and `unwrap_err`.
2019-07-11 12:05:14 -07:00
Lzu Tao
8347917dd9 Remove feature gate dropck_parametricity completely
Therefore we also remove `#[unsafe_destructor_blind_to_params]`
attribute completly.
2019-07-11 18:44:56 +00:00
Nathan Goldbaum
d4fcbb4bdb document that crate refers to the project root 2019-07-11 14:25:53 -04:00
Lzu Tao
ab3adf380d Replace unsafe_destructor_blind_to_params with may_dangle 2019-07-11 18:14:56 +00:00
Matthew Jasper
34ddc70c3f Move rustc_borrowck -> rustc_ast_borrowck 2019-07-11 18:54:02 +01:00
Matthew Jasper
be085d7c0f Remove rustc_mir dependency from rustc_borrowck 2019-07-11 18:54:02 +01:00
Yuki Okushi
f8b620da75 Update miri 2019-07-12 02:43:19 +09:00
Eduard-Mihai Burtescu
e60c7ed0b0 rustc_codegen_ssa: try to make codegen_get_discr more readable. 2019-07-11 20:02:10 +03:00
bors
4bb6b4a5ed Auto merge of #62503 - pnkfelix:dont-recur-infiitely-from-print-def-path, r=eddyb
Dont recur infinitely from print_def_path

Fix #61711
2019-07-11 13:34:29 +00:00
bors
97b1128589 Auto merge of #62574 - petrochenkov:dcrate-40000, r=Mark-Simulacrum
pretty-print: Do not lose the `$crate` printing flag in `print_tt`

https://github.com/rust-lang/rust/pull/62393 had this accidental mistake.

Fixes https://github.com/rust-lang/rust/issues/62562
r? @Mark-Simulacrum
2019-07-11 10:05:09 +00:00
Vadim Petrochenkov
e38106599a Address review comments 2019-07-11 12:34:57 +03:00
Eduard-Mihai Burtescu
baa9efb178 rustc_mir: follow FalseUnwind's real_target edge in qualify_consts. 2019-07-11 12:28:02 +03:00
Vadim Petrochenkov
af26e7f4f4 pretty-print: Merge print_tts and print_tts_ext 2019-07-11 12:08:29 +03:00
Vadim Petrochenkov
da50d59881 pretty-print: Do not lose the $crate printing flag in print_tt 2019-07-11 12:07:35 +03:00
bors
69070058cd Auto merge of #62580 - Centril:rollup-remihe0, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #61665 (core: check for pointer equality when comparing Eq slices)
 - #61923 (Prerequisites from dep graph refactoring #2)
 - #62270 (Move async-await tests from run-pass to ui)
 - #62425 (filedesc: don't use ioctl(FIOCLEX) on Linux)
 - #62476 (Continue refactoring macro expansion and resolution)
 - #62519 (Regression test for HRTB bug (issue 30786).)
 - #62557 (Fix typo in libcore/intrinsics.rs)

Failed merges:

r? @ghost
2019-07-11 04:45:15 +00:00
Mazdak Farrokhzad
f9034ce8bc
Rollup merge of #62557 - taiki-e:typo, r=Centril
Fix typo in libcore/intrinsics.rs
2019-07-11 04:33:20 +02:00
Mazdak Farrokhzad
03c26f9b74
Rollup merge of #62519 - pnkfelix:add-test-for-30786, r=pnkfelix
Regression test for HRTB bug (issue 30786).

Close #30786.
2019-07-11 04:33:19 +02:00
Mazdak Farrokhzad
7697b2927f
Rollup merge of #62476 - petrochenkov:expref, r=matthewjasper
Continue refactoring macro expansion and resolution

This PR continues the work started in https://github.com/rust-lang/rust/pull/62042.
It contains a set of more or less related refactorings with the general goal of making things simpler and more orthogonal.
Along the way most of the issues uncovered in https://github.com/rust-lang/rust/pull/62086 are fixed.

The PR is better read in per-commit fashion with whitespace changes ignored.
I tried to leave some more detailed commit messages describing the motivation behind the individual changes.

Fixes https://github.com/rust-lang/rust/issues/44692
Fixes https://github.com/rust-lang/rust/issues/52363
Unblocks https://github.com/rust-lang/rust/pull/62086
r? @matthewjasper
2019-07-11 04:33:17 +02:00
Mazdak Farrokhzad
e07df9c9df
Rollup merge of #62425 - cyphar:linux-cloexec-use-fcntl, r=alexcrichton
filedesc: don't use ioctl(FIOCLEX) on Linux

All `ioctl(2)`s will fail on `O_PATH` file descriptors on Linux (because
they use `&empty_fops` as a security measure against `O_PATH` descriptors
affecting the backing file).

As a result, `File::try_clone()` and various other methods would always
fail with `-EBADF` on `O_PATH` file descriptors. The solution is to simply
use `F_SETFD` (as is used on other unices) which works on `O_PATH`
descriptors because it operates through the `fnctl(2)` layer and not
through `ioctl(2)`s.

Since this code is usually only used in strange error paths (a broken or
ancient kernel), the extra overhead of one syscall shouldn't cause any
dramas. Most other systems programming languages also use the fnctl(2)
so this brings us in line with them.

Fixes: rust-lang/rust#62314
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
2019-07-11 04:33:16 +02:00
Mazdak Farrokhzad
8fe7ed02d5
Rollup merge of #62270 - agnxy:move-async-test, r=Centril,tmandry
Move async-await tests from run-pass to ui

fix #62236

r? @Centril
2019-07-11 04:33:14 +02:00
Mazdak Farrokhzad
618fc02fac
Rollup merge of #61923 - Zoxc:dep-stream-prefix-2, r=pnkfelix
Prerequisites from dep graph refactoring #2

Split out from https://github.com/rust-lang/rust/pull/60035 and overlaps with https://github.com/rust-lang/rust/pull/60559.
2019-07-11 04:33:12 +02:00
Mazdak Farrokhzad
ea62f9b3ec
Rollup merge of #61665 - aschampion:slice-eq-ptr, r=sfackler
core: check for pointer equality when comparing Eq slices

Because `Eq` types must be reflexively equal, an equal-length slice to the same memory location must be equal.

This is related to #33892 (and #32699) answering this comment from that PR:

> Great! One more easy question: why does this optimization not apply in the non-BytewiseEquality implementation directly above?

Because slices of non-reflexively equal types (like `f64`) are not equal even if it's the same slice. But if the types are `Eq`, we can use this same-address optimization, which this PR implements. Obviously this changes behavior if types violate the reflexivity condition of `Eq`, because their impls of `PartialEq` will no longer be called per-item, but 🤷‍♂ .

It's not clear how often this optimization comes up in the real world outside of the same-`&str` case covered by #33892, so **I'm requesting a perf run** (on MacOS today, so can't run `rustc_perf` myself). I'm going ahead and making the PR on the basis of being surprised things didn't already work this way.

This is my first time hacking rust itself, so as a perf sanity check I ran `./x.py bench --stage 0 src/lib{std,alloc}`, but the differences were noisy.

To make the existing specialization for `BytewiseEquality` explicit, it's now a supertrait of `Eq + Copy`. `Eq` should be sufficient, but `Copy` was included for clarity.
2019-07-11 04:33:11 +02:00
Yuki Okushi
37942c4753 Add test for #49919 2019-07-11 09:58:09 +09:00