119524 Commits

Author SHA1 Message Date
Michael
bdbd218b1f
Update link in contributing.md 2020-05-04 00:40:15 +02:00
bors
ea733c3a59 Auto merge of #71853 - Dylan-DPC:rollup-4qi6ry9, r=Dylan-DPC
Rollup of 4 pull requests

Successful merges:

 - #71398 (Add `RefCell::take`)
 - #71663 (Fix exceeding bitshifts not emitting for assoc. consts (properly this time, I swear!))
 - #71726 (Suggest deref when coercing `ty::Ref` to `ty::RawPtr` with arbitrary mutability)
 - #71808 (Add long error explanation for E0539)

Failed merges:

r? @ghost
2020-05-03 16:38:41 +00:00
Dylan DPC
ce1dba9918
Rollup merge of #71808 - unexge:long-err-expl-for-e0539, r=GuillaumeGomez
Add long error explanation for E0539

since this error is similar to [E0551](https://github.com/rust-lang/rust/blob/master/src/librustc_error_codes/error_codes/E0551.md) most of the content was copied from it. part of #61137.
2020-05-03 18:34:50 +02:00
Dylan DPC
44e678bf9e
Rollup merge of #71726 - ldm0:ref2ptr, r=oli-obk
Suggest deref when coercing `ty::Ref` to `ty::RawPtr` with arbitrary mutability

Fixes #71676
1. Implement dereference suggestion when coercing `ty::Ref` to `ty::RawPtr` with arbitrary mutability.
2. Extract the dereference steps into `deref_steps()`, which removes all the `use` and `pub` noise introduced by last PR #71540, and makes the code more readable.
3. Use the `remove_prefix()` closure which makes the prefix removal more readable.
4. Introduce `Applicability` as a return value of `check_ref` to suggest `Applicability::Unspecified` suggestion.

**Special**: I found it is not possible to genereate `Applicability::MachineApplicable` suggestion for situation like this:
```rust
use std::ops::Deref;
use std::ops::DerefMut;
struct Bar(u8);
struct Foo(Bar);
struct Emm(Foo);
impl Deref for Bar{
    type Target = u8;
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}
impl Deref for Foo {
    type Target = Bar;
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}
impl Deref for Emm {
    type Target = Foo;
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}
impl DerefMut for Bar{
    fn deref_mut(&mut self) -> &mut Self::Target {
        &mut self.0
    }
}
impl DerefMut for Foo {
    fn deref_mut(&mut self) -> &mut Self::Target {
        &mut self.0
    }
}
impl DerefMut for Emm {
    fn deref_mut(&mut self) -> &mut Self::Target {
        &mut self.0
    }
}
fn main() {
    let a = Emm(Foo(Bar(0)));
    let _: *mut u8 = &a; //~ ERROR mismatched types
}
```
We may suggest `&mut ***a` here, but the `a` is not declared as mutable variable. And also when processing HIR, it's not possible to check if `a` is declared as a mutable variable (currently we do borrow checking with MIR). So we cannot ensure that suggestion when coercing immutable reference to mutable pointer is always machine applicable. Therefore I added a `Applicability` return value in `check_ref()`. And move the `immutable reference -> mutable pointer` situation into a sperate test file without `run-rustfix`. (It seems that `run-rustfix` will also adopt `Applicability::Unspecified` suggestion, which is strange)
2020-05-03 18:34:46 +02:00
Dylan DPC
5b1729030a
Rollup merge of #71663 - jumbatm:caller-handles-validation-error, r=RalfJung
Fix exceeding bitshifts not emitting for assoc. consts (properly this time, I swear!)

Fixes #69021 and fixes #71353.

As described in https://github.com/rust-lang/rust/issues/71353#issuecomment-617901923, this PR:

- adds a variant of `try_validation!` called `try_validation_pat!` that allows specific failures to be turned into validation failures (but returns the rest, unchanged), and
- allows `InvalidProgram` to be returned out of validation

r? @RalfJung
2020-05-03 18:34:41 +02:00
Dylan DPC
6f5de87d3f
Rollup merge of #71398 - ThinkChaos:feat_refcell_take, r=LukasKalbertodt
Add `RefCell::take`

Add `RefCell::take` to match `Cell` and `Option`.
I also changed a couple of calls to `.replace` to `.take`.

Tracking issue is #71395.

This is my first contribution, please tell me if there's anything I could improve, thanks!
2020-05-03 18:34:34 +02:00
bors
e5f35df2c6 Auto merge of #70825 - eddyb:enum-discr-correct-generics-parent, r=nikomatsakis
typeck: always expose explicit enum discriminant `AnonConst`s' parent in `generics_of`.

This is similar to #70452 but for explicit `enum` discriminant constant expressions.
However, unlike #70452, this PR should have no effect on stable code, as while it alleviates #43408 errors, there is no way to actually compile an `enum` with generic parameters *and* explicit discriminants, without `#![feature(arbitrary_enum_discriminant)]`, as explicit discriminant expression don't count as uses of parameters (if they did, they would count as invariant uses).

<hr/>

There's also 2 other commits here, both related to #70453:
* "ty: use `delay_span_bug` in `ty::AdtDef::eval_explicit_discr`." - hides the ICEs demonstrated on #70453, when there are other errors (which the next commit adds)
* "typeck/wfcheck: require that explicit enum discriminants const-evaluate succesfully." - closes #70453 by picking alternative "2", i.e. erroring when a discriminant doesn't fully const-evaluate from the perspective of the `enum` definition

In the future, it might be possible to allow `enum` discriminants to actually depend on parameters, but that will likely require #68436 + some way to restrict the values so no two variants can end up with overlapping discriminants.

As this PR would close #70453, it shouldn't be merged until a decision is reached there.

r? @nikomatsakis
2020-05-03 12:05:46 +00:00
ThinkChaos
4a79424b74 Mention RefCell::take can panic in docs 2020-05-03 12:52:23 +02:00
bors
d626e4dadc Auto merge of #71828 - Dylan-DPC:rollup-qf5h2w5, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #71165 (`slice::fill`: use `T` instead of generic arg)
 - #71314 (Implement RFC 2523, `#[cfg(version(..))]`)
 - #71542 (Implement `confusable_idents` lint.)
 - #71806 (typo)
 - #71813 (Decode qualifs for associated const defaults)

Failed merges:

r? @ghost
2020-05-03 08:53:03 +00:00
Dylan DPC
e48a7b8d06
Rollup merge of #71813 - ecstatic-morse:issue-71734, r=tmandry
Decode qualifs for associated const defaults

Fixes #71734.

We encode qualifs for associated constants, but never expected to decode the qualifs for defaulted associated consts. Fix this, and test that associated const defaults have the correct qualifs cross-crate.

r? @tmandry
2020-05-03 14:18:08 +05:30
Dylan DPC
223194127e
Rollup merge of #71806 - lcnr:patch-3, r=jonas-schievink
typo
2020-05-03 14:18:04 +05:30
Dylan DPC
24e101c418
Rollup merge of #71542 - crlf0710:confusable_idents, r=petrochenkov
Implement `confusable_idents` lint.

This collects all identifier symbols into `ParseSession` and examines them within the non-ascii-idents lint.

The skeleton generation part needs to be added to `unicode-security` crate. Will update this PR when the crate is updated.

r? @petrochenkov

EDIT: also included the `concat_idents` part.
2020-05-03 14:18:02 +05:30
Dylan DPC
ffe0a1c9fd
Rollup merge of #71314 - mibac138:cfg-version, r=petrochenkov
Implement RFC 2523, `#[cfg(version(..))]`

Hi! This is my first contribution to rust, I hope I didn't miss anything. I tried to implement this feature so that `#[cfg(version(1.44.0))]` works but the parser was printing an error that I wasn't sure how to fix so I just opted for implementing `#[cfg(version("1.44.0"))]` (note the quotes).

Tracking issue: #64796
2020-05-03 14:18:00 +05:30
Dylan DPC
8cb8d9cfe2
Rollup merge of #71165 - lcnr:patch-2, r=Amanieu
`slice::fill`: use `T` instead of generic arg

implements https://github.com/rust-lang/rust/issues/70758#issuecomment-613994427

As the discussion in #70758 has shifted, I now use `T` instead of `&T`.
2020-05-03 14:17:53 +05:30
bors
0a675c5e02 Auto merge of #71815 - Mark-Simulacrum:no-llvm-rebuild, r=jonas-schievink
Don't bust caches on x.py check/build switches

Fixes #71152
2020-05-03 02:58:00 +00:00
mibac138
8a77d1ca3f Add build script to rustc_attr because of cfg(version) 2020-05-03 02:42:12 +02:00
mibac138
a3ee28370f Add more tests for cfg(version) 2020-05-03 02:42:11 +02:00
mibac138
96f27c73cf Change cfg(version) error message wording 2020-05-03 02:42:10 +02:00
mibac138
90aa62a1bf Implement RFC 2523, #[cfg(version(..))] 2020-05-03 02:42:07 +02:00
bors
c1e0552869 Auto merge of #71807 - Dylan-DPC:rollup-jvb8sd9, r=Dylan-DPC
Rollup of 7 pull requests

Successful merges:

 - #69274 (Implement RFC 2396: `#[target_feature]` 1.1)
 - #71767 (doc: make Stack and StackElement a little pretty)
 - #71772 (Mark query function as must_use.)
 - #71777 (cleanup: `config::CrateType` -> `CrateType`)
 - #71784 (Remove recommendation for unmaintained dirs crate)
 - #71785 (Update comment regarding SO_REUSEADDR on Windows)
 - #71787 (fix rustdoc warnings)

Failed merges:

r? @ghost
2020-05-02 23:35:09 +00:00
Mark Rousskov
7f645aba10 Don't skip building LLVM if already built 2020-05-02 18:43:55 -04:00
Mark Rousskov
131e120585 Extract stamp testing for LLVM
The extracted function can be used by the rest of bootstrap to detect if we've
already built an up-to-date LLVM (and so it's safe for us to either request it
or pretend it exists).
2020-05-02 18:25:45 -04:00
Dylan MacKenzie
14a2c8d042 Decode qualifs from defaulted trait associated consts 2020-05-02 14:46:22 -07:00
Dylan MacKenzie
bcc44b8e02 Test associated const default qualifs cross-crate
This also tests for the ICE in #71734
2020-05-02 14:46:22 -07:00
unexge
ef813ca95a Add stability attribute to E0539 error examples 2020-05-03 00:25:45 +03:00
bors
f05a524044 Auto merge of #69274 - LeSeulArtichaut:target-feature-11, r=hanna-kruppe
Implement RFC 2396: `#[target_feature]` 1.1

Tracking issue: #69098

r? @nikomatsakis
cc @gnzlbg @joshtriplett
2020-05-02 20:24:50 +00:00
unexge
9536567210 Add #![feature(staged_api)] attribute to E0539 error examples 2020-05-02 23:10:34 +03:00
Charles Lew
f3ec00a5fe Add a fast code path to optimize confusable_idents lint for ASCII code base. 2020-05-03 02:31:13 +08:00
Charles Lew
c05961c2db Implement confusable_idents lint. 2020-05-03 02:30:50 +08:00
Bastian Kauschke
902aa62d51 slice::fill: take T by value. 2020-05-02 20:15:05 +02:00
unexge
e4ee172ab0 Add long error explanation for E0539 2020-05-02 21:14:08 +03:00
Eduard-Mihai Burtescu
926c7a298d typeck: always expose explicit enum discriminant AnonConsts' parent in generics_of. 2020-05-02 19:51:44 +03:00
Eduard-Mihai Burtescu
2c29f0cc8e typeck/wfcheck: require that explicit enum discriminants const-evaluate succesfully. 2020-05-02 19:51:38 +03:00
Dylan DPC
97cf378f54
Rollup merge of #71787 - tshepang:rustdoc-warnings, r=varkor
fix rustdoc warnings
2020-05-02 18:27:52 +02:00
Dylan DPC
5a7b21faba
Rollup merge of #71785 - reitermarkus:cfg-attribute, r=Mark-Simulacrum
Update comment regarding SO_REUSEADDR on Windows
2020-05-02 18:27:48 +02:00
Dylan DPC
94d2fd9205
Rollup merge of #71784 - Xaeroxe:patch-1, r=jonas-schievink
Remove recommendation for unmaintained dirs crate

See #71684 for reasoning here
2020-05-02 18:27:43 +02:00
Dylan DPC
590d201e0b
Rollup merge of #71777 - petrochenkov:crtype, r=Mark-Simulacrum
cleanup: `config::CrateType` -> `CrateType`
2020-05-02 18:27:39 +02:00
Dylan DPC
78dc7e15c9
Rollup merge of #71772 - cjgillot:ensure, r=petrochenkov
Mark query function as must_use.

And use the `ensure()` version when the result is not needed.
2020-05-02 18:27:35 +02:00
Dylan DPC
5747d1e000
Rollup merge of #71767 - tshepang:stack-stuff, r=jonas-schievink
doc: make Stack and StackElement a little pretty

Also, fix rustdoc warnings.
2020-05-02 18:27:31 +02:00
Dylan DPC
e96036fca2
Rollup merge of #69274 - LeSeulArtichaut:target-feature-11, r=hanna-kruppe
Implement RFC 2396: `#[target_feature]` 1.1

Tracking issue: #69098

r? @nikomatsakis
cc @gnzlbg @joshtriplett
2020-05-02 18:27:27 +02:00
bors
d20113d0f5 Auto merge of #71794 - RalfJung:miri, r=RalfJung
update Miri

This contains the concurrency support by @vakaras :)

Fixes https://github.com/rust-lang/rust/issues/71729
r? @ghost
Cc @rust-lang/miri
2020-05-02 16:24:51 +00:00
Bastian Kauschke
a691521867
typo 2020-05-02 18:16:36 +02:00
Eduard-Mihai Burtescu
50c63e48f1 ty: use delay_span_bug in ty::AdtDef::eval_explicit_discr. 2020-05-02 18:58:39 +03:00
Markus Reiter
39a97900be Replace cfg macro with attribute. 2020-05-02 17:06:16 +02:00
bors
53d3bc02ed Auto merge of #70655 - oli-obk:subrepo_funness, r=Mark-Simulacrum
Make clippy a git subtree instead of a git submodule

r? @eddyb

cc #70651

documentation at https://github.com/rust-lang/rust/pull/70654
2020-05-02 13:19:30 +00:00
bors
7184d137f6 Auto merge of #71795 - RalfJung:rollup-yqxfi5a, r=RalfJung
Rollup of 6 pull requests

Successful merges:

 - #71712 (Miri: port error backtraces to std::backtrace)
 - #71736 (bootstrap: also apply unused-attributes hack without deny_warnings)
 - #71738 (remove AllocId generalization of Pointer)
 - #71739 (remove obsolete comment)
 - #71781 (Uncomment test code for failure to use `Box::pin`)
 - #71782 (Use a non-existent test path instead of clobbering /dev/null)

Failed merges:

r? @ghost
2020-05-02 10:13:57 +00:00
Ralf Jung
2ee49eb738
Rollup merge of #71782 - cuviper:leave-dev-null-alone, r=Mark-Simulacrum
Use a non-existent test path instead of clobbering /dev/null

Fixes #71502.
r? @Mark-Simulacrum
2020-05-02 12:08:15 +02:00
Ralf Jung
a9c818ebb2
Rollup merge of #71781 - estebank:box-pin-test, r=tmandry
Uncomment test code for failure to use `Box::pin`

Close #69083.
2020-05-02 12:08:13 +02:00
Ralf Jung
509896fb96
Rollup merge of #71739 - tshepang:master, r=Dylan-DPC
remove obsolete comment

Referenced was removed in 9f492fefef8d9a75f6dc27c834561fe977ca70c5
2020-05-02 12:08:12 +02:00
Ralf Jung
6616e2ca27
Rollup merge of #71738 - RalfJung:pointer-no-alloc-id, r=oli-obk
remove AllocId generalization of Pointer

This was only needed for the "snapshot" machinery, which is gone.

r? @oli-obk
2020-05-02 12:08:10 +02:00