rust/compiler
Matthias Krüger 9408af97f5
Rollup merge of #108754 - compiler-errors:retry, r=oli-obk
Retry `pred_known_to_hold_modulo_regions` with fulfillment if ambiguous

Fixes #108721

The problem here is that when we're checking `is_sized_raw` during codegen on some type that has a lot of opaques in it, something emits several nested obligations that are individually ambiguous, but when processed together in a loop then apply modulo regions. Since the `evaluate_predicates_recursively` inner loop doesn't process predicates until they stop changing, we return `EvaluatedToAmbig`, which makes the sized check return false incorrectly. See:

f15f0ea739/compiler/rustc_trait_selection/src/traits/select/mod.rs (L596-L606)

... Compared to the analogous loop in the new solver:

f15f0ea739/compiler/rustc_trait_selection/src/solve/mod.rs (L481-L512)

To fix this, if we get ambiguous during `pred_known_to_hold_modulo_regions`, just retry the obligation in a fulfillment context.

--

Unfortunately... I don't have a test for this. I've only tested this locally. Pending minimization :/

r? types
2023-03-08 21:26:50 +01:00
..
rustc Add a new rustc_driver dylib to rexport rustc_driver_impl 2023-02-02 07:34:41 +01:00
rustc_abi Unify validity checks into a single query 2023-02-23 18:42:36 +00:00
rustc_apfloat compiler: remove unnecessary imports and qualified paths 2022-12-10 18:45:34 +01:00
rustc_arena compiler: remove unnecessary imports and qualified paths 2022-12-10 18:45:34 +01:00
rustc_ast Match unmatched backticks in comments in compiler/ 2023-03-03 08:39:00 +01:00
rustc_ast_lowering Auto merge of #108351 - petrochenkov:rmdit, r=cjgillot 2023-03-05 10:37:02 +00:00
rustc_ast_passes Remove allow(potential_query_instability) from ast_passes 2023-03-04 12:39:54 +00:00
rustc_ast_pretty Use ThinVec in various AST types. 2023-02-21 11:51:56 +11:00
rustc_attr errors: generate typed identifiers in each crate 2023-02-22 09:15:53 +00:00
rustc_baked_icu_data update ICU4X to 1.1.0 2023-02-04 22:28:59 +01:00
rustc_borrowck Auto merge of #108735 - clubby789:borrowck-unstable, r=Nilstrieb 2023-03-07 07:01:57 +00:00
rustc_builtin_macros Explain compile-time vs run-time difference in env!() error message 2023-02-28 16:44:59 +00:00
rustc_codegen_cranelift Auto merge of #95317 - Jules-Bertholet:round_ties_to_even, r=pnkfelix,m-ou-se,scottmcm 2023-03-07 09:43:12 +00:00
rustc_codegen_gcc Rollup merge of #108783 - antoyo:sync-cg_gcc-2023-03-04, r=cjgillot 2023-03-07 19:57:45 +01:00
rustc_codegen_llvm Rollup merge of #108822 - nikic:legacy-pm-removal-2, r=cuviper 2023-03-07 19:57:46 +01:00
rustc_codegen_ssa Auto merge of #108312 - michaelwoerister:hash-set-not-hash-stable, r=eholk 2023-03-08 06:07:11 +00:00
rustc_const_eval Rollup merge of #108803 - cjgillot:const-prop-normalize, r=oli-obk 2023-03-06 16:41:59 +01:00
rustc_data_structures Auto merge of #108312 - michaelwoerister:hash-set-not-hash-stable, r=eholk 2023-03-08 06:07:11 +00:00
rustc_driver Remove unneeded extern crate 2023-02-02 07:47:39 +01:00
rustc_driver_impl refactor: statically guarantee that current error codes are documented 2023-02-26 20:12:36 +13:00
rustc_error_codes refactor: statically guarantee that current error codes are documented 2023-02-26 20:12:36 +13:00
rustc_error_messages Handle selecting the default locale better 2023-02-23 01:14:10 +01:00
rustc_errors Properly colorize multi-part suggestions in the same line 2023-03-04 00:29:52 +00:00
rustc_expand rustc_expand: make proc-macro derive error translatable 2023-03-04 07:54:29 +02:00
rustc_feature Revert "Stabilize #![feature(target_feature_11)]" 2023-03-02 13:41:17 +01:00
rustc_fs_util Remove useless borrows and derefs 2022-12-01 17:34:43 +00:00
rustc_graphviz Fix uninlined_format_args for some compiler crates 2023-01-05 19:01:12 +01:00
rustc_hir Only look for param in generics if it actually comes from generics 2023-02-28 06:27:56 +00:00
rustc_hir_analysis Auto merge of #108312 - michaelwoerister:hash-set-not-hash-stable, r=eholk 2023-03-08 06:07:11 +00:00
rustc_hir_pretty Add ErrorGuaranteed to HIR ExprKind::Err 2023-02-25 19:46:36 +00:00
rustc_hir_typeck Rollup merge of #108731 - Ezrashaw:pin-suggestion-on-impl-future, r=petrochenkov 2023-03-07 23:06:22 +09:00
rustc_incremental Match unmatched backticks in compiler/ that are part of rustdoc 2023-03-03 08:39:00 +01:00
rustc_index Match unmatched backticks in compiler/ that are part of rustdoc 2023-03-03 08:39:00 +01:00
rustc_infer Auto merge of #108121 - aliemjay:resolve-var-region, r=lcnr 2023-03-08 12:33:21 +00:00
rustc_interface Match end user facing unmatched backticks in compiler/ 2023-03-03 08:39:36 +01:00
rustc_lexer Rustdoc-ify LiteralKind note 2023-03-03 08:39:36 +01:00
rustc_lint Auto merge of #108351 - petrochenkov:rmdit, r=cjgillot 2023-03-05 10:37:02 +00:00
rustc_lint_defs Rollup merge of #108363 - cjgillot:unused-crate, r=WaffleLapkin 2023-02-27 18:48:49 +01:00
rustc_llvm Remove references to PassManagerBuilder 2023-03-06 16:55:52 +01:00
rustc_log Rollup merge of #107895 - matthiaskrgr:cl, r=compiler-errors 2023-02-11 17:18:44 +01:00
rustc_macros Allow using bool for optional diagnostics 2023-02-27 12:54:11 +00:00
rustc_metadata Auto merge of #101550 - CraftSpider:link-dead-windows, r=wesleywiser 2023-03-05 02:00:58 +00:00
rustc_middle Auto merge of #108121 - aliemjay:resolve-var-region, r=lcnr 2023-03-08 12:33:21 +00:00
rustc_mir_build Rollup merge of #108855 - cbeuw:mir-cast, r=tmiasko 2023-03-07 23:06:25 +09:00
rustc_mir_dataflow Erase lifetimes in SROA. 2023-03-05 18:35:30 +00:00
rustc_mir_transform Auto merge of #108312 - michaelwoerister:hash-set-not-hash-stable, r=eholk 2023-03-08 06:07:11 +00:00
rustc_monomorphize rustc_middle: Remove trait DefIdTree 2023-03-02 23:46:44 +04:00
rustc_parse Rollup merge of #108715 - chenyukang:yukang/cleanup-parser-delims, r=compiler-errors 2023-03-04 20:48:17 +01:00
rustc_parse_format Replace some thens with some then_somes 2023-02-16 15:26:03 +00:00
rustc_passes Auto merge of #108312 - michaelwoerister:hash-set-not-hash-stable, r=eholk 2023-03-08 06:07:11 +00:00
rustc_plugin_impl errors: generate typed identifiers in each crate 2023-02-22 09:15:53 +00:00
rustc_privacy rustc_middle: Remove trait DefIdTree 2023-03-02 23:46:44 +04:00
rustc_query_impl Auto merge of #108167 - Zoxc:query-config-instance-slim, r=cjgillot 2023-03-07 18:55:36 +00:00
rustc_query_system Auto merge of #108167 - Zoxc:query-config-instance-slim, r=cjgillot 2023-03-07 18:55:36 +00:00
rustc_resolve Auto merge of #108351 - petrochenkov:rmdit, r=cjgillot 2023-03-05 10:37:02 +00:00
rustc_serialize Emit the enum discriminant separately for the Encodable macro 2023-02-25 01:04:56 +01:00
rustc_session Auto merge of #108312 - michaelwoerister:hash-set-not-hash-stable, r=eholk 2023-03-08 06:07:11 +00:00
rustc_smir
rustc_span Auto merge of #95317 - Jules-Bertholet:round_ties_to_even, r=pnkfelix,m-ou-se,scottmcm 2023-03-07 09:43:12 +00:00
rustc_symbol_mangling Rename many interner functions. 2023-02-24 07:32:24 +11:00
rustc_target Use FxIndexSet instead of FxHashSet for asm_target_features query. 2023-03-01 10:19:26 +01:00
rustc_trait_selection Rollup merge of #108754 - compiler-errors:retry, r=oli-obk 2023-03-08 21:26:50 +01:00
rustc_traits Add mk_canonical_var_infos_from_iter. 2023-02-24 07:33:02 +11:00
rustc_transmute rustc_middle: Remove trait DefIdTree 2023-03-02 23:46:44 +04:00
rustc_ty_utils Auto merge of #108312 - michaelwoerister:hash-set-not-hash-stable, r=eholk 2023-03-08 06:07:11 +00:00
rustc_type_ir make first component of dyn* use pointer layout+type, and adjust DynStar comment 2023-02-18 19:24:55 +00:00