rust/compiler
Matthias Krüger 4e11d03d0e
Rollup merge of #119592 - petrochenkov:unload, r=compiler-errors
resolve: Unload speculatively resolved crates before freezing cstore

Name resolution sometimes loads additional crates to improve diagnostics (e.g. suggest imports).
Not all of these diagnostics result in errors, sometimes they are just warnings, like in #117772.

If additional crates loaded speculatively stay and gets listed by things like `query crates` then they may produce further errors like duplicated lang items, because lang items from speculatively loaded crates are as good as from non-speculatively loaded crates.
They can probably do things like adding unintended impls from speculatively loaded crates to method resolution as well.
The extra crates will also get into the crate's metadata as legitimate dependencies.

In this PR I remove the speculative crates from cstore when name resolution is finished and cstore is frozen.
This is better than e.g. filtering away speculative crates in `query crates` because things like `DefId`s referring to these crates and leaking to later compilation stages can produce ICEs much easier, allowing to detect them.

The unloading could potentially be skipped if any errors were reported (to allow using `DefId`s from speculatively loaded crates for recovery), but I didn't do it in this PR because I haven't seen such cases of recovery. We can reconsider later if any relevant ICEs are reported.

Unblocks https://github.com/rust-lang/rust/pull/117772.
2024-02-08 09:06:31 +01:00
..
rustc
rustc_abi Fix rustc_abi build on stable 2024-01-16 21:15:31 +01:00
rustc_arena Fix Stable trait and its impls to work with the new with_tables 2024-01-19 09:42:51 +00:00
rustc_ast Add async bound modifier to enable async Fn bounds 2024-01-31 16:59:19 +00:00
rustc_ast_lowering Rollup merge of #120609 - petrochenkov:nousestem2, r=compiler-errors 2024-02-06 19:40:08 +01:00
rustc_ast_passes Correctly check never_type feature gating 2024-02-01 20:01:04 +01:00
rustc_ast_pretty Add async bound modifier to enable async Fn bounds 2024-01-31 16:59:19 +00:00
rustc_attr Stop using String for error codes. 2024-01-29 07:41:41 +11:00
rustc_baked_icu_data
rustc_borrowck Rollup merge of #120513 - compiler-errors:normalize-regions-for-nll, r=lcnr 2024-02-06 22:45:43 +01:00
rustc_builtin_macros Rollup merge of #120342 - oli-obk:track_errors6, r=nnethercote 2024-01-30 16:57:49 +01:00
rustc_codegen_cranelift Auto merge of #117372 - Amanieu:stdarch_update, r=Mark-Simulacrum 2024-02-05 15:41:40 +00:00
rustc_codegen_gcc Rollup merge of #120502 - clubby789:remove-ffi-returns-twice, r=compiler-errors 2024-02-06 22:45:42 +01:00
rustc_codegen_llvm Rollup merge of #119162 - heiher:direct-access-external-data, r=petrochenkov 2024-02-07 18:24:41 +01:00
rustc_codegen_ssa Rollup merge of #120502 - clubby789:remove-ffi-returns-twice, r=compiler-errors 2024-02-06 22:45:42 +01:00
rustc_const_eval Rollup merge of #120302 - oli-obk:const_intern_cleanups, r=RalfJung 2024-02-07 18:24:42 +01:00
rustc_data_structures Rollup merge of #119600 - aDotInTheVoid:comment-fix, r=compiler-errors 2024-02-05 06:37:14 +01:00
rustc_driver
rustc_driver_impl Remove an unchecked_claim_error_was_emitted call. 2024-02-07 18:57:38 +11:00
rustc_error_codes Rollup merge of #120502 - clubby789:remove-ffi-returns-twice, r=compiler-errors 2024-02-06 22:45:42 +01:00
rustc_error_messages Split Level::DelayedBug in two. 2024-02-05 10:03:01 +11:00
rustc_errors Rename unchecked_claim_error_was_emitted as unchecked_error_guaranteed. 2024-02-07 19:30:59 +11:00
rustc_expand Add async bound modifier to enable async Fn bounds 2024-01-31 16:59:19 +00:00
rustc_feature Rollup merge of #120502 - clubby789:remove-ffi-returns-twice, r=compiler-errors 2024-02-06 22:45:42 +01:00
rustc_fluent_macro annotate-snippets: update to 0.10 2024-01-07 16:53:32 +03:00
rustc_fs_util
rustc_graphviz
rustc_hir Teach typeck/borrowck/solvers how to deal with async closures 2024-02-06 02:22:58 +00:00
rustc_hir_analysis Auto merge of #120558 - oli-obk:missing_impl_item_ice, r=estebank 2024-02-08 05:01:09 +00:00
rustc_hir_pretty hir: Use InferArg in ArrayLen::Infer 2024-01-28 02:04:39 +03:00
rustc_hir_typeck Auto merge of #120558 - oli-obk:missing_impl_item_ice, r=estebank 2024-02-08 05:01:09 +00:00
rustc_incremental hir: Simplify hir_owner_nodes query 2024-01-30 15:00:52 +03:00
rustc_index Auto merge of #120024 - Mark-Simulacrum:fast-union-merge, r=cjgillot 2024-01-27 22:26:37 +00:00
rustc_index_macros Restrict access to the private field of newtype indexes 2024-01-19 15:38:47 +00:00
rustc_infer Rollup merge of #120513 - compiler-errors:normalize-regions-for-nll, r=lcnr 2024-02-06 22:45:43 +01:00
rustc_interface Rollup merge of #119162 - heiher:direct-access-external-data, r=petrochenkov 2024-02-07 18:24:41 +01:00
rustc_lexer Use unescape_unicode for raw C string literals. 2024-01-25 12:28:11 +11:00
rustc_lint Rollup merge of #120435 - chenyukang:yukang-fix-120427-cfg-name, r=Urgau,Nilstrieb 2024-02-06 22:45:41 +01:00
rustc_lint_defs update the tracking issue for structural match violations 2024-02-05 20:36:11 +01:00
rustc_llvm Rollup merge of #120502 - clubby789:remove-ffi-returns-twice, r=compiler-errors 2024-02-06 22:45:42 +01:00
rustc_log
rustc_macros Rollup merge of #120475 - Nilstrieb:cargo-build-my-a-, r=michaelwoerister 2024-01-30 16:57:50 +01:00
rustc_metadata Rollup merge of #119592 - petrochenkov:unload, r=compiler-errors 2024-02-08 09:06:31 +01:00
rustc_middle Auto merge of #120381 - fee1-dead-contrib:reconstify-add, r=compiler-errors 2024-02-08 00:04:14 +00:00
rustc_mir_build Rollup merge of #120423 - RalfJung:indirect-structural-match, r=petrochenkov 2024-02-06 22:45:41 +01:00
rustc_mir_dataflow More comments, final tweaks 2024-02-06 02:22:58 +00:00
rustc_mir_transform Rollup merge of #120733 - klensy:trait-const-fn, r=oli-obk 2024-02-07 18:24:45 +01:00
rustc_monomorphize Rollup merge of #120602 - klensy:mono-comment, r=nnethercote 2024-02-06 19:40:07 +01:00
rustc_next_trait_solver Add CoroutineClosure to TyKind, AggregateKind, UpvarArgs 2024-02-06 02:22:58 +00:00
rustc_parse Auto merge of #120392 - compiler-errors:async-bound-modifier, r=davidtwco,fmease 2024-02-06 00:45:11 +00:00
rustc_parse_format Rename the unescaping functions. 2024-01-25 12:28:11 +11:00
rustc_passes Rollup merge of #120470 - estebank:issue-54196, r=compiler-errors 2024-02-07 18:24:42 +01:00
rustc_pattern_analysis Rollup merge of #120633 - Nadrieril:place_info, r=compiler-errors 2024-02-07 18:24:44 +01:00
rustc_privacy Add CoroutineClosure to TyKind, AggregateKind, UpvarArgs 2024-02-06 02:22:58 +00:00
rustc_query_impl Remove unused features 2024-01-25 14:01:33 +00:00
rustc_query_system Stop using String for error codes. 2024-01-29 07:41:41 +11:00
rustc_resolve Rollup merge of #119592 - petrochenkov:unload, r=compiler-errors 2024-02-08 09:06:31 +01:00
rustc_serialize Remove unused features 2024-01-25 14:01:33 +00:00
rustc_session Rollup merge of #120735 - nnethercote:rm-some-unchecked_claims, r=oli-obk 2024-02-07 18:24:46 +01:00
rustc_smir Fix drop shim for AsyncFnOnce closure, AsyncFnMut shim for AsyncFn closure 2024-02-06 02:22:58 +00:00
rustc_span Rollup merge of #120735 - nnethercote:rm-some-unchecked_claims, r=oli-obk 2024-02-07 18:24:46 +01:00
rustc_symbol_mangling Fix drop shim for AsyncFnOnce closure, AsyncFnMut shim for AsyncFn closure 2024-02-06 02:22:58 +00:00
rustc_target Rollup merge of #119162 - heiher:direct-access-external-data, r=petrochenkov 2024-02-07 18:24:41 +01:00
rustc_trait_selection Auto merge of #120558 - oli-obk:missing_impl_item_ice, r=estebank 2024-02-08 05:01:09 +00:00
rustc_traits Remove unused features 2024-01-25 14:01:33 +00:00
rustc_transmute Remove unused features 2024-01-25 14:01:33 +00:00
rustc_ty_utils Fudge coroutine argument for CoroutineKindShim in fn_sig_for_fn_abi 2024-02-06 02:53:06 +00:00
rustc_type_ir Bless tests, add comments 2024-02-06 02:22:58 +00:00
stable_mir Remove the abi_amdgpu_kernel feature 2024-01-30 15:46:40 +00:00