Aaron Hill
5923218761
Add test for bad NLL higher-ranked subtype
...
Fixes #57642
2020-10-23 14:13:37 -04:00
bors
7bade6ef73
Auto merge of #77015 - davidtwco:check-attr-variant-closure-expr, r=lcnr
...
passes: `check_attr` on more targets
This PR modifies `check_attr` so that:
- Enum variants are now checked (some attributes would not have been prohibited on variants previously).
- `check_expr_attributes` and `check_stmt_attributes` are removed as `check_attributes` can perform the same checks. This means that codegen attribute errors aren't shown if there are other errors first (e.g. from other attributes, as shown in `src/test/ui/macros/issue-68060.rs` changes below).
2020-10-23 17:32:04 +00:00
Esteban Küber
f5d7443a6b
Suggest semicolon removal and boxing when appropriate
2020-10-23 08:06:41 -07:00
Esteban Küber
c5485115dc
Add more .await suggestions on E0308
2020-10-23 08:06:41 -07:00
Esteban Küber
1829b4a887
Add test case for different impl Futures
2020-10-23 08:06:41 -07:00
Esteban Küber
3a0227bc49
Silence unnecessary await foo? knock-down error
2020-10-23 08:06:41 -07:00
Esteban Küber
671d7c4afb
Account for possible boxable impl Future in semicolon removal suggestions
2020-10-23 08:06:13 -07:00
Esteban Küber
a4ee3ca1e4
Suggest semicolon removal on prior match arm
2020-10-23 08:02:58 -07:00
Esteban Küber
86df9039b2
Tweak "use .await" suggestion
2020-10-23 08:02:57 -07:00
Bastian Kauschke
47cb871f14
review
2020-10-23 15:04:12 +02:00
Bastian Kauschke
6ad140ca19
const_eval_checked: deal with unused nodes + div
2020-10-23 12:16:58 +02:00
Yuki Okushi
b5d2ff0fd8
Rollup merge of #78265 - JohnTitor:type-iference-diag-test, r=lcnr
...
Add some inference-related regression tests about incorrect diagnostics
Closes #71732
Closes #72616
2020-10-23 18:26:44 +09:00
Yuki Okushi
6884632be1
Rollup merge of #78263 - JohnTitor:mir-opt-ice-test, r=lcnr
...
Add regression test of issue-77668
Closes #77668
2020-10-23 18:26:42 +09:00
Yuki Okushi
7ba519ec50
Rollup merge of #78255 - dtolnay:match, r=lcnr
...
Reduce diagram mess in 'match arms have incompatible types' error
I noticed this wild diagram in https://twitter.com/a_hoverbear/status/1318960787105353728 which I think does not benefit from the big outer vertical span.
This PR shrinks the outer span to cover just the `match` keyword and scrutinee expression *if* at least one of the highlighted match arms involved in the error is multiline.
**Before:**
<pre>
<b>error[E0308]: `match` arms have incompatible types</b>
<b>--></b> src/topology/builder.rs:141:35
<b>|</b>
<b>120 |</b> let transform = match transform {
<b>| _________________________-</b>
<b>121 | |</b> Transform::Function(t) => {
<b>| _|_______________________________________-</b>
<b>122 | | |</b> filter_event_type(input_rx, input_type).compat().flat_map(|v| {
<b>123 | | |</b> futures::stream::iter(match v {
<b>124 | | |</b> Err(e) => {
<b>... | |</b>
<b>139 | | |</b> .compat();
<b>140 | | |</b> }
<b>| |_|_____________- this is found to be of type `()`</b>
<b>141 | |</b> Transform::Task(t) => t
<b>| _|___________________________________^</b>
<b>142 | | |</b> .transform(filter_event_type(input_rx, input_type))
<b>143 | | |</b> .forward(output)
<b>144 | | |</b> .map(|_| debug!("Finished"))
<b>145 | | |</b> .compat(),
<b>| |_|_________________________^ expected `()`, found struct `futures::compat::Compat01As03`</b>
<b>146 | |</b> };
<b>| |_________- `match` arms have incompatible types</b>
<b>|</b>
<b>= note:</b> expected type `<b>()</b>`
found struct `<b>futures::compat::Compat01As03<futures::Map<futures::stream::Forward<std::boxed::Box<dyn futures::Stream<Error = (), Item = event::Event> + std::marker::Send>, topology::fanout::Fanout>, [closure@src/topology/builder.rs:144:22: 144:44]>></b>`
</pre>
**After:**
<pre>
<b>error[E0308]: `match` arms have incompatible types</b>
<b>--></b> src/topology/builder.rs:141:35
<b>|</b>
<b>120 |</b> let transform = match transform {
<b>| --------------- `match` arms have incompatible types</b>
<b>121 |</b> Transform::Function(t) => {
<b>| _________________________________________-</b>
<b>122 | |</b> filter_event_type(input_rx, input_type).compat().flat_map(|v| {
<b>123 | |</b> futures::stream::iter(match v {
<b>124 | |</b> Err(e) => {
<b>... |</b>
<b>139 | |</b> .compat();
<b>140 | |</b> }
<b>| |_______________- this is found to be of type `()`</b>
<b>141 |</b> Transform::Task(t) => t
<b>| _____________________________________^</b>
<b>142 | |</b> .transform(filter_event_type(input_rx, input_type))
<b>143 | |</b> .forward(output)
<b>144 | |</b> .map(|_| debug!("Finished"))
<b>145 | |</b> .compat(),
<b>| |___________________________^ expected `()`, found struct `futures::compat::Compat01As03`</b>
<b>|</b>
<b>= note:</b> expected type `<b>()</b>`
found struct `<b>futures::compat::Compat01As03<futures::Map<futures::stream::Forward<std::boxed::Box<dyn futures::Stream<Error = (), Item = event::Event> + std::marker::Send>, topology::fanout::Fanout>, [closure@src/topology/builder.rs:144:22: 144:44]>></b>`
</pre>
FYI @Hoverbear
2020-10-23 18:26:40 +09:00
Yuki Okushi
3f462c22b5
Rollup merge of #78235 - Aaron1011:closure-ret-infer, r=varkor
...
Explain where the closure return type was inferred
Fixes #78193
2020-10-23 18:26:39 +09:00
Yuki Okushi
00c4dcdbb4
Rollup merge of #78231 - LeSeulArtichaut:closure-target_feature, r=nikomatsakis
...
Make closures inherit the parent function's target features
r? @ghost
Closes #73631
2020-10-23 18:26:37 +09:00
Yuki Okushi
982c4b3081
Rollup merge of #78116 - spastorino:inline-const-in-range-pat, r=petrochenkov
...
Make inline const work in range patterns
Fixes #78108 which is a follow up of https://github.com/rust-lang/rust/pull/77124
r? @petrochenkov
2020-10-23 18:26:30 +09:00
Yuki Okushi
47042594cb
Rollup merge of #77920 - ayazhafiz:i/mut-ident-spacing, r=jyn514
...
Avoid extraneous space between visibility kw and ident for statics
Today, given a static like `static mut FOO: usize = 1`, rustdoc would
emit `static mut FOO: usize = 1`, as it emits both the mutability kw
with a space and reserves a space after the mutability kw. This patch
fixes that misformatting.
This patch also adds some tests for emit of other statics, as I could
not find an existing test devoted to statics.
2020-10-23 18:26:24 +09:00
Yuki Okushi
da3e41e8d3
Rollup merge of #77488 - varkor:repr128-incomplete_features, r=jonas-schievink
...
Mark `repr128` as `incomplete_features`
As mentioned in https://github.com/rust-lang/rust/issues/56071 and noticed in https://github.com/rust-lang/rust/issues/77457 , `repr(u128)` and `repr(i128)` do not work properly due to lack of LLVM support. We should thus warn users trying to use the feature that they may encounter ICEs when using it.
Closes https://github.com/rust-lang/rust/issues/77457 .
2020-10-23 18:26:18 +09:00
Yuki Okushi
98e13169ad
Add regression test for issue-71732
2020-10-23 16:41:34 +09:00
Yuki Okushi
043fab3fd5
Make it regression test of issue-77668
2020-10-23 16:28:58 +09:00
Yuki Okushi
5b32c84952
Add a regression test for issue-72616
2020-10-23 16:10:19 +09:00
Yuki Okushi
09135e4e75
Add regression test for issue-77475
2020-10-23 16:09:17 +09:00
Tyler Mandry
d0d0e78208
Capture output from threads spawned in tests
...
Fixes #42474 .
2020-10-22 18:15:44 -07:00
David Tolnay
b0059500f6
Reduce diagram mess in 'match arms have incompatible types' error
2020-10-22 16:16:02 -07:00
Dániel Buga
3815c6abba
Add codegen test for #45964
2020-10-23 01:15:08 +02:00
David Tolnay
f82adf5bdb
Add test of incompatible match arm types with multiline arm
2020-10-22 16:11:57 -07:00
Aaron Hill
d3369e6210
Bump LLVM for DeadArgElim fix
...
Fixes #76387
Pulls in https://github.com/rust-lang/llvm-project/pull/82
2020-10-22 18:37:03 -04:00
varkor
d1c2815d6a
Use diverges instead of !-type
2020-10-22 23:12:46 +01:00
Bastian Kauschke
40ab18d97d
improve const infer error
2020-10-22 23:07:48 +02:00
Simon Vandel Sillesen
57d01a9aee
Check which places are dead
...
Fixes #78192
2020-10-22 22:23:56 +02:00
Mara Bos
713012780f
Add test for const panic!(CONST).
2020-10-22 18:41:35 +02:00
Santiago Pastorino
5656a4151e
Bless tests
2020-10-22 13:22:15 -03:00
Santiago Pastorino
5bef429dac
Add ..= const { .. } missing tests and sort them properly
2020-10-22 13:22:14 -03:00
Santiago Pastorino
83abed9df6
Make inline const work for half open ranges
2020-10-22 13:22:12 -03:00
Santiago Pastorino
f8842b9bac
Make inline const work in range patterns
2020-10-22 13:21:18 -03:00
Aaron Hill
36a5244da3
Explain where the closure return type was inferred
...
Fixes #78193
2020-10-22 10:44:55 -04:00
bors
a9cd294cf2
Auto merge of #77720 - matthewjasper:fix-trait-ices, r=nikomatsakis
...
Fix trait solving ICEs
- Selection candidates that are known to be applicable are preferred
over candidates that are not.
- Don't ICE if a projection/object candidate is no longer applicable
(this can happen due to cycles in normalization)
- Normalize supertraits when finding trait object candidates
Closes #77653
Closes #77656
r? `@nikomatsakis`
2020-10-22 14:40:20 +00:00
LeSeulArtichaut
b4a9854afe
Fixup: add missing trailing newline
2020-10-22 14:37:42 +02:00
LeSeulArtichaut
769b4108e2
Make closures inherit the parent function's target features
2020-10-22 13:55:19 +02:00
Bastian Kauschke
4a15a25662
min_const_generics: allow ty param in repeat expr
2020-10-22 10:43:28 +02:00
Matthew Jasper
50dde2e4d8
Normalize when finding trait object candidates
2020-10-22 08:18:29 +01:00
Yuki Okushi
f5127de942
Rollup merge of #78172 - wesleywiser:close_77062, r=oli-obk
...
Add test case for #77062
Closes #77062
2020-10-22 09:45:42 +09:00
Yuki Okushi
ae95005ecc
Rollup merge of #77976 - oliviacrain:issue-77915-fix, r=matthewjasper
...
Mark inout asm! operands as used in liveness pass
Variables used in `inout` operands in inline assembly (that is, they're used as both input and output to some arbitrary assembly instruction) are being marked as read and written, but are not marked as being used in the RWU table during the liveness pass. This can result in such expressions triggering an unused variable lint warning. This is incorrect behavior- reads without uses are currently only used for compound assignments. We conservatively assume that an `inout` operand is being read and used in the context of the assembly instruction.
Closes #77915
2020-10-22 09:45:33 +09:00
Yuki Okushi
813066c442
Rollup merge of #77554 - varkor:mangle-int-char, r=eddyb
...
Support signed integers and `char` in v0 mangling
Likely we want more tests, to check the output is correct too: however, I wasn't sure what kind of test we needed, so I just added one similar to that added in https://github.com/rust-lang/rust/pull/77452 for now.
r? @eddyb
2020-10-22 09:45:31 +09:00
Yuki Okushi
6245b951d5
Rollup merge of #77420 - ecstatic-morse:const-checking-raw-mut-ref, r=davidtwco
...
Unify const-checking structured errors for `&mut` and `&raw mut`
Resolves #77414 as well as a FIXME.
2020-10-22 09:45:25 +09:00
Aaron Hill
37b25e8a49
Strip tokens before printing AST JSON
2020-10-21 19:44:33 -04:00
Aaron Hill
b9b2546417
Unconditionally capture tokens for attributes.
...
This allows us to avoid synthesizing tokens in `prepend_attr`, since we
have the original tokens available.
We still need to synthesize tokens when expanding `cfg_attr`,
but this is an unavoidable consequence of the syntax of `cfg_attr` -
the user does not supply the `#` and `[]` tokens that a `cfg_attr`
expands to.
2020-10-21 18:57:29 -04:00
varkor
e0b61111f8
Mark repr128 as incomplete_features
2020-10-21 23:41:26 +01:00
varkor
d415fae8b7
Add tests for uninhabited types
2020-10-21 22:52:41 +01:00