Commit graph

10975 commits

Author SHA1 Message Date
Mazdak Farrokhzad
45589b52fe track_caller: support on FFI imports 2020-04-09 04:55:05 +02:00
Esteban Küber
d605a9d969 Small tweaks to required bound span 2020-04-08 14:40:51 -07:00
Esteban Küber
bd7ea5441e Use PredicateObligations instead of Predicates
Keep more information about trait binding failures.
2020-04-08 14:40:45 -07:00
Dylan DPC
268f09f9e6
Rollup merge of #70912 - estebank:reduce-type-param-sugg-verbosity, r=davidtwco
Do not suggest adding type param when `use` is already suggested

Fix #70365, cc #70572.
2020-04-08 23:33:46 +02:00
Dylan DPC
6f8fc4d656
Rollup merge of #70906 - gizmondo:66107, r=estebank
Suggest move for closures and async blocks in more cases.

Fixes #66107, also improves #67577
Related PR https://github.com/rust-lang/rust/pull/65166
2020-04-08 23:33:45 +02:00
Dylan DPC
956e50bce1
Rollup merge of #70789 - lcnr:macros, r=varkor
remove false positives of unused_braces

fixes #70717

We could potentially be more aggressive when linting let bindings by checking if there are any explicit `ref`s.
I have been unable to create a snippet which compiles when using braces but has a borrowck error
without them. The closes I've gotten is [the following (playground)](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=4a1552ebe9648cb13fcb8dd969189a6c).

r? @eddyb
2020-04-08 18:37:16 +02:00
Alex Aktsipetrov
aaebbe196b Suggest move for closures and async blocks in more cases. 2020-04-08 13:01:53 +02:00
Eduard-Mihai Burtescu
9d13520a6b Replace "rc"/"arc" lang items with Rc/Arc diagnostic items. 2020-04-08 10:47:41 +03:00
CAD97
2fcfd233f7 Redesign the Step trait 2020-04-08 02:24:16 -04:00
YI
3ae974f025 fix misleading type annotation diagonstics
This solves the method call part of issue
https://github.com/rust-lang/rust/issues/69455
I added a `target_span` field so as to pin down the exact location of
the error. We need a dedicated field `found_exact_method_call` to
prioritize situations like the test case `issue-69455.rs`. If we reuse
`found_method_call`, `found_local_pattern` will show up first. We can
not move `found_method_call` up, it is undesirable in various
situations.
2020-04-08 11:52:29 +08:00
Mazdak Farrokhzad
f6c729d4a0 track_caller: harden naked interactions 2020-04-08 03:49:53 +02:00
Esteban Küber
a3e54b59f9 Do not suggest adding type param when use is already suggested
Fix #70365, cc #70572.
2020-04-07 18:07:26 -07:00
Bastian Kauschke
817f05986a remove false positives of unused_braces 2020-04-07 17:54:50 +02:00
Dylan DPC
89d661f15d
Rollup merge of #70857 - faern:use-assoc-int-float-consts, r=dtolnay
Don't import integer and float modules, use assoc consts 2

Follow up to #70777. I missed quite a lot of places. Partially because I wanted to keep the size of the last PR down, and partially because my regexes were not good enough :)

r? @dtolnay
2020-04-07 14:46:59 +02:00
bors
209b2be09f Auto merge of #70164 - eddyb:walk-generic-arg, r=nikomatsakis
ty/walk: iterate `GenericArg`s instead of `Ty`s.

Before this PR, `Ty::walk` only iterated over `Ty`s, but that's becoming an increasing problem with `const` generics, as `ty::Const`s in `Substs` are missed by it.

By working with `GenericArg` instead, we can handle both `Ty`s and `ty::Const`s, but also `ty::Region`s, which used to require ad-hoc mechanisms such as `push_regions`.

I've also removed `TraitRef::input_types`, as it's both long obsolete, and easy to misuse.
2020-04-07 04:01:26 +00:00
Linus Färnstrand
f7778d36c7 Use assoc integer constants in librustc_* 2020-04-07 00:43:16 +02:00
Eduard-Mihai Burtescu
0d4705b009 traits/coherence: stop using Ty::walk_shallow. 2020-04-06 21:55:43 +03:00
Niko Matsakis
cd9f709a33 add nested regression test 2020-04-06 14:51:00 +00:00
bors
bd18bc9a4c Auto merge of #70771 - RalfJung:ctfe-loop, r=oli-obk
Miri terminator handling: only do progress sanity check for 'Call' terminator

This will still catch mistakes in bad intrinsic/foreign-item shims, which is the main source of errors here.

Fixes https://github.com/rust-lang/rust/issues/70723
r? @oli-obk
2020-04-06 11:32:33 +00:00
Ralf Jung
83fb0b1e8c tweak rustc_layout debug output 2020-04-06 09:22:48 +02:00
Mazdak Farrokhzad
3faec69865
Rollup merge of #70827 - estebank:shorten-sugg-span-add-lt, r=ecstatic-morse
Use smaller span for suggestion restricting lifetime
2020-04-06 04:24:21 +02:00
Mazdak Farrokhzad
17fa3440d2
Rollup merge of #70739 - Centril:fix-70736, r=petrochenkov
def_collector, visit_fn: account for no body

Fixes #70736

r? @petrochenkov
2020-04-06 04:24:20 +02:00
Mazdak Farrokhzad
eea91c308f
Rollup merge of #70519 - estebank:constraints-before-args-spans, r=Centril
Tweak output of type params and constraints in the wrong order

r? @Centril @varkor
2020-04-06 04:24:15 +02:00
Steven Fackler
5dc8ec8dc3 Remove a stack frame from .await calls 2020-04-05 18:51:21 -07:00
Esteban Küber
17a95232b3 Reduce the visual clutter
Using a single label for constraints and generic arguments.
2020-04-05 17:03:20 -07:00
Tomasz Miąsko
d2b75586fc Move sanitize-inline-always test to sanitize directory 2020-04-06 00:00:00 +00:00
Esteban Küber
0664b81915 Use smaller span for suggestion restricting lifetime 2020-04-05 16:16:55 -07:00
Mazdak Farrokhzad
e1b380a675
Rollup merge of #70798 - estebank:satisfy, r=Centril
"cannot resolve" → "cannot satisfy"

CC #66523

r? @Centril
2020-04-06 00:53:48 +02:00
Jonas Schievink
87d859af24 Don't lint for self-recursion when the function can diverge 2020-04-06 00:53:16 +02:00
Ralf Jung
0ad3b1c9bf add test 2020-04-05 19:23:35 +02:00
Esteban Küber
0cd4c89366 "cannot resolve" → "cannot satisfy" 2020-04-05 10:14:04 -07:00
Dylan DPC
8c081f69fb
Rollup merge of #70815 - RalfJung:layout-debug, r=jonas-schievink
Enable layout debugging for `impl Trait` type aliases

I also made it print the actual type name that the alias picks under the hood.
2020-04-05 18:47:50 +02:00
Ralf Jung
8f6c109371 also print type type 2020-04-05 17:13:30 +02:00
Ralf Jung
4a75883a78 also print rustc_layout on impl trait type aliases 2020-04-05 17:07:06 +02:00
Dylan DPC
31b8d65803
Rollup merge of #70806 - RalfJung:miri-assignment-check, r=eddyb
fix Miri assignment sanity check

Thanks @eddyb for pointing me to the right APIs!

r? @eddyb
Fixes https://github.com/rust-lang/rust/issues/70804
2020-04-05 13:13:14 +02:00
Ralf Jung
315a3b96a4 add test 2020-04-05 11:56:02 +02:00
Dylan DPC
d0dda18bd1
Rollup merge of #70768 - petrochenkov:macambig, r=Centril,mark-i-m
macro_rules: `NtLifetime` cannot start with an identifier

Fixes https://github.com/rust-lang/rust/issues/70446
2020-04-05 06:44:48 +02:00
Dylan DPC
630414db42
Rollup merge of #70748 - ogoffart:enum-layout-optim2, r=eddyb
Do not disable field reordering on enums with big discriminant

The field are always re-ordered to minimize padding, regardless of the
alignment of the discriminant

(spinoff from #70477)
2020-04-05 06:44:44 +02:00
Vadim Petrochenkov
106b30e869 macro_rules: NtLifetime cannot start with an identifier 2020-04-04 16:23:43 +03:00
bors
49dc2f9f09 Auto merge of #70272 - eddyb:type-of-impl-trait, r=nikomatsakis
typeck/type_of: let wfcheck handle generics in opaque types' substs.

I was working on #70164, and `type_of`'s handling of opaque types seemed to be, by far, the trickiest use of `Ty::walk`, but I believe it wasn't doing anything (see https://github.com/rust-lang/rust/pull/57896#discussion_r396064431 - I suspect, based on glancing at the PR discussion, that an early attempt was kept in, despite becoming just an overcomplicated way to do exactly the same as the previous simple type equality check).

I would've loved to remove `ResolvedOpaqueTy` (keep the `Ty` and lose the `Substs`), but it looks like the MIR borrowck part of the process needs that now, so it would've been added anyway since #57896, even if that PR hadn't happened.

<hr/>

In the process, I've moved the remaining substitution validation to `wfcheck`, which was already handling lifetimes, and kept only `delay_span_bug`s in `type_of`, as an insurance policy.

I've added tests for lifetime and const cases, they seem to be checked correctly now.
(and more uniform than they were in https://github.com/rust-lang/rust/issues/63063#issuecomment-602162804)

However, the quality of the errors is maybe a bit worse, and they don't trigger when there are other errors (not sure if this is due to compilation stop points or something more specific to one opaque type).

r? @nikomatsakis cc @matthewjasper @oli-obk @Aaron1011
2020-04-04 09:16:19 +00:00
Kevin Per
2c6f84668e Drop this in error message to not reach 100 characters 2020-04-04 08:03:54 +00:00
Kevin Per
e21d101c45 Show open and closed braces of last proper block 2020-04-04 08:01:33 +00:00
Eduard-Mihai Burtescu
ea7999b4f3 tests: add tests for lifetime and const params of opaque types. 2020-04-04 08:29:06 +03:00
Eduard-Mihai Burtescu
8807b00dd8 typeck/type_of: let wfcheck handle duplicate generics in opaque types' substs. 2020-04-04 08:29:06 +03:00
Eduard-Mihai Burtescu
8e9a5d928a typeck/type_of: let wfcheck handle concrete types in opaque types' substs. 2020-04-04 08:20:58 +03:00
Eduard-Mihai Burtescu
a98b5340d1 typeck/type_of: don't ignore incorrect defining uses of opaque types. 2020-04-04 08:00:26 +03:00
Eduard-Mihai Burtescu
6465113852 typeck/type_of: simplify checking of opaque types with multipler defining uses. 2020-04-04 06:49:20 +03:00
Olivier Goffart
6b6cb7bda7 Do not disable field reordering on enums with big discriminant
The field are always re-ordered to minimize padding, regardless of the
alignment of the discriminant
2020-04-03 23:12:39 +02:00
Mazdak Farrokhzad
4c41ea36cd
Rollup merge of #70741 - DutchGhost:test-59023, r=Centril
Add test for #59023

Adds a test for https://github.com/rust-lang/rust/issues/59023

Closes https://github.com/rust-lang/rust/issues/59023
2020-04-03 22:55:16 +02:00
Mazdak Farrokhzad
80690b0418
Rollup merge of #70720 - ecstatic-morse:issue-70637, r=oli-obk
Place TLS initializers with relocations in .tdata

Should fix #70673, although I'm not sure how to test this. Perhaps @joshlf could find a MCVE?

Also adds more context to the FIXME.

r? @oli-obk
2020-04-03 22:55:12 +02:00