rust/compiler
bors 931aa27922 Auto merge of #80246 - matthewjasper:projection-cycle-caching, r=Mark-Simulacrum
Prevent caching normalization results with a cycle

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. `get_paranoid_cache_value_obligation` used to add an obligation that resulted in a cycle in this case previously, but was removed by #73905.

This PR makes the projection cache not cache the value of a projection if it was ever normalized in a cycle (except in a snapshot that's rolled back).

Fixes #79714.

r? `@nikomatsakis`
2020-12-26 00:11:30 +00:00
..
rustc
rustc_apfloat
rustc_arena
rustc_ast Rework beautify_doc_string so that it returns a Symbol instead of a String 2020-12-22 16:05:38 +01:00
rustc_ast_lowering Rollup merge of #79051 - LeSeulArtichaut:if-let-guard, r=matthewjasper 2020-12-17 11:43:55 +09:00
rustc_ast_passes Change the message for if_let_guard feature gate 2020-12-17 17:08:18 +01:00
rustc_ast_pretty Fix pretty printing an AST representing &(mut ident) 2020-12-20 13:11:07 +01:00
rustc_attr Get rid of clean::Deprecation 2020-12-14 22:00:46 -05:00
rustc_builtin_macros Add some intra-doc links to compiler docs 2020-12-22 09:54:23 -05:00
rustc_codegen_cranelift Make BoundRegion have a kind of BoungRegionKind 2020-12-18 15:27:28 -05:00
rustc_codegen_llvm Revert "cg_llvm: fewer_names in uncached_llvm_type" 2020-12-17 16:40:47 +00:00
rustc_codegen_ssa Exclude unnecessary info from CodegenResults 2020-12-23 12:51:10 +11:00
rustc_data_structures Rollup merge of #79612 - jyn514:compiler-links, r=Aaron1011 2020-12-19 15:16:03 +09:00
rustc_driver
rustc_error_codes
rustc_errors Switch compiler/ to intra-doc links 2020-12-18 15:22:51 -05:00
rustc_expand Revert "Promote missing_fragment_specifier to hard error" 2020-12-22 09:33:16 -05:00
rustc_feature tidy: Re-enable check for inline unit tests 2020-12-12 19:18:44 +03:00
rustc_fs_util
rustc_graphviz
rustc_hir Auto merge of #79073 - davidtwco:issue-78957-const-param-attrs, r=lcnr 2020-12-19 04:32:50 +00:00
rustc_hir_pretty Rollup merge of #79051 - LeSeulArtichaut:if-let-guard, r=matthewjasper 2020-12-17 11:43:55 +09:00
rustc_incremental
rustc_index Switch compiler/ to intra-doc links 2020-12-18 15:22:51 -05:00
rustc_infer Prevent caching projections in the case of cycles 2020-12-20 21:47:51 +00:00
rustc_interface Auto merge of #80296 - wesleywiser:revert_missing_fragment_specifier_hard_error, r=Mark-Simulacrum 2020-12-25 14:09:08 +00:00
rustc_lexer Fix typo 2020-12-18 22:13:25 +09:00
rustc_lint Rollup merge of #80274 - pierwill:lintlevelsource, r=petrochenkov 2020-12-25 03:39:36 +01:00
rustc_lint_defs Add example to lint docs 2020-12-22 09:33:16 -05:00
rustc_llvm llvm: update ffi bindings for split dwarf 2020-12-16 10:31:42 +00:00
rustc_macros Stop using intermediate macros in definition of symbols 2020-12-17 15:20:45 -08:00
rustc_metadata Rollup merge of #80039 - LeSeulArtichaut:rm-tyencoder-tcx, r=matthewjasper 2020-12-17 11:44:03 +09:00
rustc_middle Rollup merge of #80342 - pierwill:patch-1, r=lcnr 2020-12-25 03:39:49 +01:00
rustc_mir Auto merge of #80235 - RalfJung:validate-promoteds, r=oli-obk 2020-12-25 18:25:48 +00:00
rustc_mir_build Fix a comment 2020-12-22 15:20:24 +00:00
rustc_parse Rollup merge of #80160 - diondokter:move_async_fix, r=davidtwco 2020-12-25 03:39:35 +01:00
rustc_parse_format
rustc_passes Auto merge of #79073 - davidtwco:issue-78957-const-param-attrs, r=lcnr 2020-12-19 04:32:50 +00:00
rustc_plugin_impl
rustc_privacy Move binder for dyn to each list item 2020-12-11 15:02:46 -05:00
rustc_query_system rustc_query_system: avoid race condition when using edge_count 2020-12-22 14:12:57 -08:00
rustc_resolve Move std_path construction into condition 2020-12-20 23:55:03 +01:00
rustc_save_analysis Rework beautify_doc_string so that it returns a Symbol instead of a String 2020-12-22 16:05:38 +01:00
rustc_serialize
rustc_session Revert "Promote missing_fragment_specifier to hard error" 2020-12-22 09:33:16 -05:00
rustc_span Auto merge of #79762 - Swatinem:remap-doctest-coverage, r=Swatinem 2020-12-25 02:37:08 +00:00
rustc_symbol_mangling Make BoundRegion have a kind of BoungRegionKind 2020-12-18 15:27:28 -05:00
rustc_target Add support for target aliases 2020-12-16 10:41:07 +01:00
rustc_trait_selection Auto merge of #80246 - matthewjasper:projection-cycle-caching, r=Mark-Simulacrum 2020-12-26 00:11:30 +00:00
rustc_traits Make BoundRegion have a kind of BoungRegionKind 2020-12-18 15:27:28 -05:00
rustc_ty_utils
rustc_type_ir Fix typo in DebruijnIndex documentation 2020-12-12 16:13:06 +01:00
rustc_typeck Turn helper method into a closure 2020-12-22 16:18:34 +01:00