Commit graph

29288 commits

Author SHA1 Message Date
Mazdak Farrokhzad
a73ed5aad9
Rollup merge of #69981 - oli-obk:const_blocks, r=eddyb
Evaluate repeat expression lengths as late as possible

Fixes #68567

r? @varkor
2020-03-24 00:49:39 +01:00
Mazdak Farrokhzad
ee9094869c
Rollup merge of #69740 - mark-i-m:describe-it-3, r=eddyb
Replace some desc logic in librustc_lint with article_and_desc

r? @eddyb @Centril @matthewjasper

Followup to https://github.com/rust-lang/rust/pull/69674

Blocked on #69498
2020-03-24 00:49:37 +01:00
Oliver Scherer
5aa15bfa1c Remove leftover mentions of from_anon_const 2020-03-23 22:24:31 +01:00
Mazdak Farrokhzad
1bb0c929cb
Rollup merge of #70300 - aleksator:66636_reword_unused_variable_warning, r=Dylan-DPC
Reword unused variable warning

Fixes #66636
2020-03-23 19:04:54 +01:00
Mazdak Farrokhzad
ad6d30314b
Rollup merge of #70195 - rylev:test-for-53275, r=Centril
Add test for issue #53275

Fixes #53275
2020-03-23 19:04:49 +01:00
Mazdak Farrokhzad
4d5eccae50
Rollup merge of #70080 - anyska:mir-double-space, r=oli-obk
rustc_mir: remove extra space when pretty-printing MIR.
2020-03-23 19:04:47 +01:00
Mazdak Farrokhzad
e37e81cad5
Rollup merge of #69494 - GuillaumeGomez:stabilize-crate-version, r=ehuss,aleksator,ollie27
Stabilize --crate-version option in rustdoc

I don't see any reason to not stabilize it anymore, so let's go!

cc @kinnison @ehuss

r? @ollie27
2020-03-23 19:04:45 +01:00
bors
8549cfed4b Auto merge of #69649 - estebank:negative-impl-span, r=Centril
Tweak output for invalid negative impl errors

Follow up to #69722. Tweak negative impl errors emitted in the HIR:

```
error[E0192]: invalid negative impl
  --> $DIR/E0192.rs:9:6
   |
LL | impl !Trait for Foo { }
   |      ^^^^^^
   |
   = note: negative impls are only allowed for auto traits, like `Send` and `Sync`
```
2020-03-23 12:40:36 +00:00
Oliver Scherer
799b15ed96 Evaluate repeat expression lengths as late as possible 2020-03-23 13:14:36 +01:00
Ryan Levick
821eef5a48 Make sure issue 53275 test goes through codegen 2020-03-23 11:11:54 +01:00
Mazdak Farrokhzad
bb85308ce7
Rollup merge of #70233 - petrochenkov:superproc, r=ecstatic-morse
resolve: Do not resolve visibilities on proc macro definitions twice

Fixes https://github.com/rust-lang/rust/issues/68921
2020-03-23 10:29:16 +01:00
Mazdak Farrokhzad
bee074f032
Rollup merge of #69968 - eddyb:tupled-closure-captures, r=nikomatsakis
rustc: keep upvars tupled in {Closure,Generator}Substs.

Previously, each closure/generator capture's (aka "upvar") type was tracked as one "synthetic" type parameter in the closure/generator substs, and figuring out where the parent `fn`'s generics end and the synthetics start involved slicing at `tcx.generics_of(def_id).parent_count`.

Needing to query `generics_of` limited @davidtwco (who wants to compute some `TypeFlags` differently for parent generics vs upvars, and `TyCtxt` is not available there), which is how I got started on this, but it's also possible that the `generics_of` queries are slowing down `{Closure,Generator}Substs` methods.

To give an example, for a `foo::<T, U>::{closure#0}` with captures `x: X` and `y: Y`, substs are:
* before this PR: `[T, U, /*kind*/, /*signature*/, X, Y]`
* after this PR: `[T, U, /*kind*/, /*signature*/, (X, Y)]`

You can see that, with this PR, no matter how many captures, the last 3 entries in the substs (or 5 for a generator) are always the "synthetic" ones, with the last one being the tuple of capture types.

r? @nikomatsakis cc @Zoxc
2020-03-23 10:29:11 +01:00
Mazdak Farrokhzad
906b399583
Rollup merge of #69942 - estebank:sized-verbose-sugg, r=matthewjasper
Increase verbosity when suggesting subtle code changes

Do not suggest changes that are actually quite small inline, to minimize the likelihood of confusion.

Fix #69243.
2020-03-23 10:29:09 +01:00
Alex Tokarev
b35c30251f Reword unused variable warning 2020-03-23 12:14:45 +03:00
Vadim Petrochenkov
c3c0a097a7 resolve: Do not resolve visibilities on proc macro definitions twice 2020-03-23 11:40:58 +03:00
Esteban Küber
b8f9866257 Tweak output for invalid negative impl errors 2020-03-22 21:53:29 -07:00
Mazdak Farrokhzad
092c821ef2
Rollup merge of #70249 - lcnr:issue70125, r=eddyb
handle ConstKind::Unresolved after monomorphizing

fixes #70125

r? @bjorn3
2020-03-23 04:26:13 +01:00
Mazdak Farrokhzad
8dda61792b
Rollup merge of #70248 - Centril:unroot, r=petrochenkov
parser: simplify & remove unused field

r? @petrochenkov
2020-03-23 04:26:12 +01:00
Mazdak Farrokhzad
08dfd1344c
Rollup merge of #70236 - petrochenkov:globimpice, r=ecstatic-morse
resolve: Avoid "self-confirming" import resolutions in one more case

So the idea behind "blacklisted bindings" is that we must ignore some name definitions during resolution because otherwise they cause infinite cycles.
E.g. import
```rust
use my_crate;
```
would refer to itself (on 2018 edition) without this blacklisting, because `use my_crate;` is the first name in scope when we are resolving `my_crate` here.

In this PR we are doing this blacklisting for the case
```rust
use same::same;
```
, namely blacklisting the second `same` when resolving the first `same`.
This was previously forgotten.

Fixes https://github.com/rust-lang/rust/issues/62767
2020-03-23 04:26:10 +01:00
Mazdak Farrokhzad
11f5309858
Rollup merge of #70227 - LeSeulArtichaut:typo-def, r=Centril
Only display definition when suggesting a typo

Closes #70206
r? @Centril
2020-03-23 04:26:08 +01:00
Adam Perry
97da6dae41 Allow #[track_caller] in traits.
The codegen implementation already works for this, so we're:

* propagating track_caller attr from trait def to impl
* relaxing errors
* adding tests

Approved in a recent lang team meeting:
https://github.com/rust-lang/lang-team/blob/master/minutes/2020-01-09.md
2020-03-22 17:21:18 -07:00
Esteban Küber
9175940c92 Use more targetted span for error label 2020-03-22 16:09:42 -07:00
Esteban Küber
854b78fe22 Normalize wording of privacy access labels 2020-03-22 15:36:54 -07:00
mark
5e8b795552 fix one more test 2020-03-22 17:18:30 -05:00
mark
d40dff9cbb the crate and tests 2020-03-22 14:37:51 -05:00
Esteban Küber
94bbd46682 Add span label to primary error span 2020-03-22 11:18:06 -07:00
Esteban Küber
52fbd3e569 Increase verbosity when suggesting subtle code changes 2020-03-22 10:36:45 -07:00
Dylan DPC
69c0bcd3d5
Rollup merge of #70266 - petrochenkov:prochead, r=varkor
proc_macro_harness: Use item header spans for errors

Addresses https://github.com/rust-lang/rust/pull/70233#discussion_r396043004.
2020-03-22 15:48:43 +01:00
Dylan DPC
3c8f8b6304
Rollup merge of #70223 - lcnr:issue70167, r=eddyb
fix type of const params in associated types.

fixes #66906
fixes #70167

r? @eddyb
2020-03-22 15:48:34 +01:00
Dylan DPC
ea44d71f9b
Rollup merge of #70209 - Centril:recover-quant-closure, r=petrochenkov
parser: recover on `for<'a> |...| body` closures

When encountering `for` and `<` is 1 token ahead, interpret this as an explicitly quantified generic closure and recover, rather than attempting to parse a `for` loop. This provides both improved diagnostics as well as an insurance policy for the ability to use this as the syntax for generic closures in the future.

As requested by r? @eddyb
2020-03-22 15:48:32 +01:00
Bastian Kauschke
853377817d rename tests 2020-03-22 11:59:01 +01:00
Bastian Kauschke
0c5c3bbdab handle unevaluated consts after monomophize 2020-03-22 11:34:42 +01:00
Vadim Petrochenkov
bdd07f932b proc_macro_harness: Use item header spans for errors 2020-03-22 12:59:32 +03:00
bors
94d43d6566 Auto merge of #68098 - ssomers:btreemap_gdb_pretty_print, r=Mark-Simulacrum
Test gdb pretty printing more and fix overzealous type substitution

Adresses a problem concerning printing BTreeMap / BTreeSet data in gdb: when the key or value type name contains substring "LeafNode", and the map has multiple nodes (e.g. more than 11 elements), printing causes an exception. E.g.

```
rustc -g - <<EOF
    use std::collections::BTreeMap;

    struct MyLeafNode(i8);

    fn main() {
        let m: BTreeMap<i8, MyLeafNode> = (0..12).map(|i| (i, MyLeafNode(i))).collect();
        assert!(!m.is_empty());
    }
EOF
```

```
$ rust-gdb rust_out
(gdb) b 7
(gdb) r
(gdb) p m
$1 = BTreeMap<i8, rust_out::MyLeafNode>(len: 12)Python Exception <class 'gdb.error'> No type named alloc::collections::btree::node::InternalNode<i8, rust_out::MyInternalNode>.:
use std::collections::BTreeMap;
```

The code was written in #56144 by @tromey (and later touched upon by @RalfJung in #57045, but I think that had nothing to do with the issues in this PR).
2020-03-22 08:55:18 +00:00
mark
1661a0a99b convert a couple more errors 2020-03-21 19:47:23 -05:00
Mazdak Farrokhzad
eaa0ae503f parse: nix new_sub_parser_from_file 2020-03-22 00:35:20 +01:00
Dylan DPC
17e6ed1fd9
Rollup merge of #70238 - petrochenkov:procmod, r=Centril
Add a test for out-of-line module passed through a proc macro

Closes https://github.com/rust-lang/rust/issues/58818.
2020-03-21 22:56:31 +01:00
Dylan DPC
4b5ca6e4a7
Rollup merge of #70231 - aDotInTheVoid:E0224, r=Dylan-DPC
Add explanation message for E0224

Addresses some of #61137
2020-03-21 22:56:28 +01:00
Dylan DPC
ecf3ef52a6
Rollup merge of #70126 - wesleywiser:fix_miri_ice_neg_zst_enum_discr, r=RalfJung,eddyb
Fix ICE caused by truncating a negative ZST enum discriminant

Fixes #70114

r? @oli-obk or @RalfJung
2020-03-21 22:56:20 +01:00
John Kåre Alsaker
0aa15d0485 Allow hir().find to return None 2020-03-21 20:12:55 +01:00
Vadim Petrochenkov
e391d776e3 Add a test for out-of-line module passed through a proc macro 2020-03-21 21:40:58 +03:00
Vadim Petrochenkov
e543e3187c resolve: Avoid "self-confirming" import resolutions in one more case 2020-03-21 20:48:37 +03:00
Nixon Enraght-Moony
97aa2704ec Add explanation message for E0224 2020-03-21 15:43:12 +00:00
LeSeulArtichaut
cb7a2c16aa Bless tests 2020-03-21 15:03:58 +01:00
Stein Somers
d8a136fa10 Test pretty printing more and fix overzealous type substitution 2020-03-21 14:03:09 +00:00
Eduard-Mihai Burtescu
10f08abd2e rustc: keep upvars tupled in {Closure,Generator}Substs. 2020-03-21 14:23:50 +02:00
Bastian Kauschke
a9c2378b7d fix type of const params in associated types. 2020-03-21 13:22:26 +01:00
Dylan DPC
266801d806
Rollup merge of #70032 - lcnr:issue69970, r=varkor
put type params in front of const params in generics_of

fixes #69970

r? @varkor
2020-03-21 13:06:40 +01:00
Dylan DPC
276b54e9c9
Rollup merge of #69955 - alexcrichton:stderr-infallible, r=sfackler
Fix abort-on-eprintln during process shutdown

This commit fixes an issue where if `eprintln!` is used in a TLS
destructor it can accidentally cause the process to abort. TLS
destructors are executed after `main` returns on the main thread, and at
this point we've also deinitialized global `Lazy` values like those
which store the `Stderr` and `Stdout` internals. This means that despite
handling TLS not being accessible in `eprintln!`, we will fail due to
not being able to call `stderr()`. This means that we'll double-panic
quickly because panicking also attempt to write to stderr.

The fix here is to reimplement the global stderr handle to avoid the
need for destruction. This avoids the need for `Lazy` as well as the
hidden panic inside of the `stderr` function.

Overall this should improve the robustness of printing errors and/or
panics in weird situations, since the `stderr` accessor should be
infallible in more situations.
2020-03-21 13:06:38 +01:00
Dylan DPC
fd3f9176c3
Rollup merge of #69901 - RalfJung:rustc_layout, r=eddyb
add #[rustc_layout(debug)]

@eddyb recently told me about the `#[rustc_layout]` attribute, and I think it would be very useful if it could be used to print all the layout information Rust has about a type. When working with layouts (e.g. in Miri), it is often not clear how certain surface language features get represented internally. I have some awful hacks locally to be able to dump this debug information; with this attribute I could get it on the playground which is so much better. :)
2020-03-21 13:06:35 +01:00