Dániel Buga
f88d6e8437
Loop instead of recursion
2020-10-24 01:24:58 +02:00
Rich Kadel
f75a236fe0
Update compiler/rustc_codegen_llvm/src/coverageinfo/mapgen.rs
...
Co-authored-by: Wesley Wiser <wwiser@gmail.com>
2020-10-23 14:58:08 -07:00
Bastian Kauschke
83ecbb4a29
add tests for self with const params
2020-10-23 22:10:44 +02:00
Tyler Mandry
6640a62e0e
Revert "Set .llvmbc and .llvmcmd sections as allocatable"
2020-10-23 12:54:00 -07:00
Esteban Küber
f71e9ed7f1
review comments
2020-10-23 12:51:06 -07:00
Esteban Küber
b334eef162
Do not ICE with TraitPredicates containing [type error]
...
Fix #77919 .
2020-10-23 12:21:47 -07:00
Rich Kadel
a7bc1a2edf
Make codegen coverage_context optional, and check
...
Addresses Issue #78286
Libraries compiled with coverage and linked with out enabling coverage
would fail when attempting to add the library's coverage statements to
the codegen coverage context (None).
Now, if coverage statements are encountered while compiling / linking
with `-Z instrument-coverage` disabled, codegen will *not* attempt to
add code regions to a coverage map, and it will not inject the LLVM
instrprof_increment intrinsic calls.
2020-10-23 12:00:30 -07: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
Florian Warzecha
ac2c599f23
fix validation for rustc_allow_const_fn_unstable targets
...
The validation was introduced in 3a63bf02998f7b5e040a4b87e049d03ddd144f74
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 05f4a9a42abbbdb64d3ec4ed0ae6883c10c66e3f,
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 05f4a9a42abbbdb64d3ec4ed0ae6883c10c66e3f.
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