rust/compiler
Matthias Krüger 40c972e335
Rollup merge of #122733 - oli-obk:error_prop, r=compiler-errors
Strip placeholders from hidden types before remapping generic parameter

When remapping generic parameters in the hidden type to the generic parameters of the definition of the opaque, we assume that placeholders cannot exist. Instead of just patching that site, I decided to handle it earlier, directly in `infer_opaque_types`, where we are already doing all the careful lifetime handling.

fixes #122694

the reason that ICE now occurred was that we stopped treating `operation` as being in the defining scope, so the TAIT became part of the hidden type of the `async fn`'s opaque type instead of just bailing out as ambiguos

I think

```rust
use std::future::Future;

mod foo {
    type FutNothing<'a> = impl 'a + Future<Output = ()>;
    //~^ ERROR: unconstrained opaque type
}

async fn operation(_: &mut ()) -> () {
    //~^ ERROR: concrete type differs from previous
    call(operation).await
    //~^ ERROR: concrete type differs from previous
}

async fn call<F>(_f: F)
where
    for<'any> F: FnMut(&'any mut ()) -> foo::FutNothing<'any>,
{
    //~^ ERROR: expected generic lifetime parameter, found `'any`
}
```

would have already had the same ICE before https://github.com/rust-lang/rust/pull/121796
2024-03-21 17:46:49 +01:00
..
rustc
rustc_abi Auto merge of #121668 - erikdesjardins:commonprim, r=scottmcm,oli-obk 2024-03-13 15:25:35 +00:00
rustc_arena
rustc_ast Auto merge of #122754 - Mark-Simulacrum:bootstrap-bump, r=albertlarsan68 2024-03-20 13:43:41 +00:00
rustc_ast_ir Fix typo in VisitorResult 2024-03-08 23:20:29 -05:00
rustc_ast_lowering Auto merge of #121587 - ShoyuVanilla:fix-issue-121267, r=TaKO8Ki 2024-03-21 04:11:09 +00:00
rustc_ast_passes Add barest-bones deref patterns 2024-03-20 22:30:27 +01:00
rustc_ast_pretty Rename ast::StmtKind::Local into ast::StmtKind::Let 2024-03-14 12:42:04 +01:00
rustc_attr Rename IntoDiagnostic as Diagnostic. 2024-03-11 09:15:09 +11:00
rustc_baked_icu_data
rustc_borrowck Rollup merge of #122733 - oli-obk:error_prop, r=compiler-errors 2024-03-21 17:46:49 +01:00
rustc_builtin_macros Make type_ascribe! not a built-in 2024-03-20 22:28:56 -04:00
rustc_codegen_cranelift Make ptr_guaranteed_cmp a rustc_intrinsic and favor its body over backends implementing it 2024-03-19 09:17:40 +00:00
rustc_codegen_gcc Auto merge of #122055 - compiler-errors:stabilize-atb, r=oli-obk 2024-03-19 00:04:09 +00:00
rustc_codegen_llvm Rollup merge of #121543 - onur-ozkan:clippy-args, r=oli-obk 2024-03-20 05:51:22 +01:00
rustc_codegen_ssa Rollup merge of #122691 - veera-sivarajan:bugfix-121099, r=Amanieu 2024-03-19 18:03:51 +01:00
rustc_const_eval Rollup merge of #121543 - onur-ozkan:clippy-args, r=oli-obk 2024-03-20 05:51:22 +01:00
rustc_data_structures Auto merge of #122568 - RalfJung:mentioned-items, r=oli-obk 2024-03-21 09:01:18 +00:00
rustc_driver
rustc_driver_impl Rollup merge of #121764 - Zoxc:incr-sess-no-source, r=oli-obk 2024-03-14 20:00:18 +01:00
rustc_error_codes Auto merge of #122055 - compiler-errors:stabilize-atb, r=oli-obk 2024-03-19 00:04:09 +00:00
rustc_error_messages Rename SubdiagnosticMessage as SubdiagMessage. 2024-03-05 12:14:49 +11:00
rustc_errors Auto merge of #122754 - Mark-Simulacrum:bootstrap-bump, r=albertlarsan68 2024-03-20 13:43:41 +00:00
rustc_expand Rollup merge of #122773 - tshepang:make-expand-translatable, r=fee1-dead 2024-03-21 12:05:07 +01:00
rustc_feature Add barest-bones deref patterns 2024-03-20 22:30:27 +01:00
rustc_fluent_macro Rename SubdiagnosticMessage as SubdiagMessage. 2024-03-05 12:14:49 +11:00
rustc_fs_util
rustc_graphviz
rustc_hir Auto merge of #121587 - ShoyuVanilla:fix-issue-121267, r=TaKO8Ki 2024-03-21 04:11:09 +00:00
rustc_hir_analysis Rollup merge of #122799 - estebank:issue-122569, r=fee1-dead 2024-03-21 12:05:08 +01:00
rustc_hir_pretty Rename hir::Let into hir::LetExpr 2024-03-20 16:47:11 +01:00
rustc_hir_typeck Rollup merge of #122799 - estebank:issue-122569, r=fee1-dead 2024-03-21 12:05:08 +01:00
rustc_incremental Make incremental sessions identity no longer depend on the crate names provided by source code 2024-03-13 16:40:02 +01:00
rustc_index doc: Add better explanation 2024-03-06 16:54:42 +01:00
rustc_index_macros
rustc_infer Rollup merge of #122799 - estebank:issue-122569, r=fee1-dead 2024-03-21 12:05:08 +01:00
rustc_interface Rollup merge of #121764 - Zoxc:incr-sess-no-source, r=oli-obk 2024-03-14 20:00:18 +01:00
rustc_lexer
rustc_lint Split item bounds and item super predicates 2024-03-20 13:00:34 -04:00
rustc_lint_defs Rollup merge of #121720 - tmandry:split-refining, r=compiler-errors 2024-03-16 23:28:47 +01:00
rustc_llvm Update the minimum external LLVM to 17 2024-03-17 10:11:04 -07:00
rustc_log rustc_log: expose tracing-tree "wraparound" in an env var 2024-03-03 12:33:26 +01:00
rustc_macros Rename diagnostic derive things. 2024-03-11 10:06:34 +11:00
rustc_metadata Auto merge of #121123 - compiler-errors:item-assumptions, r=oli-obk 2024-03-21 06:12:24 +00:00
rustc_middle Rollup merge of #122799 - estebank:issue-122569, r=fee1-dead 2024-03-21 12:05:08 +01:00
rustc_mir_build Rollup merge of #122222 - Nadrieril:deref-pat-feature-gate, r=compiler-errors 2024-03-21 12:05:05 +01:00
rustc_mir_dataflow step cfgs 2024-03-20 08:49:13 -04:00
rustc_mir_transform Auto merge of #122568 - RalfJung:mentioned-items, r=oli-obk 2024-03-21 09:01:18 +00:00
rustc_monomorphize Auto merge of #122568 - RalfJung:mentioned-items, r=oli-obk 2024-03-21 09:01:18 +00:00
rustc_next_trait_solver Allow a way to add constructors for rustc_type_ir types 2024-03-04 15:39:59 +00:00
rustc_parse Auto merge of #122822 - matthiaskrgr:rollup-rjgmnbe, r=matthiaskrgr 2024-03-21 13:28:59 +00:00
rustc_parse_format Extend format arg help for simple tuple index access expression 2024-03-16 22:33:02 +00:00
rustc_passes Rollup merge of #122719 - oli-obk:nested_static_feed_hir, r=fee1-dead 2024-03-19 18:03:53 +01:00
rustc_pattern_analysis Rollup merge of #122644 - Nadrieril:complexity-tests, r=compiler-errors 2024-03-21 17:46:48 +01:00
rustc_privacy Test and implement reachability for trait objects and generic parameters of functions 2024-03-14 14:10:45 +00:00
rustc_query_impl Verify that query keys result in unique dep nodes 2024-03-12 05:31:41 +01:00
rustc_query_system Rollup merge of #122245 - saethlin:check-dep-graph-size, r=petrochenkov 2024-03-12 09:04:00 -07:00
rustc_resolve Auto merge of #121587 - ShoyuVanilla:fix-issue-121267, r=TaKO8Ki 2024-03-21 04:11:09 +00:00
rustc_serialize Stabilize associated type bounds 2024-03-08 20:56:25 +00:00
rustc_session Rollup merge of #122748 - nnethercote:rustc_session-pub, r=jackh726 2024-03-20 05:51:24 +01:00
rustc_smir s/place_debug/place_pretty in SMIR 2024-03-20 18:02:11 -07:00
rustc_span Add barest-bones deref patterns 2024-03-20 22:30:27 +01:00
rustc_symbol_mangling Only split by-ref/by-move futures for async closures 2024-03-19 16:59:23 -04:00
rustc_target Rollup merge of #122696 - royb3:riscv32ima, r=petrochenkov 2024-03-21 12:05:06 +01:00
rustc_trait_selection Rollup merge of #122402 - weiznich:fix/122391, r=compiler-errors 2024-03-21 17:46:48 +01:00
rustc_traits Merge check_mod_impl_wf and check_mod_type_wf 2024-03-07 06:27:09 +00:00
rustc_transmute Avoid various uses of Option<Span> in favor of using DUMMY_SP in the few cases that used None 2024-03-18 09:34:08 +00:00
rustc_ty_utils Fix ABI for FnMut/Fn impls for async closures 2024-03-19 16:59:24 -04:00
rustc_type_ir make type_flags(ReError) & HAS_ERROR 2024-03-20 17:29:58 +00:00
stable_mir Rollup merge of #122801 - celinval:smir-pretty, r=compiler-errors 2024-03-21 12:05:08 +01:00