111005 Commits

Author SHA1 Message Date
Dylan DPC
f2fddd35af
Rollup merge of #71762 - tshepang:typo, r=jonas-schievink
doc: this resulted in a link pointing to a non-existent target
2020-05-01 23:16:40 +02:00
Dylan DPC
50f212e4d5
Rollup merge of #71761 - tshepang:missing-target, r=jonas-schievink
doc: reference does not exist, probably a typo
2020-05-01 23:16:38 +02:00
Dylan DPC
05b1991e76
Rollup merge of #71760 - LeSeulArtichaut:document-unsafety, r=Mark-Simulacrum
Document unsafety for `*const T` and `*mut T`

Helps with #66219
r? @Mark-Simulacrum
2020-05-01 23:16:36 +02:00
Dylan DPC
8aad12b87d
Rollup merge of #71758 - jackh726:chalk-remove, r=jackh726
Remove leftover chalk types

Split out from #69406

Since the other PR is having memory problems with `parallel-compiler = true`, figured I should split this out. Surprisingly, this actually changes some errors, and I'm not quite sure why.

r? @nikomatsakis
2020-05-01 23:16:35 +02:00
Dylan DPC
14c3ee906b
Rollup merge of #71018 - lcnr:custom-const-param, r=eddyb
handle ConstValue::ByRef in relate

fixes #68615

r? @eddyb
2020-05-01 23:16:32 +02:00
Jack Huey
ef0da3ba4e Remove leftover chalk types 2020-05-01 14:39:05 -04:00
Tshepang Lekhonkhobe
28f8586698 doc: this resulted in a link pointing to a non-existent target 2020-05-01 20:37:34 +02:00
Tshepang Lekhonkhobe
e0db42b32f doc: reference does not exist, probably a typo 2020-05-01 20:25:50 +02:00
bors
7f65393b9a Auto merge of #71759 - Dylan-DPC:rollup-5hncork, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #71744 (remove obsolete comment)
 - #71747 (Remove deadcode in eval_mir_constant_to_operand)
 - #71749 (fix Miri error message padding)
 - #71752 (make Stability doc a more readable (and fix rustdoc warning))
 - #71755 (fix doc reference)

Failed merges:

r? @ghost
2020-05-01 18:00:52 +00:00
LeSeulArtichaut
d61debac64 Document unsafety for *const T and *mut T 2020-05-01 19:49:56 +02:00
Dylan DPC
da42f6897e
Rollup merge of #71755 - tshepang:fix-comment, r=jonas-schievink
fix doc reference

Should of been in e0ce9f8c0a97e5949c9cadd220279d6969289daa,
but that had a typo.
2020-05-01 19:49:18 +02:00
Dylan DPC
2a3c2b335b
Rollup merge of #71752 - tshepang:more-readable, r=jonas-schievink
make Stability doc a more readable (and fix rustdoc warning)
2020-05-01 19:49:16 +02:00
Dylan DPC
8d9912ef49
Rollup merge of #71749 - RalfJung:miri-error-print, r=oli-obk
fix Miri error message padding

I screwed up in the previous PR, and accidentally padded with spaces instead of 0s...

r? @oli-obk
2020-05-01 19:49:14 +02:00
Dylan DPC
d83d8be65d
Rollup merge of #71747 - spastorino:safety-scheme-around-consts-cleanup, r=oli-obk
Remove deadcode in eval_mir_constant_to_operand

r? @oli-obk @RalfJung
2020-05-01 19:49:13 +02:00
Dylan DPC
54013532cd
Rollup merge of #71744 - tshepang:obsolete-comment, r=Dylan-DPC
remove obsolete comment

Referenced was removed in 8770d0f34a9bee2691517ab95803a277c453dfda
2020-05-01 19:49:11 +02:00
Tshepang Lekhonkhobe
5f4b7a4585 fix doc reference
Should of been in e0ce9f8c0a97e5949c9cadd220279d6969289daa,
but that had a typo.
2020-05-01 17:53:52 +02:00
Tshepang Lekhonkhobe
7a1a69911b make Stability docs a bit more readable, and fix some rustdoc warnings 2020-05-01 16:41:50 +02:00
Ralf Jung
1bab6a4db7 fix Miri error message padding 2020-05-01 14:39:41 +02:00
Santiago Pastorino
8bdf988be2
Remove deadcode in eval_mir_constant_to_operand 2020-05-01 09:30:55 -03:00
bors
a91d64873f Auto merge of #71742 - matthiaskrgr:submodule_upd, r=Dylan-DPC
submodules: update cargo from 90931d9b3 to 258c89644

Changes:
````
Remove unnecessary loop in `maybe_spurious`
Fix error with git repo discovery and symlinks.
Allow failure when setting file mtime.
Support multiple `--target` flags on the CLI
build-std: Don't treat std like a "local" package.
Allow `cargo package --list` even for things that don't package.
````

I'd like to get https://github.com/rust-lang/cargo/pull/8186 into nightly asap. :)

r? @ehuss
2020-05-01 12:18:41 +00:00
Tshepang Lekhonkhobe
6a681f5ca1 remove obsolete comments
Referenced was removed in 8770d0f34a9bee2691517ab95803a277c453dfda
2020-05-01 13:43:04 +02:00
Matthias Krüger
868d559699 submodules: update cargo from 90931d9b3 to 258c89644
Changes:
````
Remove unnecessary loop in `maybe_spurious`
Fix error with git repo discovery and symlinks.
Allow failure when setting file mtime.
Support multiple `--target` flags on the CLI
build-std: Don't treat std like a "local" package.
Allow `cargo package --list` even for things that don't package.
````
2020-05-01 13:04:03 +02:00
bors
fd61d06772 Auto merge of #71704 - RalfJung:miri-error-print, r=oli-obk
Miri: tweak error print

I started by adjusting the "invalid use of int as pointer" message (it wasn't really clear what is invalid about the use). But then I realized that these are all `Debug` impls we use for these errors, for some reason, so I fixed that to use `Display` instead.

~~This includes https://github.com/rust-lang/rust/pull/71590 (to get the `Display` impl for `Pointer`), so the diff will look better once that finally lands. Here's the [relative diff](e72ebf5119...RalfJung:miri-error-print).~~

r? @oli-obk
2020-05-01 09:15:12 +00:00
Ralf Jung
cce0cb3c39 use hex for invalid bool and char (consistently with validation) 2020-05-01 10:56:17 +02:00
Ralf Jung
707bd7b213 rename InvalidIntPtrUsage 2020-05-01 10:50:04 +02:00
Ralf Jung
2feeb88b62 bless you 2020-05-01 10:50:04 +02:00
Ralf Jung
f94899565b InterpError printing really is more Display than Debug
also tweak InvalidDiscriminant message
2020-05-01 10:50:04 +02:00
Ralf Jung
671bc08ea8 tweak InvalidIntPointerUsage message 2020-05-01 10:50:04 +02:00
bors
bd0bacc694 Auto merge of #71623 - petrochenkov:localink, r=estebank
Disable localization for all linkers

We previously disabled non-English output from `link.exe` due to encoding issues (#35785).

In https://github.com/rust-lang/rust/pull/70740 it was pointed out that it also prevents correct inspection of the linker output, which we have to do occasionally.

So this PR disables localization for all linkers.
2020-05-01 04:43:28 +00:00
bors
e94eaa6dce Auto merge of #70674 - cjgillot:query-arena-all, r=matthewjasper
Have the per-query caches store the results on arenas

This PR leverages the cache for each query to serve as storage area for the query results.

It introduces a new cache `ArenaCache`, which moves the result to an arena,
and only stores the reference in the hash map.
This allows to remove a sizeable part of the usage of the global `TyCtxt` arena.

I only migrated queries that already used arenas before.
2020-05-01 01:38:05 +00:00
bors
614f273e93 Auto merge of #71721 - tmandry:rollup-e27pxex, r=tmandry
Rollup of 8 pull requests

Successful merges:

 - #71148 (Vec drop and truncate: drop using raw slice *mut [T])
 - #71465 (Add a convenience method on `TyCtxt` for checking for thread locals)
 - #71567 (Handle build completion message from Cargo)
 - #71590 (MIR dump: print pointers consistently with Miri output)
 - #71682 (Bump pulldown-cmark)
 - #71688 (Allow `Downcast` projections unconditionally in const-checking)
 - #71691 (Allow `Unreachable` terminators unconditionally in const-checking)
 - #71719 (Update backtrace-sys)

Failed merges:

r? @ghost
2020-04-30 22:24:24 +00:00
Tyler Mandry
59abc2afd8
Rollup merge of #71719 - tmandry:update-backtrace-sys, r=Mark-Simulacrum
Update backtrace-sys

Diff:

- Don't look for old RUSTC_DEBUGINFO vars (rust-lang/backtrace-rs#313)

This fixes an issue of libbacktrace never being built with debuginfo.

r? @Mark-Simulacrum
cc @alexcrichton
2020-04-30 15:23:20 -07:00
Tyler Mandry
1b62bb67da
Rollup merge of #71691 - ecstatic-morse:const-unreachable, r=oli-obk,RalfJung
Allow `Unreachable` terminators unconditionally in const-checking

If we ever actually reach an `Unreachable` terminator while executing, the MIR is ill-formed or the user's program is UB due to something like `unreachable_unchecked`. I don't think we need to forbid these in `qualify_min_const_fn`.

r? @oli-obk
2020-04-30 15:23:19 -07:00
Tyler Mandry
a8e0511b32
Rollup merge of #71688 - ecstatic-morse:const-downcast, r=oli-obk
Allow `Downcast` projections unconditionally in const-checking

`ProjectionElem::Downcast` sounds scary, but it's really just the projection we use to access a particular enum variant. They usually appear in the lowering of a `match` statement, so they have been associated with control flow in const-checking, but they don't do any control flow by themselves. We already have a HIR pass that looks for `if` and `match` (even ones that have 1 or fewer reachable branches). That pass is double-checked by a MIR pass that looks for `SwitchInt`s and `FakeRead`s for match scrutinees. In my opinion, there's no need to look for `Downcast` as well.

r? @oli-obk
2020-04-30 15:23:17 -07:00
Tyler Mandry
8192cb6ea3
Rollup merge of #71682 - ehuss:bump-pulldown-cmark, r=Dylan-DPC
Bump pulldown-cmark

Pulls in 0.7.1 with the following fixes:

- Update html5ever to 0.25
- Fix hang on unclosed html element

Closes #70871
2020-04-30 15:23:15 -07:00
Tyler Mandry
3c75f70170
Rollup merge of #71590 - RalfJung:mir-dump-pointers, r=oli-obk
MIR dump: print pointers consistently with Miri output

This makes MIR allocation dump pointer printing consistent with Miri output: both use hexadecimal offsets with a `0x` prefix. To save some space, MIR dump replaces the `alloc` prefix by `a` when necessary.

I also made AllocId/Pointer printing more consistent in their Debug/Display handling, and adjusted Display printing for Scalar a bit to avoid using decimal printing when we do not know the sign with which to interpret the value (IMO using decimal then is misleading).
2020-04-30 15:23:13 -07:00
Tyler Mandry
01fffff677
Rollup merge of #71567 - Mark-Simulacrum:no-success, r=matthiaskrgr
Handle build completion message from Cargo

This was introduced in the recent bump to 1.44 bootstrap cargo

Fixes #71561.
2020-04-30 15:23:12 -07:00
Tyler Mandry
94433a60fb
Rollup merge of #71465 - oli-obk:is_thread_local_cleanup, r=matthewjasper
Add a convenience method on `TyCtxt` for checking for thread locals

This PR extracts the cleanup part of #71192

r? @bjorn3
2020-04-30 15:23:10 -07:00
Tyler Mandry
4adebb9f29
Rollup merge of #71148 - bluss:vec-drop-raw-slice, r=RalfJung
Vec drop and truncate: drop using raw slice *mut [T]

By creating a *mut [T] directly (without going through &mut [T]), avoid
questions of validity of the contents of the slice.

Consider the following risky code:

```rust
unsafe {
    let mut v = Vec::<bool>::with_capacity(16);
    v.set_len(16);
}
```

The intention is that with this change, we avoid one of the soundness
questions about the above snippet, because Vec::drop no longer
produces a mutable slice of the vector's contents.

r? @RalfJung
2020-04-30 15:23:08 -07:00
Tyler Mandry
2bafb1b1d7 Update backtrace-sys
Diff:

- Don't look for old RUSTC_DEBUGINFO vars (rust-lang/backtrace-rs#313)
2020-04-30 12:32:53 -07:00
bors
7ced01a730 Auto merge of #71717 - Dylan-DPC:rollup-av5vjor, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #70950 (extend NLL checker to understand `'empty` combined with universes)
 - #71433 (Add help message for missing right operand in condition)
 - #71449 (Move `{Free,}RegionRelations` and `FreeRegionMap` to `rustc_infer`)
 - #71559 (Detect git version before attempting to use --progress)
 - #71597 (Rename Unique::empty() -> Unique::dangling())

Failed merges:

r? @ghost
2020-04-30 19:01:01 +00:00
Dylan DPC
97a8870022
Rollup merge of #71597 - CohenArthur:refactor-unique-empty, r=shepmaster
Rename Unique::empty() -> Unique::dangling()

A `FIXME` comment in `src/libcore/ptr/unique.rs` suggested refactoring `Unique::empty()` to `Unique::dangling()` which this PR does.
2020-04-30 20:15:28 +02:00
Dylan DPC
2770f820aa
Rollup merge of #71559 - dillona:detect_git_progress_version, r=Mark-Simulacrum
Detect git version before attempting to use --progress

Otherwise each update is run twice and errors are printed

I've tested this with:
git version 2.8.2.windows.1 (Windows)
git version 2.26.2.266.ge870325ee8 (Linux built from source)
git version 2.17.1 (Linux)
git version 2.21.1 (Apple Git-122.3) (MacOS)

I've tested with Python 2.7 (Windows, Linux, MacOS), 3.6 (Linux), and 3.7 (MacOS)
2020-04-30 20:15:26 +02:00
Dylan DPC
5e53f80d6e
Rollup merge of #71449 - ecstatic-morse:free-region-cleanup, r=Mark-Simulacrum
Move `{Free,}RegionRelations` and `FreeRegionMap` to `rustc_infer`

...and out of `rustc_middle`. This is to further #65031, albeit in a very minor way

r? @Mark-Simulacrum
2020-04-30 20:15:24 +02:00
Dylan DPC
be3faf3f30
Rollup merge of #71433 - antoyo:error/missing-right-operand, r=Dylan-DPC
Add help message for missing right operand in condition

closes #30035
2020-04-30 20:15:22 +02:00
Dylan DPC
09f3c908bb
Rollup merge of #70950 - nikomatsakis:leak-check-nll-2, r=matthewjasper
extend NLL checker to understand `'empty` combined with universes

This PR extends the NLL region checker to understand `'empty` combined with universes. In particular, it means that the NLL region checker no longer considers `exists<R2> { forall<R1> { R1: R2 } }` to be provable. This is work towards https://github.com/rust-lang/rust/issues/59490, but we're not all the way there. One thing in particular it does not address is error messages.

The modifications to the NLL region inference code turned out to be simpler than expected. The main change is to require that if `R1: R2` then `universe(R1) <= universe(R2)`.

This constraint follows from the region lattice (shown below), because we assume then that `R2` is "at least" `empty(Universe(R2))`, and hence if `R1: R2` (i.e., `R1 >= R2` on the lattice) then `R1` must be in some universe that can name `'empty(Universe(R2))`, which requires that `Universe(R1) <= Universe(R2)`.

```
static ----------+-----...------+       (greatest)
|                |              |
early-bound and  |              |
free regions     |              |
|                |              |
scope regions    |              |
|                |              |
empty(root)   placeholder(U1)   |
|            /                  |
|           /         placeholder(Un)
empty(U1) --         /
|                   /
...                /
|                 /
empty(Un) --------                      (smallest)
```

I also made what turned out to be a somewhat unrelated change to add a special region to represent `'empty(U0)`, which we use (somewhat hackily) to indicate well-formedness checks in some parts of the compiler. This fixes #68550.

I did some investigation into fixing the error message situation. That's a bit trickier: the existing "nice region error" code around placeholders relies on having better error tracing than NLL currently provides, so that it knows (e.g.) that the constraint arose from applying a trait impl and things like that. I feel like I was hoping *not* to do such fine-grained tracing in NLL, and it seems like we...largely...got away with that. I'm not sure yet if we'll have to add more tracing information or if there is some sort of alternative.

It's worth pointing out though that I've not kind of shifted my opinion on whose job it should be to enforce lifetimes: I tend to think we ought to be moving back towards *something like* the leak-check (just not the one we *had*). If we took that approach, it would actually resolve this aspect of the error message problem, because we would be resolving 'higher-ranked errors' in the trait solver itself, and hence we wouldn't have to thread as much causal information back to the region checker. I think it would also help us with removing the leak check while not breaking some of the existing crates out there.

Regardless, I think it's worth landing this change, because it was relatively simple and it aligns the set of programs that NLL accepts with those that are accepted by the main region checker, and hence should at least *help* us in migration (though I guess we still also have to resolve the existing crates that rely on leak check for coherence).

r? @matthewjasper
2020-04-30 20:15:20 +02:00
Bastian Kauschke
a08bccb3c1 handle ByRef in relate 2020-04-30 17:44:24 +02:00
Bastian Kauschke
01b3637f6e coerce documentation 2020-04-30 17:44:24 +02:00
bors
be8589fc31 Auto merge of #71675 - pietroalbini:ci-fix-shrink-regression, r=Mark-Simulacrum
ci: use bash when executing the "bors build finished" jobs

We don't clone the repository in those builders, so the default shell (`src/ci/exec-with-shell.py`) is not present there. This fixes a GHA regression introduced in #71434.

r? @Mark-Simulacrum
2020-04-30 15:35:16 +00:00
Oliver Scherer
8079dd8afe A test now fails during check instead of build 2020-04-30 17:27:33 +02:00