]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoAuto merge of #62748 - luca-barbieri:optimize-refcell-borrow, r=RalfJung
bors [Sat, 27 Jul 2019 09:32:44 +0000 (09:32 +0000)]
Auto merge of #62748 - luca-barbieri:optimize-refcell-borrow, r=RalfJung

Optimize RefCell read borrowing

Instead of doing two comparisons we can do only one with a bit of cleverness.

LLVM currently can't do this optimization itself on x86-64.

4 years agoAuto merge of #62086 - petrochenkov:builtout, r=eddyb
bors [Fri, 26 Jul 2019 23:29:02 +0000 (23:29 +0000)]
Auto merge of #62086 - petrochenkov:builtout, r=eddyb

Define built-in macros through libcore

This PR defines built-in macros through libcore using a scheme similar to lang items (attribute `#[rustc_builtin_macro]`).
All the macro properties (stability, visibility, etc.) are taken from the source code in libcore, with exception of the expander function transforming input tokens/AST into output tokens/AST, which is still provided by the compiler.

The macros are made available to user code through the standard library prelude (`{core,std}::prelude::v1`), so they are still always in scope.
As a result **built-in macros now have stable absolute addresses in the library**, like `core::prelude::v1::line!()`, this is an insta-stable change.

Right now `prelude::v1` is the only publicly available absolute address for these macros, but eventually they can be moved into more appropriate locations with library team approval (e.g. `Clone` derive -> `core::clone::Clone`).

Now when built-in macros have canonical definitions they can be imported or reexported without issues (https://github.com/rust-lang/rust/issues/61687).

Other changes:
- You can now define a derive macro with a name matching one of the built-in derives (https://github.com/rust-lang/rust/issues/52269). This was an artificial restriction that could be worked around with import renaming anyway.

Known regressions:
- Empty library crate with a crate-level `#![test]` attribute no longer compiles without `--test`. Previously it didn't compile *with* `--test` or with the bin crate type.

Fixes https://github.com/rust-lang/rust/issues/61687
Fixes https://github.com/rust-lang/rust/issues/61804
r? @eddyb

4 years agoAuto merge of #63015 - Centril:rollup-ydhpcas, r=Centril
bors [Fri, 26 Jul 2019 16:57:54 +0000 (16:57 +0000)]
Auto merge of #63015 - Centril:rollup-ydhpcas, r=Centril

Rollup of 22 pull requests

Successful merges:

 - #62084 (allow clippy::unreadable_literal in unicode tables)
 - #62120 (Add missing type links in documentation)
 - #62310 (Add missing doc links in boxed module)
 - #62421 (Introduce `as_deref` to Option)
 - #62583 (Implement Unpin for all raw pointers)
 - #62692 (rustc: precompute the largest Niche and store it in LayoutDetails.)
 - #62801 (Remove support for -Zlower-128bit-ops)
 - #62828 (Remove vector fadd/fmul reduction workarounds)
 - #62862 (code cleanup)
 - #62904 (Disable d32 on armv6 hf targets)
 - #62907 (Initialize the MSP430 AsmParser)
 - #62956 (Implement slow-path for FirstSets::first)
 - #62963 (Allow lexer to recover from some homoglyphs)
 - #62964 (clarify and unify some type test names)
 - #62970 (ci: gate toolstate repo pushes on the TOOLSTATE_PUBLISH envvar)
 - #62980 (std: Add more accessors for `Metadata` on Windows)
 - #62983 (Remove needless indirection through Rc)
 - #62985 (librustc_errors: Support ui-testing flag in annotate-snippet emitter)
 - #63002 (error_index_generator should output stdout/stderr when it panics.)
 - #63004 (Add test for issue-54062)
 - #63007 (ci: debug network failures while downloading awscli from PyPI)
 - #63009 (Remove redundant `mut` from variable declaration.)

Failed merges:

r? @ghost

4 years agoRollup merge of #63009 - Rosto75:master, r=matklad
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:57:08 +0000 (18:57 +0200)]
Rollup merge of #63009 - Rosto75:master, r=matklad

Remove redundant `mut` from variable declaration.

4 years agoRollup merge of #63007 - pietroalbini:debug-awscli-install, r=Mark-Simulacrum
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:57:06 +0000 (18:57 +0200)]
Rollup merge of #63007 - pietroalbini:debug-awscli-install, r=Mark-Simulacrum

ci: debug network failures while downloading awscli from PyPI

This adds some random debug code to our CI script while downloading awscli, to *hopefully* pinpoint what's causing the network failures.

r? @Mark-Simulacrum
cc #62967

4 years agoRollup merge of #63004 - JohnTitor:add-tests-for-54062, r=Centril
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:57:05 +0000 (18:57 +0200)]
Rollup merge of #63004 - JohnTitor:add-tests-for-54062, r=Centril

Add test for issue-54062

The ICE is no longer reproduced.

Closes #54062

4 years agoRollup merge of #63002 - gilescope:better-build-diagnostics, r=Mark-Simulacrum
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:57:03 +0000 (18:57 +0200)]
Rollup merge of #63002 - gilescope:better-build-diagnostics, r=Mark-Simulacrum

error_index_generator should output stdout/stderr when it panics.

**bootstrap change**

Call error_index_generator tool using run_quiet which will additionally print std out and std err of the command when it returns an error.
(was `run` uses `run_silent` under the covers.)

Why: PR #62871 is hitting a build error but the panic isn't getting shown so its unclear what the problem is.

4 years agoRollup merge of #62985 - phansch:support_ui_testing_flag, r=estebank
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:57:01 +0000 (18:57 +0200)]
Rollup merge of #62985 - phansch:support_ui_testing_flag, r=estebank

librustc_errors: Support ui-testing flag in annotate-snippet emitter

This adds support for the `-Z ui-testing` flag to the new
annotate-snippet diagnostic emitter.

Support for the flag was added to `annotate-snippet-rs` in these PRs:

* https://github.com/rust-lang/annotate-snippets-rs/pull/3
* https://github.com/rust-lang/annotate-snippets-rs/pull/5

r? @estebank

Closes #61811

4 years agoRollup merge of #62983 - Mark-Simulacrum:remove-needless-rc, r=petrochenkov
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:59 +0000 (18:56 +0200)]
Rollup merge of #62983 - Mark-Simulacrum:remove-needless-rc, r=petrochenkov

Remove needless indirection through Rc

NamedMatch is already cheap to clone due to Lrc's inside.

4 years agoRollup merge of #62980 - alexcrichton:windows-metadata, r=sfackler
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:58 +0000 (18:56 +0200)]
Rollup merge of #62980 - alexcrichton:windows-metadata, r=sfackler

std: Add more accessors for `Metadata` on Windows

This commit adds accessors for more fields in `fs::Metadata` on Windows
which weren't previously exposed. There's two sources of `fs::Metadata`
on Windows currently, one from `DirEntry` and one from a file itself.
These two sources of information don't actually have the same set of
fields exposed in their stat information, however. To handle this the
platform-specific accessors of Windows-specific information all return
`Option` to return `None` in the case a metadata comes from a
`DirEntry`, but they're guaranteed to return `Some` if it comes from a
file itself.

This is motivated by some changes in CraneStation/wasi-common#42, and
I'm curious how others feel about this platform-specific functionality!

4 years agoRollup merge of #62970 - pietroalbini:fix-tools-builder, r=alexcrichton
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:56 +0000 (18:56 +0200)]
Rollup merge of #62970 - pietroalbini:fix-tools-builder, r=alexcrichton

ci: gate toolstate repo pushes on the TOOLSTATE_PUBLISH envvar

This PR fixes toolstate failing to push on the LinuxTools PR builder by gating the pushes on the new `TOOLSTATE_PUBLISH` environment variable, which is set on prod credentials but not on the PR ones. The old code checked whether the access token was set, but that doesn't work due to an Azure quirk.

For a bit of background, secret environment variables are not available by default, but each step needs to explicitly declare which secret vars to load:

```yaml
- bash: echo foo
  env:
    SECRET_VAR: $(SECRET_VAR)
```

This works fine when the variable is present but when it's missing, instead of setting `SECRET_VAR` to an empty string or just not setting it at all, Azure Pipelines puts the literal `$(SECRET_VAR)` as the content, which completly breaks the old check we had. I tried almost every thing to make this work in a sensible way, and the only conclusion I reached is to set the variable at the top level with the runtime expression evaluation syntax, which sets the variable to an empty string if missing:

```yaml
# At the top:
variables:
  - name: MAYBE_SECRET_VAR
    value: $[ variables.MAYBE_SECRET_VAR ]

# In the step:
- bash: echo foo
  env:
    SECRET_VAR: $(MAYBE_SECRET_VAR)
```

While that *could've worked* it was ugly and messy, so I just opted to add yet another non-secret variable.

r? @alexcrichton
fixes #62811

4 years agoRollup merge of #62964 - RalfJung:ty-tests, r=Centril
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:55 +0000 (18:56 +0200)]
Rollup merge of #62964 - RalfJung:ty-tests, r=Centril

clarify and unify some type test names

* `is_mutable_pointer`: use `ptr` suffix for consistency with `is_region_ptr`, `is_fn_ptr`, `is_unsafe_ptr`.
* `is_pointer_sized`: the name is misleading as this only tests for pointer-sized *integers*, so rename to `is_ptr_sized_integral`.

4 years agoRollup merge of #62963 - estebank:homoglyph-recovery, r=petrochenkov
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:53 +0000 (18:56 +0200)]
Rollup merge of #62963 - estebank:homoglyph-recovery, r=petrochenkov

Allow lexer to recover from some homoglyphs

4 years agoRollup merge of #62956 - ia0:fix_62831, r=petrochenkov
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:52 +0000 (18:56 +0200)]
Rollup merge of #62956 - ia0:fix_62831, r=petrochenkov

Implement slow-path for FirstSets::first

When 2 or more sequences share the same span, we can't use the precomputed map
for their first set. So we compute it recursively.

Fixes #62831.

4 years agoRollup merge of #62907 - nikic:msp430-asmparser, r=alexcrichton
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:50 +0000 (18:56 +0200)]
Rollup merge of #62907 - nikic:msp430-asmparser, r=alexcrichton

Initialize the MSP430 AsmParser

Hopefully fixes #59077.

r? @alexcrichton

4 years agoRollup merge of #62904 - nikic:arm-d32, r=alexcrichton
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:48 +0000 (18:56 +0200)]
Rollup merge of #62904 - nikic:arm-d32, r=alexcrichton

Disable d32 on armv6 hf targets

We already do this on armv7 targets. It seems that this now gets enabled by default if '+vfp2` is specified, so disable it explicitly.

Hopefully fixes #62841.

r? @alexcrichton

4 years agoRollup merge of #62862 - BaoshanPang:cleanup, r=alexcrichton
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:47 +0000 (18:56 +0200)]
Rollup merge of #62862 - BaoshanPang:cleanup, r=alexcrichton

code cleanup

remove all codes that are not used by vxWorks

4 years agoRollup merge of #62828 - nikic:fadd-mul-reductions, r=eddyb
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:45 +0000 (18:56 +0200)]
Rollup merge of #62828 - nikic:fadd-mul-reductions, r=eddyb

Remove vector fadd/fmul reduction workarounds

The bugs that this was working around have been fixed in LLVM 9.

r? @gnzlbg

4 years agoRollup merge of #62801 - bjorn3:remove_lower_128bit_ops, r=alexcrichton
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:43 +0000 (18:56 +0200)]
Rollup merge of #62801 - bjorn3:remove_lower_128bit_ops, r=alexcrichton

Remove support for -Zlower-128bit-ops

It is broken and unused

cc https://github.com/rust-lang/rust/issues/58969

blocked https://github.com/rust-lang-nursery/compiler-builtins/pull/302 (removes definitions of the lang items removed in this PR)

r? @alexcrichton

4 years agoRollup merge of #62692 - eddyb:precompute-niches, r=oli-obk
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:41 +0000 (18:56 +0200)]
Rollup merge of #62692 - eddyb:precompute-niches, r=oli-obk

rustc: precompute the largest Niche and store it in LayoutDetails.

Since we only ever can use at most one niche, it makes sense to just store that in the layout, for the simplest caching (especially as it's almost trivial to compute).

There might be a speedup from this, but even if it's marginal now, the caching would be a more significant benefit for future optimization attempts.

4 years agoRollup merge of #62583 - sfackler:unpin-raw, r=cramertj
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:40 +0000 (18:56 +0200)]
Rollup merge of #62583 - sfackler:unpin-raw, r=cramertj

Implement Unpin for all raw pointers

Like references and boxes, moving the pointer doesn't move the
pointed-to value, so this is safe.

r? @cramertj

4 years agoRollup merge of #62421 - JohnTitor:U007D-master, r=alexcrichton
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:38 +0000 (18:56 +0200)]
Rollup merge of #62421 - JohnTitor:U007D-master, r=alexcrichton

Introduce `as_deref` to Option

This is re-submission for #59628.
Renames `deref()` to `as_deref()` and adds `deref_mut()` impls and tests.

CC #50264

r? @Kimundi
(I picked you as you're the previous reviewer.)

4 years agoRollup merge of #62310 - GuillaumeGomez:add-missing-doc-links-boxed, r=Centril
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:36 +0000 (18:56 +0200)]
Rollup merge of #62310 - GuillaumeGomez:add-missing-doc-links-boxed, r=Centril

Add missing doc links in boxed module

r? @rust-lang/docs

4 years agoRollup merge of #62120 - GuillaumeGomez:add-missing-type-links, r=Centril
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:34 +0000 (18:56 +0200)]
Rollup merge of #62120 - GuillaumeGomez:add-missing-type-links, r=Centril

Add missing type links in documentation

r? @rust-lang/docs

4 years agoRollup merge of #62084 - euclio:unicode-table-tweak, r=kennytm
Mazdak Farrokhzad [Fri, 26 Jul 2019 16:56:33 +0000 (18:56 +0200)]
Rollup merge of #62084 - euclio:unicode-table-tweak, r=kennytm

allow clippy::unreadable_literal in unicode tables

Also modifies the generation script to emit 2018 edition paths.

4 years agoci: add debug checks for pypi network outages
Pietro Albini [Fri, 26 Jul 2019 11:10:44 +0000 (13:10 +0200)]
ci: add debug checks for pypi network outages

4 years agostd: Add more accessors for `Metadata` on Windows
Alex Crichton [Thu, 25 Jul 2019 16:44:04 +0000 (09:44 -0700)]
std: Add more accessors for `Metadata` on Windows

This commit adds accessors for more fields in `fs::Metadata` on Windows
which weren't previously exposed. There's two sources of `fs::Metadata`
on Windows currently, one from `DirEntry` and one from a file itself.
These two sources of information don't actually have the same set of
fields exposed in their stat information, however. To handle this the
platform-specific accessors of Windows-specific information all return
`Option` to return `None` in the case a metadata comes from a
`DirEntry`, but they're guaranteed to return `Some` if it comes from a
file itself.

This is motivated by some changes in CraneStation/wasi-common#42, and
I'm curious how others feel about this platform-specific functionality!

4 years agoRemove redundant `mut` from variable declaration.
Tomasz Różański [Fri, 26 Jul 2019 13:04:51 +0000 (15:04 +0200)]
Remove redundant `mut` from variable declaration.

4 years agoIntroduce built-in macros through libcore
Vadim Petrochenkov [Thu, 20 Jun 2019 08:52:31 +0000 (11:52 +0300)]
Introduce built-in macros through libcore

4 years agoAuto merge of #62914 - ehuss:update-cargo, r=alexcrichton
bors [Fri, 26 Jul 2019 08:57:13 +0000 (08:57 +0000)]
Auto merge of #62914 - ehuss:update-cargo, r=alexcrichton

Update cargo

11 commits in e3563dbdcd2e370bc4f11d080f739d82d25773fd..d0f828419d6ce6be21a90866964f58eb2c07cd56
2019-07-16 19:22:44 +0000 to 2019-07-23 21:58:59 +0000
- Remove include/exclude glob warning. (rust-lang/cargo#7170)
- Optimize lock file format for git merge conflicts (rust-lang/cargo#7070)
- Set up CI with Azure Pipelines (rust-lang/cargo#7139)
- Force clippy to run. (rust-lang/cargo#7157)
- Work around rust-lang/rust#61440 (rust-lang/cargo#7158)
- initial working version of cargo fix --clippy (rust-lang/cargo#7069)
- Optimize runtime of `#[cargo_test_macro]` (rust-lang/cargo#7146)
- Don't fail if we can't acquire readonly lock (rust-lang/cargo#7149)
- Add support for multiple --features options (rust-lang/cargo#7084)
- Fix a typo in an env var name (rust-lang/cargo#7145)
- Add a way to disable all nightly tests (rust-lang/cargo#7142)

4 years agoAdd test for issue-54062
Yuki Okushi [Fri, 26 Jul 2019 08:39:58 +0000 (17:39 +0900)]
Add test for issue-54062

4 years agoclarify and unify some type test names
Ralf Jung [Wed, 24 Jul 2019 22:57:33 +0000 (00:57 +0200)]
clarify and unify some type test names

4 years ago`run_quiet` outputs stdout/stderr when things go wrong.
Giles Cope [Thu, 25 Jul 2019 23:05:30 +0000 (00:05 +0100)]
`run_quiet` outputs stdout/stderr when things go wrong.
(was `run` uses `run_silent` under the covers.)

4 years agoUpdate cargo
Eric Huss [Tue, 23 Jul 2019 22:41:25 +0000 (15:41 -0700)]
Update cargo

4 years agoAuto merge of #60260 - videolabs:rust_uwp2, r=alexcrichton
bors [Fri, 26 Jul 2019 02:18:12 +0000 (02:18 +0000)]
Auto merge of #60260 - videolabs:rust_uwp2, r=alexcrichton

Add support for UWP targets

Hi,

This pull request aims at adding support for UWP (Universal Windows Apps) platform.
A few notes:
- This requires a very recent mingw-w64 version (containing this commit and the previous related ones: https://github.com/mirror/mingw-w64/commit/e8c433c871687a78408ae9b40ab7776577db908d#diff-eefdfbfe9cec5f4ebab88c9a64d423a9)
- This was tested using LLVM/clang rather than gcc, and so far it assumes that LLVM/clang will be the native compiler. This is mostly due to the fact that the support for exceptions/stack unwinding for UWP got much more attention in libunwind
- The "uwp" part of the target needs support for it in the `cc-rs` & `backtrace-rs` crates. I'll create the MR there right after I submit this one and will link everything together, but I'm not sure what's the correct way of dealing with external dependencies in the context of rust
- Enabling import libraries and copying them across stages requires a change in cargo, for which I'll open a MR right after I submit this one as well
- The i686 stack unwinding is unsupported for now, because LLVM assumes SjLj, while rust seems to assume SEH will be used. I'm unsure how to fix this

Also, this is my first encounter with rust, so please bear with my code, it might not feel so idiomatic or even correct :)

I'm pretty sure there's a way of doing things in a cleaner way when it comes to win/c.rs, maybe having a UWP & desktop specific modules, and import those conditionally? It doesn't feel right to sprinkle `#[cfg(...)]` all over the place

Off course, I'll gladly update anything you see fit (to the extent of my abilities/knowledge :) )!

Thanks,

4 years agoAuto merge of #62990 - Centril:rollup-k9n0hvs, r=Centril
bors [Thu, 25 Jul 2019 22:34:23 +0000 (22:34 +0000)]
Auto merge of #62990 - Centril:rollup-k9n0hvs, r=Centril

Rollup of 15 pull requests

Successful merges:

 - #60066 (Stabilize the type_name intrinsic in core::any)
 - #60938 (rustdoc: make #[doc(include)] relative to the containing file)
 - #61884 (Stablize Euclidean Modulo (feature euclidean_division))
 - #61890 (Fix some sanity checks)
 - #62528 (Add joining slices of slices with a slice separator, not just a single item)
 - #62707 (Add tests for overlapping explicitly dropped locals in generators)
 - #62735 (Turn `#[global_allocator]` into a regular attribute macro)
 - #62822 (Improve some pointer-related documentation)
 - #62887 (Make the parser TokenStream more resilient after mismatched delimiter recovery)
 - #62921 (Add method disambiguation help for trait implementation)
 - #62930 (Add test for #51559)
 - #62942 (Use match ergonomics in Condvar documentation)
 - #62977 (Fix inconsistent highlight blocks.)
 - #62978 (Remove `cfg(bootstrap)` code for array implementations)
 - #62981 (Add note suggesting to borrow a String argument to find)

Failed merges:

 - #62964 (clarify and unify some type test names)

r? @ghost

4 years agoImplement slow-path for FirstSets::first
Julien Cretin [Wed, 24 Jul 2019 21:32:26 +0000 (23:32 +0200)]
Implement slow-path for FirstSets::first

When 2 or more sequences share the same span, we can't use the precomputed map
for their first set. So we compute it recursively.

Fixes #62831.

4 years agoRollup merge of #62981 - estebank:issue-62843, r=Centril
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:21:13 +0000 (23:21 +0200)]
Rollup merge of #62981 - estebank:issue-62843, r=Centril

Add note suggesting to borrow a String argument to find

Fix #62843.

4 years agoRollup merge of #62978 - LukasKalbertodt:remove-array-impl-bootstrap-cfg, r=Mark...
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:21:11 +0000 (23:21 +0200)]
Rollup merge of #62978 - LukasKalbertodt:remove-array-impl-bootstrap-cfg, r=Mark-Simulacrum

Remove `cfg(bootstrap)` code for array implementations

In https://github.com/rust-lang/rust/pull/62435 ("Use const generics for array impls [part 1]") the old macro-based implementations were not removed but still used with `cfg(bootstrap)` since the bootstrap compiler had some problems with const generics at the time. This does not seem to be the case anymore, so there is no reason to keep the old code.

Unfortunately, the diff is pretty ugly because much of the code was indented by one level before. The change is pretty trivial, though.

PS: I did not run the full test suite locally. There are 40°C outside and 31°C inside my room. I don't want my notebook to melt. I hope that CI is green.

r? @scottmcm

4 years agoRollup merge of #62977 - Rosto75:master, r=shepmaster
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:21:09 +0000 (23:21 +0200)]
Rollup merge of #62977 - Rosto75:master, r=shepmaster

Fix inconsistent highlight blocks.

4 years agoRollup merge of #62942 - KevinWMatthews:condvar_docs_match_ergo, r=sfackler
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:21:07 +0000 (23:21 +0200)]
Rollup merge of #62942 - KevinWMatthews:condvar_docs_match_ergo, r=sfackler

Use match ergonomics in Condvar documentation

Documentation was written before match ergonomics was merged. See #62857.

In short, replaces

```rust
let &(ref lock, ref cvar) = &*pair;
```

with

```rust
let (lock, cvar) = &*pair
```

in the docs of `std::sync::Condvar`.

4 years agoRollup merge of #62930 - iluuu1994:test-for-51559, r=oli-obk
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:21:06 +0000 (23:21 +0200)]
Rollup merge of #62930 - iluuu1994:test-for-51559, r=oli-obk

Add test for #51559

Closes #51559

4 years agoRollup merge of #62921 - iluuu1994:improve-help-for-method-disambiguation, r=estebank
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:21:04 +0000 (23:21 +0200)]
Rollup merge of #62921 - iluuu1994:improve-help-for-method-disambiguation, r=estebank

Add method disambiguation help for trait implementation

Closes #51046
Closes #40471

4 years agoRollup merge of #62887 - estebank:issue-62881, r=petrochenkov
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:21:03 +0000 (23:21 +0200)]
Rollup merge of #62887 - estebank:issue-62881, r=petrochenkov

Make the parser TokenStream more resilient after mismatched delimiter recovery

Fix #62881, fix #62895.

4 years agoRollup merge of #62822 - RalfJung:pointers, r=Centril
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:21:01 +0000 (23:21 +0200)]
Rollup merge of #62822 - RalfJung:pointers, r=Centril

Improve some pointer-related documentation

4 years agoRollup merge of #62735 - petrochenkov:galloc, r=alexcrichton
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:21:00 +0000 (23:21 +0200)]
Rollup merge of #62735 - petrochenkov:galloc, r=alexcrichton

Turn `#[global_allocator]` into a regular attribute macro

It was a 99% macro with exception of some diagnostic details.

As a result of the change, `#[global_allocator]` now works in nested modules and even in nameless blocks.

Fixes https://github.com/rust-lang/rust/issues/44113
Fixes https://github.com/rust-lang/rust/issues/58072

4 years agoRollup merge of #62707 - JohnTitor:add-test-for-61922, r=tmandry
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:20:58 +0000 (23:20 +0200)]
Rollup merge of #62707 - JohnTitor:add-test-for-61922, r=tmandry

Add tests for overlapping explicitly dropped locals in generators

Closes #62686

r? @tmandry

4 years agoRollup merge of #62528 - SimonSapin:concat, r=alexcrichton
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:20:56 +0000 (23:20 +0200)]
Rollup merge of #62528 - SimonSapin:concat, r=alexcrichton

Add joining slices of slices with a slice separator, not just a single item

https://github.com/rust-lang/rust/issues/27747#issuecomment-294525391
> It's kinda annoying to be able to join strings with a str (which can have multiple chars), but joining a slice of slices, you can only join with a single element.

This turns out to be fixable, with some possible inference regressions.

# TL;DR

Related trait(s) are unstable and tracked at https://github.com/rust-lang/rust/issues/27747, but the `[T]::join` method that is being extended here is already stable.

Example use of the new insta-stable functionality:

```rust
let nested: Vec<Vec<Foo>> = /* … */;
let separator: &[Foo] = /* … */;  // Previously: could only be a single &Foo
nested.join(separator)
```

Complete API affected by this PR, after changes:

```rust
impl<T> [T] {
    pub fn concat<Item: ?Sized>(&self) -> <Self as Concat<Item>>::Output
        where Self: Concat<Item>
    {
        Concat::concat(self)
    }
    pub fn join<Separator>(&self, sep: Separator) -> <Self as Join<Separator>>::Output
        where Self: Join<Separator>
    {
        Join::join(self, sep)
    }
}

// The `Item` parameter is only useful for the the slice-of-slices impl.
pub trait Concat<Item: ?Sized> {
    type Output;
    fn concat(slice: &Self) -> Self::Output;
}

pub trait Join<Separator> {
    type Output;
    fn join(slice: &Self, sep: Separator) -> Self::Output;
}

impl<T: Clone, V: Borrow<[T]>> Concat<T> for [V] {
    type Output = Vec<T>;
}

impl<T: Clone, V: Borrow<[T]>> Join<&'_ T> for [V] {
    type Output = Vec<T>;
}

// New functionality here!
impl<T: Clone, V: Borrow<[T]>> Join<&'_ [T]> for [V] {
    type Output = Vec<T>;
}

impl<S: Borrow<str>> Concat<str> for [S] {
    type Output = String;
}

impl<S: Borrow<str>> Join<&'_ str> for [S] {
    type Output = String;
}
```

# Details

After https://github.com/rust-lang/rust/pull/62403 but before this PR, the API is:

```rust
impl<T> [T] {
    pub fn concat<Separator: ?Sized>(&self) -> T::Output
        where T: SliceConcat<Separator>
    {
        SliceConcat::concat(self)
    }

    pub fn join<Separator: ?Sized>(&self, sep: &Separator) -> T::Output
        where T: SliceConcat<Separator>
    {
        SliceConcat::join(self, sep)
    }
}

pub trait SliceConcat<Separator: ?Sized>: Sized {
    type Output;
    fn concat(slice: &[Self]) -> Self::Output;
    fn join(slice: &[Self], sep: &Separator) -> Self::Output;
}

impl<T: Clone, V: Borrow<[T]>> SliceConcat<T> for V {
    type Output = Vec<T>;
}

impl<S: Borrow<str>> SliceConcat<str> for S {
    type Output = String;
}
```

By adding a trait impl we should be able to accept a slice of `T` as the separator, as an alternative to a single `T` value.

In a `some_slice.join(some_separator)` call, trait resolution will pick an impl or the other based on the type of `some_separator`. In `some_slice.concat()` however there is no separator, so this call would become ambiguous. Some regression in type inference or trait resolution may be acceptable on principle, but requiring a turbofish for every single call to `concat` isn’t great.

The solution to that is splitting the `SliceConcat` trait into two `Concat` and `Join` traits, one for each eponymous method. Only `Join` would gain a new impl, so that `some_slice.concat()` would not become ambiguous.

Now, at the trait level the `Concat` trait does not need a `Separator` parameter anymore. However, simply removing it causes one of the impls not to be accepted anymore:

```rust
error[E0207]: the type parameter `T` is not constrained by the impl trait, self type, or predicates
  --> src/liballoc/slice.rs:608:6
    |
608 | impl<T: Clone, V: Borrow<[T]>> Concat for [V] {
    |      ^ unconstrained type parameter
```

This makes sense: if `[V]::concat` is a method that is itself not generic, then its return type (which is the `Concat::Output` associated type) needs to be determined based on solely `V`. And although there is no such type in the standard library, there is nothing stopping another crate from defining a `V` type that implements both `Borrow<[Foo]>` and `Borrow<[Bar]>`. It might not be a good idea, but it’s possible. Both would apply here, and there would be no way to determine `T`.

This could be a warning sign that this API is too generic. Perhaps we’d be better off having one less type variable, and only implement `Concat for [&'_ [T]]` and `Concat for [Vec<T>]` etc. However this aspect of `[V]::concat` is already stable, so we’re stuck with it.

The solution is to keep a dummy type parameter on the `Concat` trait. That way, if a type has multiple `Borrow<[_]>` impls, it’ll end up with multiple corresponding `Concat<_>` impls.

In `impl<S: Borrow<str>> Concat<str> for [S]`, the second occurrence of `str` is not meaningful. It could be any type. As long as there is only once such type with an applicable impl, trait resolution will be appeased without demanding turbofishes.

# Joining strings with `char`

For symmetry I also tried adding this impl (because why not):

```rust
impl<S: Borrow<str>> Join<char> for [S] {
    type Output = String;
}
```

This immediately caused an inference regression in a dependency of rustc:

```rust
error[E0277]: the trait bound `std::string::String: std::borrow::Borrow<[std::string::String]>` is not satisfied
   --> /home/simon/.cargo/registry/src/github.com-1ecc6299db9ec823/getopts-0.2.19/src/lib.rs:595:37
    |
595 |             row.push_str(&desc_rows.join(&desc_sep));
    |                                     ^^^^ the trait `std::borrow::Borrow<[std::string::String]>` is not implemented for `std::string::String`
    |
    = help: the following implementations were found:
              <std::string::String as std::borrow::Borrow<str>>
    = note: required because of the requirements on the impl of `std::slice::Join<&std::string::String>` for `[std::string::String]`
```

In the context of this code, two facts are known:

* `desc_rows` is a `Vec<String>`
* `desc_sep` is a `String`

Previously the first fact alone reduces the resolution of `join` to only one solution, where its argument it expected to be `&str`. Then, `&String` is coerced to `&str`.

With the new `Join` impl, the first fact leavs two applicable impls where the separator can be either `&str` or `char`. But `&String` is neither of these things. It appears that possible coercions are not accounted for, in the search for a solution in trait resolution.

I have not included this new impl in this PR. It’s still possible to add later, but the `getopts` breakage does not need to block the rest of the PR. And the functionality easy for end-user to duplicate: `slice_of_strings.join(&*char_separator.encode_utf8(&mut [0_u8, 4]))`

The `&*` part of that last code snippet is another case of the same issue: `encode_utf8` returns `&mut str` which can be coerced to `&str`, but isn’t when trait resolution is ambiguous.

4 years agoRollup merge of #61890 - golddranks:fix_sanity_check_llvm, r=Dylan-DPC
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:20:54 +0000 (23:20 +0200)]
Rollup merge of #61890 - golddranks:fix_sanity_check_llvm, r=Dylan-DPC

Fix some sanity checks

Update: Changes that made it not to work dropped.

* Fix `building_llvm` in sanity check
  * This was subtly broken: we build LLVM if any of the hosts builds LLVM, and not setting the config meant that LLVM is built for that target. Because of filtering away the targets not configured and the semantics of `Iterator::any`, it currently didn't set the `building_llvm` flag even if we indeed build it.
* Add `swig` sanity check
  * This checks whether there is a `swig` executable needed for LLDB.

4 years agoRollup merge of #61884 - crlf0710:stablize_euc, r=dtolnay,Centril
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:20:53 +0000 (23:20 +0200)]
Rollup merge of #61884 - crlf0710:stablize_euc, r=dtolnay,Centril

Stablize Euclidean Modulo (feature euclidean_division)

Closes #49048

4 years agoRollup merge of #60938 - jonas-schievink:doc-include-paths, r=petrochenkov
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:20:51 +0000 (23:20 +0200)]
Rollup merge of #60938 - jonas-schievink:doc-include-paths, r=petrochenkov

rustdoc: make #[doc(include)] relative to the containing file

This matches the behavior of other in-source paths like `#[path]` and the `include_X!` macros.

Fixes https://github.com/rust-lang/rust/pull/58373#issuecomment-462349380
Also addresses https://github.com/rust-lang/rust/issues/44732#issuecomment-467660239

cc #44732

This is still missing a stdsimd change (https://github.com/jonas-schievink/stdsimd/commit/42ed30e0b5fb5e2d11765b5d1e1f36234af85984), so CI will currently fail. I'll land that change once I get initial feedback for this PR.

4 years agoRollup merge of #60066 - sfackler:type-name, r=Centril
Mazdak Farrokhzad [Thu, 25 Jul 2019 21:20:49 +0000 (23:20 +0200)]
Rollup merge of #60066 - sfackler:type-name, r=Centril

Stabilize the type_name intrinsic in core::any

Stabilize `type_name` in `core::any`.

Closes rust-lang/rfcs#1428

FCP completed over there.

`RELEASES.md`: Prefer T-libs for categorization.

4 years agoreview comments: add FIXME comments and formatting
Esteban Küber [Thu, 25 Jul 2019 18:22:46 +0000 (11:22 -0700)]
review comments: add FIXME comments and formatting

4 years agoAdd UWP mingw targets
Hugo Beauzée-Luyssen [Mon, 27 May 2019 15:18:14 +0000 (17:18 +0200)]
Add UWP mingw targets

4 years agostd: win: Disable stack overflow handling on UWP
Hugo Beauzée-Luyssen [Mon, 27 May 2019 15:16:20 +0000 (17:16 +0200)]
std: win: Disable stack overflow handling on UWP

The required functions are not available, so hope for the best

4 years agostd: win: Don't use console APIs on UWP
Hugo Beauzée-Luyssen [Mon, 27 May 2019 15:15:27 +0000 (17:15 +0200)]
std: win: Don't use console APIs on UWP

4 years agostd: win: Don't use GetFileInformationByHandle on UWP
Hugo Beauzée-Luyssen [Mon, 27 May 2019 15:13:04 +0000 (17:13 +0200)]
std: win: Don't use GetFileInformationByHandle on UWP

4 years agostd: win: Don't use GetUserProfileDirectoryW on UWP
Hugo Beauzée-Luyssen [Mon, 27 May 2019 15:07:33 +0000 (17:07 +0200)]
std: win: Don't use GetUserProfileDirectoryW on UWP

4 years agostd: win: Don't expose link() on UWP
Hugo Beauzée-Luyssen [Mon, 27 May 2019 14:44:06 +0000 (16:44 +0200)]
std: win: Don't expose link() on UWP

Or rather expose it, but always return an error

4 years agostd: win: Don't use SetHandleInformation on UWP
Hugo Beauzée-Luyssen [Mon, 27 May 2019 14:51:29 +0000 (16:51 +0200)]
std: win: Don't use SetHandleInformation on UWP

Attempt to create sockets with the WSA_FLAG_NO_HANDLE_INHERIT flag, and
handle the potential error gracefully (as the flag isn't support on
Windows 7 before SP1)

4 years agostd: rand: Use BCrypt on UWP
Hugo Beauzée-Luyssen [Mon, 27 May 2019 14:41:52 +0000 (16:41 +0200)]
std: rand: Use BCrypt on UWP

As Rtl* functions are not allowed there

4 years agolibunwind: Use libunwind when targeting UWP
Hugo Beauzée-Luyssen [Mon, 27 May 2019 14:38:21 +0000 (16:38 +0200)]
libunwind: Use libunwind when targeting UWP

libgcc's support is using forbidden functions

4 years agostd: Link UWP with allowed libraries only
Hugo Beauzée-Luyssen [Mon, 27 May 2019 14:33:00 +0000 (16:33 +0200)]
std: Link UWP with allowed libraries only

4 years agobootstrap: Build startup object for all windows-gnu target
Hugo Beauzée-Luyssen [Mon, 27 May 2019 14:32:00 +0000 (16:32 +0200)]
bootstrap: Build startup object for all windows-gnu target

So that uwp-windows-gnu also gets its startup objects built

4 years agolibstd: windows: compat: Allow use of attributes
Hugo Beauzée-Luyssen [Mon, 27 May 2019 13:55:06 +0000 (15:55 +0200)]
libstd: windows: compat: Allow use of attributes

4 years agorustc: codegen: Build import library for all windows targets
Hugo Beauzée-Luyssen [Mon, 27 May 2019 13:51:44 +0000 (15:51 +0200)]
rustc: codegen: Build import library for all windows targets

So far it is assumed that using a DLL as a -l parameter argument is ok,
but the assumption doesn't hold when compiling the native code with
llvm.
In which case, an import library is required, so let's build one
This also requires the cargo counterpart to add the import library in
the stamp files, at least when compiling libstd. Otherwise, the files
don't get uplifted

4 years agolibrustc_errors: Support ui-testing flag in annotate-snippet emitter
Philipp Hansch [Thu, 25 Jul 2019 19:03:53 +0000 (21:03 +0200)]
librustc_errors: Support ui-testing flag in annotate-snippet emitter

This adds support for the `-Z ui-testing` flag to the new
annotate-snippet diagnostic emitter.

The support for the flag was added to `annotate-snippet-rs` in these PRs:

* https://github.com/rust-lang/annotate-snippets-rs/pull/3
* https://github.com/rust-lang/annotate-snippets-rs/pull/5

Closes #61811

4 years agoAuto merge of #60340 - mgeier:cap-vs-capacity, r=alexcrichton
bors [Thu, 25 Jul 2019 18:45:42 +0000 (18:45 +0000)]
Auto merge of #60340 - mgeier:cap-vs-capacity, r=alexcrichton

Rename .cap() methods to .capacity()

As mentioned in #60316, there are a few `.cap()` methods, which seem out-of-place because such methods are called `.capacity()` in the rest of the code.

This PR renames them to `.capacity()` but leaves `RawVec::cap()` in there for backwards compatibility.

I didn't try to mark the old version as "deprecated", because I guess this would cause too much noise.

4 years agoRemove needless indirection through Rc
Mark Rousskov [Thu, 25 Jul 2019 17:26:20 +0000 (13:26 -0400)]
Remove needless indirection through Rc

NamedMatch is already cheap to clone due to Lrc's inside.

4 years agoAdd note suggesting to borrow a String argument to find
Esteban Küber [Thu, 25 Jul 2019 17:11:03 +0000 (10:11 -0700)]
Add note suggesting to borrow a String argument to find

4 years agoRemove `cfg(bootstrap)` code for array implementations
Lukas Kalbertodt [Thu, 25 Jul 2019 16:06:26 +0000 (18:06 +0200)]
Remove `cfg(bootstrap)` code for array implementations

In PR #62435 ("Use const generics for array impls [part 1]") the old
macro-based implementations were not removed but still used with
`cfg(bootstrap)` since the bootstrap compiler had some problems with
const generics at the time. This does not seem to be the case anymore,
so there is no reason to keep the old code.

4 years agoFix inconsistent highlight blocks.
Tomasz Różański [Thu, 25 Jul 2019 15:56:58 +0000 (17:56 +0200)]
Fix inconsistent highlight blocks.

4 years agoci: gate toolstate repo pushes on the TOOLSTATE_PUBLISH envvar
Pietro Albini [Thu, 25 Jul 2019 09:51:08 +0000 (11:51 +0200)]
ci: gate toolstate repo pushes on the TOOLSTATE_PUBLISH envvar

Unfortunately due to an Azure quirk the TOOLSTATE_REPO_ACCESS_TOKEN is
not suitable to gate whether to push new commits to the repo, as if it's
not defined on the Azure side it will actually be set to the literal
`$(TOOLSTATE_REPO_ACCESS_TOKEN)`, which screws everything up.

This instead adds another, non-secret environment variable to gate
publishing: TOOLSTATE_PUBLISH. As non-secret environment variables
behave correctly this fixes the issue.

4 years agoAuto merge of #62944 - RalfJung:miri, r=oli-obk
bors [Thu, 25 Jul 2019 06:14:48 +0000 (06:14 +0000)]
Auto merge of #62944 - RalfJung:miri, r=oli-obk

bump Miri

Fixes https://github.com/rust-lang/rust/issues/62919.

r? @oli-obk

4 years agoStabilize the type_name intrinsic in core::any
Steven Fackler [Thu, 18 Apr 2019 02:38:17 +0000 (19:38 -0700)]
Stabilize the type_name intrinsic in core::any

Closes rust-lang/rfcs#1428

4 years agoAuto merge of #62961 - Centril:rollup-kydeswa, r=Centril
bors [Thu, 25 Jul 2019 02:04:55 +0000 (02:04 +0000)]
Auto merge of #62961 - Centril:rollup-kydeswa, r=Centril

Rollup of 9 pull requests

Successful merges:

 - #61727 (Add binary dependencies to dep-info files)
 - #62736 (Polonius: fix some cases of `killed` fact generation, and most of the `ui` test suite)
 - #62758 (ci: Install clang on Windows through tarballs)
 - #62784 (Add riscv32i-unknown-none-elf target)
 - #62814 (add support for hexagon-unknown-linux-musl)
 - #62827 (Don't link mcjit/interpreter LLVM components)
 - #62901 (cleanup: Remove `extern crate serialize as rustc_serialize`s)
 - #62903 (Support SDKROOT env var on iOS)
 - #62906 (Require a value for configure --debuginfo-level)

Failed merges:

 - #62910 (cleanup: Remove lint annotations in specific crates that are already enforced by rustbuild)

r? @ghost

4 years agoAllow lexer to recover from some homoglyphs
Esteban Küber [Wed, 24 Jul 2019 23:10:42 +0000 (16:10 -0700)]
Allow lexer to recover from some homoglyphs

4 years agoRollup merge of #62906 - cuviper:debuginfo-level, r=Mark-Simulacrum
Mazdak Farrokhzad [Wed, 24 Jul 2019 23:05:07 +0000 (01:05 +0200)]
Rollup merge of #62906 - cuviper:debuginfo-level, r=Mark-Simulacrum

Require a value for configure --debuginfo-level

In `configure.py`, using the `o` function creates an enable/disable
boolean setting, and writes `true` or `false` in `config.toml`. However,
rustbuild is expecting to parse a `u32` debuginfo level. We can change
to the `v` function to have the options require a value.

4 years agoRollup merge of #62903 - swolchok:ios-sdkroot, r=alexcrichton
Mazdak Farrokhzad [Wed, 24 Jul 2019 23:05:05 +0000 (01:05 +0200)]
Rollup merge of #62903 - swolchok:ios-sdkroot, r=alexcrichton

Support SDKROOT env var on iOS

Following what clang does (https://github.com/llvm/llvm-project/blob/296a80102a9b72c3eda80558fb78a3ed8849b341/clang/lib/Driver/ToolChains/Darwin.cpp#L1661-L1678), allow allow SDKROOT to tell us where the Apple SDK lives so we don't have to invoke xcrun.

Replaces #62551.

4 years agoRollup merge of #62901 - petrochenkov:serde, r=Centril
Mazdak Farrokhzad [Wed, 24 Jul 2019 23:05:03 +0000 (01:05 +0200)]
Rollup merge of #62901 - petrochenkov:serde, r=Centril

cleanup: Remove `extern crate serialize as rustc_serialize`s

4 years agoRollup merge of #62827 - nikic:llvm-components, r=alexcrichton
Mazdak Farrokhzad [Wed, 24 Jul 2019 23:05:02 +0000 (01:05 +0200)]
Rollup merge of #62827 - nikic:llvm-components, r=alexcrichton

Don't link mcjit/interpreter LLVM components

We don't use these. Drop related unused ExecutionEngine header uses.

As some drive-by cleanup drop the unused `EnableARMEHABI` global and remove an outdated version check for the hexagon component.

r? @alexcrichton

4 years agoRollup merge of #62814 - androm3da:hexagon_19jul_2019, r=alexcrichton
Mazdak Farrokhzad [Wed, 24 Jul 2019 23:05:00 +0000 (01:05 +0200)]
Rollup merge of #62814 - androm3da:hexagon_19jul_2019, r=alexcrichton

add support for hexagon-unknown-linux-musl

4 years agoRollup merge of #62784 - Disasm:riscv32i, r=estebank
Mazdak Farrokhzad [Wed, 24 Jul 2019 23:04:59 +0000 (01:04 +0200)]
Rollup merge of #62784 - Disasm:riscv32i, r=estebank

Add riscv32i-unknown-none-elf target

This target is likely to be useful for constrained FPGA soft-cores, such as picorv32 and HeavyX.

4 years agoRollup merge of #62758 - alexcrichton:llvm-tarball-windows, r=pietroalbini
Mazdak Farrokhzad [Wed, 24 Jul 2019 23:04:57 +0000 (01:04 +0200)]
Rollup merge of #62758 - alexcrichton:llvm-tarball-windows, r=pietroalbini

ci: Install clang on Windows through tarballs

Previously we used the executables built the LLVM project but these
executables are difficult to run in a CI environment, they can
accidentally pollute global state, etc. In testing some of the possible
4-core machine environments for Azure this step would frequently cause
issues.

To assuage these future issues and hopefully make builds slightly more
self-contained, this commit changes to install from a tarball instead.
The tarball isn't provided by LLVM itself, but we use the offical LLVM
installer to extract itself and then we pack up the LLVM installation
directory into the tarball.

4 years agoRollup merge of #62736 - lqd:polonius_tests3, r=matthewjasper
Mazdak Farrokhzad [Wed, 24 Jul 2019 23:04:55 +0000 (01:04 +0200)]
Rollup merge of #62736 - lqd:polonius_tests3, r=matthewjasper

Polonius: fix some cases of `killed` fact generation, and most of the `ui` test suite

Since basic Polonius functionality was re-enabled by @matthewjasper in #54468, some tests were still failing in the polonius compare-mode.

This PR fixes all but one test in the `ui` suite by:
- fixing some bugs in the fact generation code, related to the `killed` relation: Polonius would incorrectly reject some NLL-accepted code, because of these missing `killed` facts.
- ignoring some tests in the polonius compare-mode: a lot of those manually test the NLL or migrate mode, and the failures were mostly artifacts of the test revisions, e.g. that `-Z polonius` requires full NLLs. Some others were also both failing with NLL and succeeding with Polonius, which we can't encode in tests at the moment.
- blessing the output of some tests: whenever Polonius and NLL have basically the same errors, except for diagnostics differences, the Polonius output is blessed. Whenever we've advanced into a less experimental phase, we'll want to revisit these cases (much like we did on the NLL test suite last year) to specifically work on diagnostics.

Fact generation changes:
- we now kill loans on the destination place of `Call` terminators
- we now kill loans on the locals destroyed by `StorageDead`
- we now also handle assignments to projections: killing the loans on a either a deref-ed local, or the ones whose `borrowed_place` conflicts with the current place.

One failing test remains: an overflow during fact generation, on a case of polymorphic recursion (and which I'll continue investigating later).

This adds some tests for the fact generation changes, with some simple Polonius cases similar to the existing smoke tests, but also for some cases encountered in the wild (in the `rand` crate for example).

A more detailed write-up is available [here](https://hackmd.io/CjYB0fs4Q9CweyeTdKWyEg?view) with an explanation for each test failure, the steps taken to resolve it (as a commit in the current PR), NLL and Polonius outputs (and diff), etc.

Since they've worked on this before, and we've discussed some of these failures together:

r? @matthewjasper

4 years agoRollup merge of #61727 - Mark-Simulacrum:crate-deps-in-deps, r=alexcrichton
Mazdak Farrokhzad [Wed, 24 Jul 2019 23:04:54 +0000 (01:04 +0200)]
Rollup merge of #61727 - Mark-Simulacrum:crate-deps-in-deps, r=alexcrichton

Add binary dependencies to dep-info files

I'm not sure about the lack of incremental-tracking here, but since I'm pretty sure this runs on every compile anyway it might not matter? If there's a better place/way to get at the information I want, I'm happy to refactor the code to match.

r? @alexcrichton

4 years agoUse Foo instead of raw arrays
Yuki Okushi [Wed, 24 Jul 2019 22:47:57 +0000 (07:47 +0900)]
Use Foo instead of raw arrays

4 years agore-enable debug checks in Miri
Ralf Jung [Wed, 24 Jul 2019 18:47:24 +0000 (20:47 +0200)]
re-enable debug checks in Miri

4 years agobump Miri
Ralf Jung [Wed, 24 Jul 2019 18:18:15 +0000 (20:18 +0200)]
bump Miri

4 years agoAdd comment
Scott Wolchok [Wed, 24 Jul 2019 17:28:14 +0000 (10:28 -0700)]
Add comment

4 years agoUse match ergonomics in Condvar documentation
Kevin W Matthews [Wed, 24 Jul 2019 15:21:08 +0000 (08:21 -0700)]
Use match ergonomics in Condvar documentation

4 years agoAuto merge of #62935 - Centril:rollup-hzj9att, r=Centril
bors [Wed, 24 Jul 2019 15:59:00 +0000 (15:59 +0000)]
Auto merge of #62935 - Centril:rollup-hzj9att, r=Centril

Rollup of 10 pull requests

Successful merges:

 - #62641 (Regenerate character tables for Unicode 12.1)
 - #62716 (state also in the intro that UnsafeCell has no effect on &mut)
 - #62738 (Remove uses of mem::uninitialized from std::sys::cloudabi)
 - #62772 (Suggest trait bound on type parameter when it is unconstrained)
 - #62890 (Normalize use of backticks in compiler messages for libsyntax/*)
 - #62905 (Normalize use of backticks in compiler messages for doc)
 - #62916 (Add test `self-in-enum-definition`)
 - #62917 (Always emit trailing slash error)
 - #62926 (Fix typo in mem::uninitialized doc)
 - #62927 (use PanicMessage in MIR, kill InterpError::description)

Failed merges:

r? @ghost

4 years agoGate binary dependency information behind -Zbinary-dep-depinfo
Mark Rousskov [Wed, 24 Jul 2019 15:00:09 +0000 (11:00 -0400)]
Gate binary dependency information behind -Zbinary-dep-depinfo

4 years agoAdd binary dependencies to dep-info files
Mark Rousskov [Mon, 10 Jun 2019 16:18:53 +0000 (10:18 -0600)]
Add binary dependencies to dep-info files

4 years agoRollup merge of #62927 - RalfJung:panic, r=oli-obk
Mazdak Farrokhzad [Wed, 24 Jul 2019 14:13:23 +0000 (16:13 +0200)]
Rollup merge of #62927 - RalfJung:panic, r=oli-obk

use PanicMessage in MIR, kill InterpError::description

r? @oli-obk @eddyb
Cc @saleemjaffer https://github.com/rust-rfcs/const-eval/issues/4

4 years agoRollup merge of #62926 - Smibu:fix-typo, r=jonas-schievink
Mazdak Farrokhzad [Wed, 24 Jul 2019 14:13:22 +0000 (16:13 +0200)]
Rollup merge of #62926 - Smibu:fix-typo, r=jonas-schievink

Fix typo in mem::uninitialized doc

4 years agoRollup merge of #62917 - estebank:trailing-slash, r=matklad
Mazdak Farrokhzad [Wed, 24 Jul 2019 14:13:20 +0000 (16:13 +0200)]
Rollup merge of #62917 - estebank:trailing-slash, r=matklad

Always emit trailing slash error

Fix #62913.

r? @petrochenkov

4 years agoRollup merge of #62916 - Centril:self-in-enum-def, r=oli-obk
Mazdak Farrokhzad [Wed, 24 Jul 2019 14:13:18 +0000 (16:13 +0200)]
Rollup merge of #62916 - Centril:self-in-enum-def, r=oli-obk

Add test `self-in-enum-definition`

Apparently there was no test covering this...

r? @oli-obk
cc @petrochenkov

4 years agoRollup merge of #62905 - fakenine:normalize_use_of_backticks_compiler_messages_p16...
Mazdak Farrokhzad [Wed, 24 Jul 2019 14:13:17 +0000 (16:13 +0200)]
Rollup merge of #62905 - fakenine:normalize_use_of_backticks_compiler_messages_p16, r=Centril

Normalize use of backticks in compiler messages for doc

https://github.com/rust-lang/rust/issues/60532

4 years agoRollup merge of #62890 - fakenine:normalize_use_of_backticks_compiler_messages_p15...
Mazdak Farrokhzad [Wed, 24 Jul 2019 14:13:15 +0000 (16:13 +0200)]
Rollup merge of #62890 - fakenine:normalize_use_of_backticks_compiler_messages_p15, r=Centril

Normalize use of backticks in compiler messages for libsyntax/*

https://github.com/rust-lang/rust/issues/60532