Florian Warzecha
ac2c599f23
fix validation for rustc_allow_const_fn_unstable targets
...
The validation was introduced in 3a63bf0299
without strict validation of functions, e. g. all function types were
allowed.
Now the validation only allows `const fn`s.
2020-10-23 17:54:48 +02:00
Florian Warzecha
13b481b247
rename allow_internal_unstable() to rustc_allow_const_fn_unstable() in rustc_mir
...
Followup rename from 05f4a9a42a ,
which introduced `#[rustc_allow_const_fn_unstable]` for `const fn`s.
2020-10-23 17:14:57 +02: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
3a0227bc49
Silence unnecessary await foo? knock-down error
2020-10-23 08:06:41 -07:00
Esteban Küber
62ba365195
Review comments: use newtype instead of bool
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
Florian Warzecha
83fbdddc99
ignore #[rustc_allow_const_fn_unstable] for macro expansion
...
Recognition for `rustc_allow_const_fn_unstable` attribute was errorneously
added in 05f4a9a42a .
2020-10-23 16:54:25 +02:00
Bastian Kauschke
47cb871f14
review
2020-10-23 15:04:12 +02:00
Bastian Kauschke
972d9e886c
move visit_predicate into TypeVisitor
2020-10-23 13:58:32 +02:00
Bastian Kauschke
6ad140ca19
const_eval_checked: deal with unused nodes + div
2020-10-23 12:16:58 +02: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
709de7817d
Rollup merge of #78098 - camelid:fixup-docs, r=steveklabnik
...
Clean up and improve some docs
* compiler docs
* Don't format list as part of a code block
* Clean up some other formatting
* rustdoc book
* Update CommonMark spec version to latest (0.28 -> 0.29)
* Clean up some various wording and formatting
2020-10-23 18:26:28 +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
Bastian Kauschke
e1c524cd45
review
2020-10-23 09:52:04 +02:00
Tyler Mandry
d0d0e78208
Capture output from threads spawned in tests
...
Fixes #42474 .
2020-10-22 18:15:44 -07:00
Leonora Tindall
bc2317915f
Don't re-export std::ops::ControlFlow in the compiler.
2020-10-22 17:26:55 -07:00
Leonora Tindall
84daccc559
change the order of type arguments on ControlFlow
...
This allows ControlFlow<BreakType> which is much more ergonomic for
common iterator combinator use cases.
2020-10-22 17:26:48 -07:00
David Tolnay
b0059500f6
Reduce diagram mess in 'match arms have incompatible types' error
2020-10-22 16:16:02 -07: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
Camille GILLOT
57ba8edb9e
Retire rustc_dep_node_try_load_from_on_disk_cache.
2020-10-22 23:04:46 +02:00
Camille GILLOT
e853cc0b28
Retire rustc_dep_node_force.
2020-10-22 22:57:19 +02:00
Camille GILLOT
de7da7fd3d
Unify query name and node name.
2020-10-22 22:49:04 +02:00
Camille GILLOT
de763701e1
Remove unused category from macros.
2020-10-22 22:43:38 +02:00
Camille GILLOT
0a4d948b4a
Remove unused ProfileCategory.
2020-10-22 22:35:32 +02:00
Simon Vandel Sillesen
57d01a9aee
Check which places are dead
...
Fixes #78192
2020-10-22 22:23:56 +02:00
Aaron Hill
5c7d8d049c
Only call collect_tokens when we have an attribute to parse
2020-10-22 15:17:40 -04:00
Bastian Kauschke
567d55ef9e
fix save-analysis
2020-10-22 21:11:50 +02:00
Mara Bos
4f7ffbf351
Fix const core::panic!(non_literal_str).
2020-10-22 18:41:35 +02: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
Santiago Pastorino
954b5a81b4
Rename parse_const_expr to parse_const_block
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
Aaron Hill
920bed1213
Don't create an empty LazyTokenStream
2020-10-22 10:09:08 -04:00
bors
500ddc5efd
Auto merge of #77871 - Julian-Wollersberger:less-query-context, r=oli-obk
...
Make fewer types generic over QueryContext
While trying to refactor `rustc_query_system::query::QueryContext` to make it dyn-safe, I noticed some smaller things:
* QueryConfig doesn't need to be generic over QueryContext
* ~~The `kind` field on QueryJobId is unused~~
* Some unnecessary where clauses
* Many types in `job.rs` where generic over `QueryContext` but only needed `QueryContext::Query`.
If handle_cycle_error() could be refactored to not take `error: CycleError<CTX::Query>`, all those bounds could be removed as well.
Changing `find_cycle_in_stack()` in job.rs to not take a `tcx` argument is the only functional change here. Everything else is just updating type signatures. (aka compile-error driven development ^^)
~~Currently there is a weird bug where memory usage suddenly skyrockets when running UI tests. I'll investigate that tomorrow.
A perf run probably won't make sense before that is fixed.~~
EDIT: `kind` actually is used by `Eq`, and re-adding it fixed the memory issue.
2020-10-22 12:24:55 +00: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
bors
6b9fbf212a
Auto merge of #78134 - bugadani:arena-nodrop, r=lcnr
...
Use `DroplessArena` where we know the type doesn't need drop
This PR uses a single `DroplessArena` in resolve instead of three separate `TypedArena`s.
`DroplessArena` checks that the type indeed doesn't need drop, so in case the types change, this will result in visible failures.
2020-10-22 07:05:21 +00:00
Yuki Okushi
6fdd53b7de
Prefer to use print_def_path
2020-10-22 14:40:09 +09:00
bors
ef3e386393
Auto merge of #78212 - JohnTitor:rollup-j5r6xuy, r=JohnTitor
...
Rollup of 10 pull requests
Successful merges:
- #77420 (Unify const-checking structured errors for `&mut` and `&raw mut`)
- #77554 (Support signed integers and `char` in v0 mangling)
- #77976 (Mark inout asm! operands as used in liveness pass)
- #78009 (Haiku: explicitly set CMAKE_SYSTEM_NAME when cross-compiling)
- #78084 (Greatly improve display for small mobile devices screens)
- #78155 (Fix two small issues in compiler/rustc_lint/src/types.rs)
- #78156 (Fixed build failure of `rustfmt`)
- #78172 (Add test case for #77062 )
- #78188 (Add tracking issue number for pin_static_ref)
- #78200 (Add `ControlFlow::is_{break,continue}` methods)
Failed merges:
r? `@ghost`
2020-10-22 01:35:05 +00:00
Camelid
d725da129e
Clean up and improve some docs
...
* compiler docs
* Don't format list as part of a code block
* Clean up some other formatting
* rustdoc book
* Update CommonMark spec version to latest (0.28 -> 0.29)
* Clean up some various wording and formatting
2020-10-21 18:01:04 -07:00
Yuki Okushi
513550cd1f
Rollup merge of #78156 - bishtpawan:bugfix/rustfmt-no-longer-builds, r=lcnr
...
Fixed build failure of `rustfmt`
Fixes #78079
r? @eddyb cc @bjorn3
2020-10-22 09:45:40 +09:00