Jonas Schievink
853cfd462f
Rollup merge of #81504 - matsujika:suggestion-field-access, r=estebank
...
Suggest accessing field when appropriate
Fix #81222
r? ``@estebank``
2021-02-01 14:29:37 +01:00
Jonas Schievink
9e8753e2bb
Rollup merge of #81463 - matsujika:nll-ensure-c-case, r=varkor
...
Rename NLL* to Nll* accordingly to C-CASE
Given [C-CASE](https://rust-lang.github.io/api-guidelines/naming.html#casing-conforms-to-rfc-430-c-case ), `NLLRegionVariableOrigin` and `NLL` are encouraged to be `NllRegionVariableOrigin` and `Nll` respectively.
2021-02-01 14:29:35 +01:00
Hirochika Matsumoto
f45a99361a
Rustfmt
2021-01-31 16:52:46 +09:00
Hirochika Matsumoto
a292ac7177
Fix prefix of debug log
2021-01-31 16:49:33 +09:00
Hirochika Matsumoto
6bc9634de3
Rename function to suggest_accessing_field_where_appropriate
2021-01-30 14:25:43 +09:00
Hirochika Matsumoto
2ce2d145c2
Account for union
2021-01-30 14:18:50 +09:00
Hirochika Matsumoto
08d31e0f09
Remove logging iterator
2021-01-30 13:50:44 +09:00
Hirochika Matsumoto
9e4ed337c7
Suggest accessing field when code compiles with it
2021-01-29 06:52:49 +09:00
Hirochika Matsumoto
f8e0e78d75
Rename NLL* to Nll* accordingly to C-CASE
2021-01-28 16:18:25 +09:00
Yuki Okushi
446edd1e1a
Rollup merge of #79951 - LeSeulArtichaut:ty-ir, r=nikomatsakis
...
Refractor a few more types to `rustc_type_ir`
In the continuation of #79169 , ~~blocked on that PR~~.
This PR:
- moves `IntVarValue`, `FloatVarValue`, `InferTy` (and friends) and `Variance`
- creates the `IntTy`, `UintTy` and `FloatTy` enums in `rustc_type_ir`, based on their `ast` and `chalk_ir` equilavents, and uses them for types in the rest of the compiler.
~~I will split up that commit to make this easier to review and to have a better commit history.~~
EDIT: done, I split the PR in commits of 200-ish lines each
r? `````@nikomatsakis````` cc `````@jackh726`````
2021-01-28 15:09:02 +09:00
LeSeulArtichaut
50e1ae15e9
Use ty::{IntTy,UintTy,FloatTy} in rustc
2021-01-18 21:09:30 +01:00
Daiki Ihara
db95b5ca9b
Add suggestion for impl_candidates with E0283
...
Update compiler/rustc_infer/src/infer/error_reporting/need_type_info.rs
Co-authored-by: Esteban Kuber <estebank@users.noreply.github.com>
2021-01-18 21:57:15 +09:00
Jack Huey
dcad9f1893
More review comments
2021-01-16 18:56:37 -05:00
Jack Huey
3dea68de1d
Review changes
2021-01-16 18:56:37 -05:00
Jack Huey
476bd53058
Cleanup
2021-01-16 18:50:34 -05:00
Jack Huey
e76476afe4
Cleanup
2021-01-16 18:40:47 -05:00
Jack Huey
4cd6f85a07
Remove PredicateKind
2021-01-16 18:40:47 -05:00
Jack Huey
8278314a8b
Remove PredicateKind::Atom
2021-01-16 18:40:47 -05:00
LingMan
a56bffb4f9
Use Option::map_or instead of .map(..).unwrap_or(..)
2021-01-14 19:23:59 +01:00
bors
fc93e4719c
Auto merge of #80960 - Dylan-DPC:rollup-89tri8x, r=Dylan-DPC
...
Rollup of 10 pull requests
Successful merges:
- #78901 (diagnostics: Note capturing closures can't be coerced to fns)
- #79588 (Provide more information for HRTB lifetime errors involving closures)
- #80232 (Remove redundant def_id lookups)
- #80662 (Added support for i386-unknown-linux-gnu and i486-unknown-linux-gnu)
- #80736 (use Once instead of Mutex to manage capture resolution)
- #80796 (Update to LLVM 11.0.1)
- #80859 (Fix --pretty=expanded with --remap-path-prefix)
- #80922 (Revert "Auto merge of #76896 - spastorino:codegen-inline-fns2)
- #80924 (Fix rustdoc --test-builder argument parsing)
- #80935 (Rename `rustc_middle::lint::LevelSource` to `LevelAndSource`)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2021-01-13 04:29:45 +00:00
bors
150d1fee04
Auto merge of #79322 - jyn514:refactor-impl, r=estebank
...
Separate out a `hir::Impl` struct
This makes it possible to pass the `Impl` directly to functions, instead
of having to pass each of the many fields one at a time. It also
simplifies matches in many cases.
See `rustc_save_analysis::dump_visitor::process_impl` or `rustdoc::clean::clean_impl` for a good example of how this makes `impl`s easier to work with.
r? `@petrochenkov` maybe?
2021-01-13 01:40:41 +00:00
Joshua Nelson
a8ff647deb
Separate out a hir::Impl
struct
...
This makes it possible to pass the `Impl` directly to functions, instead
of having to pass each of the many fields one at a time. It also
simplifies matches in many cases.
2021-01-12 20:32:33 -05:00
Esteban Küber
a8a974245e
Provide more information for HRTB lifetime errors involving closures
2021-01-12 13:53:13 -08:00
William Bain
d46c3e3411
Tweak ?
inference error messages
2021-01-10 19:48:11 -05:00
William Bain
62a39ed526
Extract parent def handling for infer failure err
2021-01-10 19:48:11 -05:00
William Bain
b9d9776fea
Refactor cannot infer ...
message rendering
2021-01-10 19:48:10 -05:00
William Bain
0496fdee4f
Note inference failures using ?
conversion
2021-01-10 19:47:57 -05:00
Yuki Okushi
faf8beddef
Rollup merge of #80637 - LingMan:filter, r=oli-obk
...
Use Option::filter instead of open-coding it
`@rustbot` modify labels +C-cleanup +T-compiler
2021-01-05 09:52:42 +09:00
LingMan
203d5025bb
Use Option::filter instead of open-coding it
2021-01-03 05:53:15 +01:00
Matthias Krüger
8a90626a46
reduce borrowing and (de)referencing around match patterns (clippy::match_ref_pats)
2021-01-02 20:09:17 +01:00
Rémy Rakic
1fc3c4c16d
adjust const generics defaults FIXMEs to the new feature gate
2021-01-01 11:01:01 +01:00
Yuki Okushi
7008911080
FIx ICE on wf check for foreign fns
2020-12-31 11:25:53 +09:00
Yuki Okushi
41fa0dba27
Rollup merge of #80509 - matthiaskrgr:ptr_arg, r=varkor
...
where possible, pass slices instead of &Vec or &String (clippy::ptr_arg)
2020-12-30 22:49:26 +09:00
Matthias Krüger
bdc9291ed9
where possible, pass slices instead of &Vec or &String (clippy::ptr_arg)
2020-12-30 13:11:52 +01:00
Yuki Okushi
a309468a8c
Rollup merge of #80348 - matthiaskrgr:less_clones, r=Dylan-DPC
...
remove redundant clones (clippy::redundant_clone)
2020-12-30 18:15:04 +09:00
Dylan DPC
c51172f38a
Rollup merge of #80344 - matthiaskrgr:matches, r=Dylan-DPC
...
use matches!() macro in more places
2020-12-28 14:13:12 +01:00
Matthias Krüger
d12a358673
use matches!() macro in more places
2020-12-24 13:35:12 +01:00
Matthias Krüger
6e852cc4ce
remove redundant clones (clippy::redundant_clone)
2020-12-24 12:59:22 +01:00
Matthew Jasper
2e92b13a60
Prevent caching projections in the case of cycles
...
When normalizing a projection which results in a cycle, we would
cache the result of `project_type` without the nested obligations
(because they're not needed for inference). This would result in
the nested obligations only being handled once in fulfill, which
would avoid the cycle error.
Fixes #79714 , a regresion from #79305 caused by the removal of
`get_paranoid_cache_value_obligation`.
2020-12-20 21:47:51 +00:00
bors
b1964e60b7
Auto merge of #80163 - jackh726:binder-refactor-part-3, r=lcnr
...
Make BoundRegion have a kind of BoungRegionKind
Split from #76814
Also includes making `replace_escaping_bound_vars` only return `T`
Going to r? `@lcnr`
Feel free to reassign
2020-12-20 07:01:00 +00:00
bors
0c11b93f5a
Auto merge of #79635 - lcnr:const-eval-idk, r=oli-obk
...
const_evaluatable_checked: fix occurs check
fixes #79615
this is kind of a hack because we use `TypeRelation` for both the `Generalizer` and the `ConstInferUnifier` but i am not sure if there is a useful way to disentangle this without unnecessarily duplicating some code.
The error in the added test is kind of unavoidable until we erase the unused substs of `ConstKind::Unevaluated`. We talked a bit about this in the cg lazy norm meeting (https://rust-lang.zulipchat.com/#narrow/stream/260443-project-const-generics/topic/lazy_normalization_consts )
2020-12-20 00:50:46 +00:00
Jack Huey
5e7095850c
More rebinds
2020-12-19 04:26:35 -05:00
Jack Huey
af3b1cb0b5
Change potentially_qualified to be defined on Binder<PredicateAtom>
2020-12-18 15:57:12 -05:00
Jack Huey
328fcee4af
Make BoundRegion have a kind of BoungRegionKind
2020-12-18 15:27:28 -05:00
Dylan DPC
da89dbb41a
Rollup merge of #80046 - camelid:diag-docs, r=lcnr
...
Add more documentation to `Diagnostic` and `DiagnosticBuilder`
cc `@estebank`
2020-12-18 00:30:20 +01:00
Camelid
10487cd784
Fix typo in method name
...
unsuccessfull -> unsuccessful
2020-12-16 14:59:12 -08:00
Jack Huey
ed80815bf2
Move binder for dyn to each list item
2020-12-11 15:02:46 -05:00
Matthias Krüger
20f8538d1f
simplify if let Some(_) = x to if x.is_some() (clippy::redundant_pattern_matching)
2020-12-08 20:27:49 +01:00
Matthias Krüger
1734f9c291
remove redundant clones
2020-12-05 12:59:54 +01:00
Benjamin Peterson
76ff0f408a
The details of higher-rank sub are in the rustc book not a doc module.
2020-12-03 23:38:36 -06:00
Bastian Kauschke
806c7281ec
add comment to visit_ct_substs
2020-12-02 16:41:01 +01:00
Santiago Pastorino
37354ebc97
Revert "Auto merge of #79209 - spastorino:trait-inheritance-self, r=nikomatsakis"
...
This reverts commit 349b3b324d
, reversing
changes made to b776d1c3e3
.
2020-12-02 12:19:38 -03:00
Bastian Kauschke
71d7550350
const_evaluatable_checked: fix occurs check
2020-12-02 15:31:27 +01:00
Santiago Pastorino
ada7c1f429
Return FxIndexSet instead of FxHashSet to avoid order errors on different platforms
2020-11-27 18:45:34 -03:00
Santiago Pastorino
28446ef19e
Inline elaborate_trait_refs_that_define_assoc_type into transitive_bounds_that_define_assoc_type
2020-11-27 11:23:52 -03:00
Santiago Pastorino
9e0538bd07
Document elaborate_trait_refs_that_define_assoc_type
2020-11-27 11:23:51 -03:00
Santiago Pastorino
2ca4964db5
Allow to self reference associated types in where clauses
2020-11-27 11:23:47 -03:00
Jonas Schievink
9b2117d1f6
Rollup merge of #77758 - Stupremee:turbofish-help-for-const, r=varkor
...
suggest turbofish syntax for uninferred const arguments
When not providing a const generic value, and it can not be inferred, the following suggestion is suggested:
![image](https://user-images.githubusercontent.com/39732259/95616180-af127b80-0a69-11eb-8877-551c815f9627.png )
Resolves #76737
r? ``@varkor``
2020-11-26 13:39:00 +01:00
Jonas Schievink
ee6f42ba94
Thread Constness
through selection
2020-11-22 02:13:53 +01:00
LeSeulArtichaut
f59d03038c
Move rustc_ty
-> rustc_ty_utils
2020-11-19 21:57:29 +01:00
Justus K
4379a43e46
Suggest turbofish for uninferred const argument
2020-11-18 19:23:22 +01:00
bors
e0ef0fc392
Auto merge of #78779 - LeSeulArtichaut:ty-visitor-return, r=oli-obk
...
Introduce `TypeVisitor::BreakTy`
Implements MCP rust-lang/compiler-team#383 .
r? `@ghost`
cc `@lcnr` `@oli-obk`
~~Blocked on FCP in rust-lang/compiler-team#383.~~
2020-11-17 12:24:34 +00:00
lcnr
a6cbd64dae
words
2020-11-16 22:42:09 +01:00
Bastian Kauschke
2bf93bd852
compiler: fold by value
2020-11-16 22:34:57 +01:00
LeSeulArtichaut
df6e87cc85
Use TypeVisitor::BreakTy
in UnresolvedTypeFinder
2020-11-14 21:20:10 +01:00
LeSeulArtichaut
e0f3119103
Introduce TypeVisitor::BreakTy
2020-11-14 20:25:27 +01:00
Guillaume Gomez
0b7a7930b4
Rollup merge of #78463 - varkor:placeholder-const, r=nikomatsakis
...
Add type to `ConstKind::Placeholder`
I simply threaded `<'tcx>` through everything that required it. I'm not sure whether this is the correct thing to do, but it seems to work.
r? `@nikomatsakis`
2020-11-13 15:26:14 +01:00
varkor
e24a4b4690
Add type to ConstKind::Placeholder
2020-11-12 15:39:55 +00:00
Jonas Schievink
9596e34ad4
Rollup merge of #76765 - guswynn:async_return, r=tmandry
...
Make it more clear what an about async fn's returns when referring to what it returns
see #76547
This is *likely* not the ONLY place that this happens to be unclear, but we can move this fn to rustc_middle or something like that and reuse it if need be, to apply it to more diagnostics
One outstanding question I have is, if the fn returns (), should I make the message more clear (what about `fn f()` vs `fn f() -> ()`, can you tell those apart in the hir?)
R? `@tmandry`
`@rustbot` modify labels +A-diagnostics +T-compiler
2020-11-10 14:45:09 +01:00
Matthias Krüger
bcd2f2df67
fix a couple of clippy warnings:
...
filter_next
manual_strip
redundant_static_lifetimes
single_char_pattern
unnecessary_cast
unused_unit
op_ref
redundant_closure
useless_conversion
2020-11-04 13:48:50 +01:00
LeSeulArtichaut
9433eb83fe
Remove implicit Continue
type
2020-10-30 12:27:47 +01:00
LeSeulArtichaut
4fe735b320
TypeVisitor: use ControlFlow
in rustc_{infer,lint,trait_selection}
2020-10-30 12:27:34 +01:00
Yuki Okushi
a7a0538802
Rollup merge of #78460 - varkor:turbofish-string-generic, r=lcnr
...
Adjust turbofish help message for const generics
Types are no longer special. (This message arguably only makes sense with `min_const_generics` or more, but we'll be there soon.)
r? @lcnr
2020-10-29 12:08:50 +09:00
varkor
a6d01da716
Remove irrelevant FIXME
2020-10-28 10:47:27 +00:00
Esteban Küber
28f02fbf3e
Suggest calling await on method call and field access
...
When encountering a failing method or field resolution on a `Future`,
look at the `Output` and try the same operation on it. If successful,
suggest calling `.await` on the `Future`.
This had already been introduced in #72784 , but at some point they
stopped working.
2020-10-26 08:11:43 -07:00
Dylan DPC
463b6cc0e1
Rollup merge of #78268 - JohnTitor:issue-78262, r=estebank
...
Do not try to report on closures to avoid ICE
Fixes #78262
2020-10-26 03:09:11 +01:00
Yuki Okushi
7b4c397b73
Do not try to report on closures to avoid ICE
2020-10-25 11:19:49 +09: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
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
David Tolnay
b0059500f6
Reduce diagram mess in 'match arms have incompatible types' error
2020-10-22 16:16:02 -07:00
Bastian Kauschke
8752a560b9
Lift: take self by value
2020-10-21 23:59:35 +02:00
Esteban Küber
88f5e110db
review comments
2020-10-20 09:26:15 -07:00
Esteban Küber
ae0e3d0511
Tweak "object unsafe" errors
...
Fix #77598 .
2020-10-20 09:26:14 -07:00
SNCPlay42
c146e8c54f
revert workaround #73027
2020-10-19 21:11:40 +01:00
Gus Wynn
20e032e650
Make it more clear when complaining about async fn's return types
2020-10-17 15:57:47 -07:00
Jack Huey
f6a53b4c69
Review comments
2020-10-16 15:14:38 -04:00
Jack Huey
eba10270c6
map_bound_ref -> rebind
2020-10-16 14:29:21 -04:00
Jack Huey
dd5c9bf139
Use map_bound(_ref) instead of Binder::bind when possible
2020-10-16 12:58:50 -04:00
est31
9ed2177d86
Remove unused code from rustc_infer
2020-10-14 04:14:32 +02:00
est31
a0fc455d30
Replace absolute paths with relative ones
...
Modern compilers allow reaching external crates
like std or core via relative paths in modules
outside of lib.rs and main.rs.
2020-10-13 14:16:45 +02:00
Matthew Jasper
d4d9e7f67f
Remove unused part of return value from replace_bound_vars_with_placeholders
2020-10-06 11:19:30 +01:00
Matthew Jasper
f958e6c246
Separate bounds and predicates for associated/opaque types
2020-10-06 11:19:29 +01:00
Matthew Jasper
0eb87ed55f
Rename projection_predicates to item_bounds
2020-10-06 11:18:45 +01:00
bors
ea7e131435
Auto merge of #77171 - VFLashM:better_sso_structures, r=oli-obk
...
Better sso structures
This change greatly expands interface of MiniSet/MiniMap and renames them because they are no longer "Mini".
2020-10-05 17:18:01 +00:00
Dylan MacKenzie
c4d8089f00
Revert "Add an unused field of type Option<DefId>
to ParamEnv
struct."
...
This reverts commit ab83d372ed
.
2020-09-26 21:01:09 -07:00
Valerii Lashmanov
5c224a484d
MiniSet/MiniMap moved and renamed into SsoHashSet/SsoHashMap
...
It is a more descriptive name and with upcoming changes
there will be nothing "mini" about them.
2020-09-26 14:30:05 -05:00
Ralf Jung
9e02642fb3
Rollup merge of #77211 - est31:remove_unused_allow, r=oli-obk
...
Remove unused #[allow(...)] statements from compiler/
2020-09-26 12:58:34 +02:00
Ralf Jung
ac8169dc10
Rollup merge of #77093 - lcnr:const-generics-infer-warning, r=varkor
...
merge `need_type_info_err(_const)`
I hoped that this would automatically solve #76737 but it doesn't quite seem like it
fixes #77092
r? @varkor
2020-09-26 12:58:17 +02:00
Bastian Kauschke
9a607c0a27
unused into
2020-09-26 10:31:34 +02:00
Bastian Kauschke
32195ac8f4
rename functions
2020-09-26 10:28:15 +02:00
est31
12187b7f86
Remove unused #[allow(...)] statements from compiler/
2020-09-26 01:25:55 +02:00
marmeladema
9f50c49117
Implement Display
for DisambiguatedDefPathData
and DefPathData
2020-09-25 22:46:15 +01:00
marmeladema
f1878d19fa
Move from {{closure}}#0 syntax to {closure#0} for (def) path components
2020-09-25 22:46:14 +01:00
Jonas Schievink
6f3da3d53f
Rollup merge of #77121 - duckymirror:html-root-url, r=jyn514
...
Updated html_root_url for compiler crates
Closes #77103
r? @jyn514
2020-09-25 02:29:45 +02:00
Bastian Kauschke
e5430e5306
the two hardest things in programming, names and...
2020-09-24 22:01:46 +02:00
Erik Hofmayer
138a2e5eaa
/nightly/nightly-rustc
2020-09-23 21:51:56 +02:00
Erik Hofmayer
dd66ea2d3d
Updated html_root_url for compiler crates
2020-09-23 21:14:43 +02:00
Bastian Kauschke
0e84b61053
use relevant span when unifying ConstVarValue
s
2020-09-23 11:00:44 +02:00
Bastian Kauschke
3dbfdb0182
use the correct span when dealing with inference variables
2020-09-23 10:44:11 +02:00
Bastian Kauschke
0abb1abf04
unused path
2020-09-23 10:06:32 +02:00
Bastian Kauschke
45d92b43e3
merge need_type_info_err(_const)
2020-09-23 09:24:58 +02:00
Andreas Jonson
6586c37bec
Move MiniSet to data_structures
...
remove the need for T to be copy from MiniSet as was done for MiniMap
2020-09-23 08:09:16 +02:00
bors
6d3acf5129
Auto merge of #76928 - lcnr:opaque-types-cache, r=tmandry
...
cache types during normalization
partially fixes #75992
reduces the following test from 14 to 3 seconds locally.
cc `@Mark-Simulacrum` would it make sense to add that test to `perf`?
```rust
#![recursion_limit="2048"]
#![type_length_limit="112457564"]
pub async fn h0(v: &String, x: &u64) { println!("{} {}", v, x) }
pub async fn h1(v: &String, x: &u64) { h0(v, x).await }
pub async fn h2(v: &String, x: &u64) { h1(v, x).await }
pub async fn h3(v: &String, x: &u64) { h2(v, x).await }
pub async fn h4(v: &String, x: &u64) { h3(v, x).await }
pub async fn h5(v: &String, x: &u64) { h4(v, x).await }
pub async fn h6(v: &String, x: &u64) { h5(v, x).await }
pub async fn h7(v: &String, x: &u64) { h6(v, x).await }
pub async fn h8(v: &String, x: &u64) { h7(v, x).await }
pub async fn h9(v: &String, x: &u64) { h8(v, x).await }
pub async fn h10(v: &String, x: &u64) { h9(v, x).await }
pub async fn h11(v: &String, x: &u64) { h10(v, x).await }
pub async fn h12(v: &String, x: &u64) { h11(v, x).await }
pub async fn h13(v: &String, x: &u64) { h12(v, x).await }
pub async fn h14(v: &String, x: &u64) { h13(v, x).await }
pub async fn h15(v: &String, x: &u64) { h14(v, x).await }
pub async fn h16(v: &String, x: &u64) { h15(v, x).await }
pub async fn h17(v: &String, x: &u64) { h16(v, x).await }
pub async fn h18(v: &String, x: &u64) { h17(v, x).await }
pub async fn h19(v: &String, x: &u64) { h18(v, x).await }
macro_rules! async_recursive {
(29, $inner:expr) => { async { async_recursive!(28, $inner) }.await };
(28, $inner:expr) => { async { async_recursive!(27, $inner) }.await };
(27, $inner:expr) => { async { async_recursive!(26, $inner) }.await };
(26, $inner:expr) => { async { async_recursive!(25, $inner) }.await };
(25, $inner:expr) => { async { async_recursive!(24, $inner) }.await };
(24, $inner:expr) => { async { async_recursive!(23, $inner) }.await };
(23, $inner:expr) => { async { async_recursive!(22, $inner) }.await };
(22, $inner:expr) => { async { async_recursive!(21, $inner) }.await };
(21, $inner:expr) => { async { async_recursive!(20, $inner) }.await };
(20, $inner:expr) => { async { async_recursive!(19, $inner) }.await };
(19, $inner:expr) => { async { async_recursive!(18, $inner) }.await };
(18, $inner:expr) => { async { async_recursive!(17, $inner) }.await };
(17, $inner:expr) => { async { async_recursive!(16, $inner) }.await };
(16, $inner:expr) => { async { async_recursive!(15, $inner) }.await };
(15, $inner:expr) => { async { async_recursive!(14, $inner) }.await };
(14, $inner:expr) => { async { async_recursive!(13, $inner) }.await };
(13, $inner:expr) => { async { async_recursive!(12, $inner) }.await };
(12, $inner:expr) => { async { async_recursive!(11, $inner) }.await };
(11, $inner:expr) => { async { async_recursive!(10, $inner) }.await };
(10, $inner:expr) => { async { async_recursive!(9, $inner) }.await };
(9, $inner:expr) => { async { async_recursive!(8, $inner) }.await };
(8, $inner:expr) => { async { async_recursive!(7, $inner) }.await };
(7, $inner:expr) => { async { async_recursive!(6, $inner) }.await };
(6, $inner:expr) => { async { async_recursive!(5, $inner) }.await };
(5, $inner:expr) => { async { async_recursive!(4, $inner) }.await };
(4, $inner:expr) => { async { async_recursive!(3, $inner) }.await };
(3, $inner:expr) => { async { async_recursive!(2, $inner) }.await };
(2, $inner:expr) => { async { async_recursive!(1, $inner) }.await };
(1, $inner:expr) => { async { async_recursive!(0, $inner) }.await };
(0, $inner:expr) => { async { h19(&String::from("owo"), &0).await; $inner }.await };
}
async fn f() {
async_recursive!(14, println!("hello"));
}
fn main() {
let _ = f();
}
```
r? `@eddyb` requires a perf run.
2020-09-22 22:52:07 +00:00
ecstatic-morse
dcf4d1f2be
Rollup merge of #76888 - matthiaskrgr:clippy_single_match_2, r=Dylan-DPC
...
use if let instead of single match arm expressions
use if let instead of single match arm expressions to compact code and reduce nesting (clippy::single_match)
2020-09-21 20:40:55 -07:00
bors
45198456be
Auto merge of #76913 - vandenheuvel:performance_debug, r=lcnr
...
Fixing the performance regression of #76244
Issue https://github.com/rust-lang/rust/issues/74865 suggested that removing the `def_id` field from `ParamEnv` would improve performance. PR https://github.com/rust-lang/rust/pull/76244 implemented this change.
Generally, [results](https://perf.rust-lang.org/compare.html?start=80fc9b0ecb29050d45b17c64af004200afd3cfc2&end=5ef250dd2ad618ee339f165e9b711a1b4746887d ) were as expected: an instruction count decrease of about a percent. The instruction count for the unicode crates increased by about 3%, which `@nnethercote` speculated to be caused by a quirk of inlining or codegen. As the results were generally positive, and for chalk integration, this was also a step in the right direction, the PR was r+'d regardless.
However, [wall-time performance results](https://perf.rust-lang.org/compare.html?start=a055c5a1bd95e029e9b31891db63b6dc8258b472&end=7402a394471a6738a40fea7d4f1891666e5a80c5&stat=task-clock ) show a much larger performance degradation: 25%, as [mentioned](https://github.com/rust-lang/rust/pull/76244#issuecomment-694459840 ) by `@Mark-Simulacrum.`
This PR, for now, reverts #76244 and attempts to find out, which change caused the regression.
2020-09-22 00:22:24 +00:00
Bastian Kauschke
073127a04f
check for cycles when unifying const variables
2020-09-21 12:27:55 +02:00
Bram van den Heuvel
ab83d372ed
Add an unused field of type Option<DefId>
to ParamEnv
struct.
2020-09-21 09:39:26 +02:00
bors
41507ed0d5
Auto merge of #76964 - RalfJung:rollup-ybn06fs, r=RalfJung
...
Rollup of 15 pull requests
Successful merges:
- #76722 (Test and fix Send and Sync traits of BTreeMap artefacts)
- #76766 (Extract some intrinsics out of rustc_codegen_llvm)
- #76800 (Don't generate bootstrap usage unless it's needed)
- #76809 (simplfy condition in ItemLowerer::with_trait_impl_ref())
- #76815 (Fix wording in mir doc)
- #76818 (Don't compile regex at every function call.)
- #76821 (Remove redundant nightly features)
- #76823 (black_box: silence unused_mut warning when building with cfg(miri))
- #76825 (use `array_windows` instead of `windows` in the compiler)
- #76827 (fix array_windows docs)
- #76828 (use strip_prefix over starts_with and manual slicing based on pattern length (clippy::manual_strip))
- #76840 (Move to intra doc links in core/src/future)
- #76845 (Use intra docs links in core::{ascii, option, str, pattern, hash::map})
- #76853 (Use intra-doc links in library/core/src/task/wake.rs)
- #76871 (support panic=abort in Miri)
Failed merges:
r? `@ghost`
2020-09-20 11:02:36 +00:00
Ralf Jung
4322e1b92d
Rollup merge of #76821 - est31:remove_redundant_nightly_features, r=oli-obk,Mark-Simulacrum
...
Remove redundant nightly features
Removes a bunch of redundant/outdated nightly features. The first commit removes a `core_intrinsics` use for which a stable wrapper has been provided since. The second commit replaces the `const_generics` feature with `min_const_generics` which might get stabilized this year. The third commit is the result of a trial/error run of removing every single feature and then adding it back if compile failed. A bunch of unused features are the result that the third commit removes.
2020-09-20 12:08:22 +02:00
Matthias Krüger
c690c82ad4
use if let instead of single match arm expressions to compact code and reduce nesting (clippy::single_match)
2020-09-20 11:42:52 +02:00
Bastian Kauschke
1146c39da7
cache types during normalization
2020-09-19 17:27:13 +02:00
Oliver Scherer
888afd50d9
Unify the names of const eval queries and their return types
2020-09-19 10:36:36 +02:00
bors
fdc3405c20
Auto merge of #72412 - VFLashM:issue-72408-nested-closures-exponential, r=tmandry
...
Issue 72408 nested closures exponential
This fixes #72408 .
Nested closures were resulting in exponential compilation time.
This PR is enhancing asymptotic complexity, but also increasing the constant, so I would love to see perf run results.
2020-09-18 14:08:39 +00:00
Tyler Mandry
3ccb1c37e6
Remove redundancy in cache key
2020-09-18 09:03:53 +00:00
Valerii Lashmanov
f583513dc2
Intorduced MiniMap - a tiny small storage optimized map implementation
...
This makes everything about 1% faster in rustc-perf,
mostly negating performance hit of previous commit.
2020-09-17 20:44:11 -05:00
Valerii Lashmanov
17d2e3b5d2
Better handling for exponential-sized types in misc places
...
Mostly to fix ui/issues/issue-37311-type-length-limit/issue-37311.rs.
Most parts of the compiler can handle deeply nested types with a lot
of duplicates just fine, but some parts still attempt to naively
traverse type tree.
Before such problems were caught by type length limit check,
but now these places will have to be changed to handle
duplicated types gracefully.
2020-09-17 20:44:11 -05:00
Valerii Lashmanov
2f3296192b
Only visit types once when walking the type tree
...
This fixes #72408 .
Nested closures were resulting in exponential compilation time.
As a performance optimization this change introduces MiniSet,
which is a simple small storage optimized set.
2020-09-17 20:44:11 -05:00
est31
ebdea01143
Remove redundant #![feature(...)] 's from compiler/
2020-09-17 07:58:45 +02:00
Tyler Mandry
a6c4d30c7b
Rollup merge of #76756 - matthiaskrgr:cl123ppy, r=Dylan-DPC
...
fix a couple of stylistic clippy warnings
namely:
clippy::redundant_pattern_matching
clippy::redundant_pattern
clippy::search_is_some
clippy::filter_next
clippy::into_iter_on_ref
clippy::clone_on_copy
clippy::needless_return
2020-09-16 12:24:17 -07:00
Dylan DPC
3f9e7fc049
Rollup merge of #76699 - lcnr:const-infer-err, r=varkor
...
improve const infer error
cc #72328
reduces it from
```
error[E0282]: type annotations needed
--> src/main.rs:17:5
|
17 | Foo.bar().bar().bar().bar().baz();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: unable to infer the value of a const parameter
```
to
```
error[E0282]: type annotations needed
--> $DIR/method-chain.rs:21:33
|
LL | Foo.bar().bar().bar().bar().baz();
| ^^^
|
= note: cannot infer the value of the const parameter `N`
```
r? @varkor
2020-09-16 12:34:21 +02:00
Matthias Krüger
73d4171ea6
fix a couple of stylistic clippy warnings
...
namely:
clippy::redundant_pattern_matching
clippy::redundant_pattern
clippy::search_is_some
clippy::filter_next
clippy::into_iter_on_ref
clippy::clone_on_copy
clippy::needless_return
2020-09-15 22:44:54 +02:00
bors
41dc3942eb
Auto merge of #75608 - estebank:suggest-boxed-match-exprs, r=lcnr,varkor
...
More structured suggestions for boxed trait objects instead of impl Trait on non-coerceable tail expressions
When encountering a `match` or `if` as a tail expression where the
different arms do not have the same type *and* the return type of that
`fn` is an `impl Trait`, check whether those arms can implement `Trait`
and if so, suggest using boxed trait objects.
Use structured suggestion for `impl T` to `Box<dyn T>`.
Fix https://github.com/rust-lang/rust/issues/69107
2020-09-14 19:57:57 +00:00
Bastian Kauschke
035f879166
improve const infer err
2020-09-14 10:08:32 +02:00
Bastian Kauschke
dd57275c3e
shrink const infer error
2020-09-14 09:45:22 +02:00
bors
7402a39447
Auto merge of #76244 - vandenheuvel:remove__paramenv__def_id, r=nikomatsakis
...
Removing the `def_id` field from hot `ParamEnv` to make it smaller
This PR addresses https://github.com/rust-lang/rust/issues/74865 .
2020-09-13 16:28:22 +00:00
Esteban Küber
dc53cfea7e
Add test cases and address review comments
2020-09-11 17:05:18 -07:00
Esteban Küber
5d2a935e6c
Make suggestion more complete
2020-09-11 17:05:18 -07:00
Esteban Küber
ff297fafbf
Make suggestion have a more targetted underline
2020-09-11 17:05:18 -07:00
Esteban Küber
fd9133b9c3
Suggest boxed trait objects in tail match
and if
expressions
...
When encountering a `match` or `if` as a tail expression where the
different arms do not have the same type *and* the return type of that
`fn` is an `impl Trait`, check whether those arms can implement `Trait`
and if so, suggest using boxed trait objects.
2020-09-11 17:05:18 -07:00
Matthias Krüger
9bb10cc907
use push(char) instead of push_str(&str) to add single chars to strings
...
clippy::single-char-push-str
2020-09-10 13:58:41 +02:00
Matthias Krüger
e11c667e4a
don't clone types that are copy (clippy::clone_on_copy)
2020-09-10 13:26:36 +02:00
Bram van den Heuvel
7dad29d686
Remove def_id field from ParamEnv
2020-09-09 10:14:31 +02:00
LeSeulArtichaut
4d28a82c59
ty.flags -> ty.flags()
2020-09-04 18:28:20 +02:00
LeSeulArtichaut
3e14b684dd
Change ty.kind to a method
2020-09-04 17:47:51 +02:00
Dan Aloni
75a042e74b
Fix some unwanted uses of Debug formatting on user-facing messages
...
While formatting for user diagnostics used `Display` for all most cases,
some small amount of cases used `Debug` instead. Until now, `Display`
and `Debug` yielded the same output for many types. However, with path
trimming, we want to show a shorter path for the user, these cases need
fixing.
2020-09-02 10:40:10 +03:00
mark
9e5f7d5631
mv compiler to compiler/
2020-08-30 18:45:07 +03:00