Commit Graph

9421 Commits

Author SHA1 Message Date
Mazdak Farrokhzad
7944f39b5f Rollup merge of #70939 - varkor:const-generics-regression-tests, r=Centril
Add two const generics regression tests

Closes https://github.com/rust-lang/rust/issues/66596.
Closes https://github.com/rust-lang/rust/issues/61522.
2020-04-09 18:17:20 +02:00
varkor
0f0252260c Add regression test for #61522 2020-04-09 11:53:28 +01:00
varkor
61cc8925b2 Add regression test for #66596 2020-04-09 11:52:52 +01:00
Mazdak Farrokhzad
4f00396f14 Rollup merge of #70916 - Centril:track-caller-ffi, r=eddyb
Support `#[track_caller]` on functions in `extern "Rust" { ... }`

Fixes https://github.com/rust-lang/rust/issues/70830 which is the follow-up to @eddyb's suggestion in https://github.com/rust-lang/rust/pull/69251#discussion_r380791634 to allow `#[track_caller]` on `fn`s in FFI imports, that is, on functions in `extern "Rust" { ... }` blocks.

This requires that the other side, the FFI export, also have the `#[track_caller]` attribute. Otherwise, undefined behavior is triggered and the blame lies, as usual, with the `unsafe { ... }` block which called the FFI imported function.

After this PR, all forms of `fn` items with the right ABI (`"Rust"`) support `#[track_caller]`.

As a drive-by, the PR also hardens the check rejecting `#[naked] #[track_caller]` such that methods and other forms of `fn` items are also considered.

r? @eddyb
cc @rust-lang/lang
2020-04-09 05:29:45 +02:00
Mazdak Farrokhzad
a209b4f447 Rollup merge of #70822 - jonas-schievink:curse-of-the-recursion, r=ecstatic-morse
Don't lint for self-recursion when the function can diverge

Fixes https://github.com/rust-lang/rust/issues/54444
2020-04-09 05:29:40 +02:00
Mazdak Farrokhzad
ba50bc588e Rollup merge of #70367 - nikomatsakis:issue-69307, r=Aaron1011
save/restore `pessimistic_yield` when entering bodies

This flag is used to make the execution order around `+=` operators
pessimistic. Failure to save/restore the flag was causing independent
async blocks to effect one another, leading to strange ICEs and failed
assumptions.

Fixes #69307

r? @Zoxc
2020-04-09 05:29:38 +02:00
Mazdak Farrokhzad
45589b52fe track_caller: support on FFI imports 2020-04-09 04:55:05 +02: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
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
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
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
Mazdak Farrokhzad
a928f64464 Rollup merge of #70640 - jonas-schievink:async-ice, r=cramertj
Hide `task_context` when lowering body

Fixes https://github.com/rust-lang/rust/issues/70594
2020-04-03 22:55:07 +02:00
Mazdak Farrokhzad
17a59fb29c Rollup merge of #70576 - Rustin-Liu:rustin-patch-link-cfg, r=varkor
Update the description of the ticket to point at RFC 1721

Fixes #70538.

My first PR to rust. So please let me know if I'm doing something wrong.
2020-04-03 22:55:03 +02:00