rust/compiler
bors 6bf600bc98 Auto merge of #120019 - lcnr:fn-wf, r=BoxyUwU
fix fn/const items implied bounds and wf check (rebase)

A rebase of #104098, see that PR for discussion. This is pretty much entirely the work of `@aliemjay.` I received his permission for this rebase.

---

These are two distinct changes (edit: actually three, see below):
1. Wf-check all fn item args. This is a soundness fix.
Fixes #104005

2. Use implied bounds from impl header in borrowck of associated functions/consts. This strictly accepts more code and helps to mitigate the impact of other breaking changes.
Fixes #98852
Fixes #102611

The first is a breaking change and will likely have a big impact without the the second one. See the first commit for how it breaks libstd.

Landing the second one without the first will allow more incorrect code to pass. For example an exploit of #104005 would be as simple as:
```rust
use core::fmt::Display;

trait ExtendLt<Witness> {
    fn extend(self) -> Box<dyn Display>;
}

impl<T: Display> ExtendLt<&'static T> for T {
    fn extend(self) -> Box<dyn Display> {
        Box::new(self)
    }
}

fn main() {
    let val = (&String::new()).extend();
    println!("{val}");
}
```

The third change is to to check WF of user type annotations before normalizing them (fixes #104764, fixes #104763). It is mutually dependent on the second change above: an attempt to land it separately in #104746 caused several crater regressions that can all be mitigated by using the implied from the impl header. It is also necessary for the soundness of associated consts that use the implied bounds of impl header. See #104763 and how the third commit fixes the soundness issue in `tests/ui/wf/wf-associated-const.rs` that was introduces by the previous commit.

r? types
2024-01-17 02:35:06 +00:00
..
rustc
rustc_abi Avoid specialization for the Span Encodable and Decodable impls 2023-12-31 20:42:17 +00:00
rustc_arena rustc_arena: add alloc_str 2023-12-05 17:52:51 -08:00
rustc_ast Delegation implementation: step 1 2024-01-12 14:11:16 +03:00
rustc_ast_lowering Add check for ui_testing via promoting parameters from ParseSess to Session 2024-01-13 12:11:13 -05:00
rustc_ast_passes Auto merge of #119088 - George-lewis:glewis/suggest-upgrading-compiler, r=Nilstrieb 2024-01-13 20:06:03 +00:00
rustc_ast_pretty Delegation implementation: step 1 2024-01-12 14:11:16 +03:00
rustc_attr Add check for ui_testing via promoting parameters from ParseSess to Session 2024-01-13 12:11:13 -05:00
rustc_baked_icu_data
rustc_borrowck Auto merge of #120019 - lcnr:fn-wf, r=BoxyUwU 2024-01-17 02:35:06 +00:00
rustc_builtin_macros Add check for ui_testing via promoting parameters from ParseSess to Session 2024-01-13 12:11:13 -05:00
rustc_codegen_cranelift compiler: Lower fn call arg spans down to MIR 2024-01-15 19:07:11 +01:00
rustc_codegen_gcc Rename {create,emit}_warning as {create,emit}_warn. 2024-01-10 07:33:06 +11:00
rustc_codegen_llvm Revert "Auto merge of #113923 - DianQK:restore-no-builtins-lto, r=pnkfelix" 2024-01-12 18:23:04 +08:00
rustc_codegen_ssa compiler: Lower fn call arg spans down to MIR 2024-01-15 19:07:11 +01:00
rustc_const_eval compiler: Lower fn call arg spans down to MIR 2024-01-15 19:07:11 +01:00
rustc_data_structures Rollup merge of #119527 - klensy:ordering, r=compiler-errors 2024-01-09 13:23:17 +01:00
rustc_driver
rustc_driver_impl Replace TrimmedDefPaths with a bool. 2024-01-15 09:16:14 +11:00
rustc_error_codes Add error code for missing base expression in struct update syntax 2024-01-09 19:25:54 +00:00
rustc_error_messages
rustc_errors Don't consider delayed bugs for -Ztreat-err-as-bug. 2024-01-13 09:59:56 +11:00
rustc_expand Add check for ui_testing via promoting parameters from ParseSess to Session 2024-01-13 12:11:13 -05:00
rustc_feature Rollup merge of #119866 - smoelius:patch-2, r=compiler-errors 2024-01-12 08:23:59 +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 Auto merge of #119361 - sjwang05:issue-119352, r=WaffleLapkin 2024-01-14 09:39:03 +00:00
rustc_hir_analysis Rollup merge of #119971 - compiler-errors:zip-eq, r=nnethercote 2024-01-15 08:44:49 +01:00
rustc_hir_pretty Delegation implementation: step 1 2024-01-12 14:11:16 +03:00
rustc_hir_typeck Rollup merge of #119900 - compiler-errors:closure-checking, r=oli-obk 2024-01-16 17:55:22 +01:00
rustc_incremental Rename {create,emit}_warning as {create,emit}_warn. 2024-01-10 07:33:06 +11:00
rustc_index Auto merge of #119499 - cjgillot:dtm-opt, r=nnethercote 2024-01-06 11:54:15 +00:00
rustc_index_macros Rollup merge of #119963 - clubby789:spec-allow-internal-unstable, r=compiler-errors 2024-01-15 08:44:49 +01:00
rustc_infer Auto merge of #119947 - compiler-errors:old-solver-instantiate-response, r=lcnr 2024-01-16 13:33:04 +00:00
rustc_interface Auto merge of #119473 - Urgau:check-cfg-explicit-none, r=petrochenkov 2024-01-13 06:17:46 +00:00
rustc_lexer Rename some unescaping functions. 2023-12-13 14:17:50 +11:00
rustc_lint Add check for ui_testing via promoting parameters from ParseSess to Session 2024-01-13 12:11:13 -05:00
rustc_lint_defs Rollup merge of #117556 - obeis:static-mut-ref-lint, r=davidtwco 2024-01-09 13:23:15 +01:00
rustc_llvm Revert "Auto merge of #113923 - DianQK:restore-no-builtins-lto, r=pnkfelix" 2024-01-12 18:23:04 +08:00
rustc_log
rustc_macros u8 tags for smaller enums 2024-01-09 20:08:44 -05:00
rustc_metadata Auto merge of #119088 - George-lewis:glewis/suggest-upgrading-compiler, r=Nilstrieb 2024-01-13 20:06:03 +00:00
rustc_middle Auto merge of #119977 - Mark-Simulacrum:defid-cache, r=cjgillot 2024-01-16 21:58:10 +00:00
rustc_mir_build Auto merge of #116520 - Enselic:large-copy-into-fn, r=oli-obk 2024-01-16 19:33:14 +00:00
rustc_mir_dataflow compiler: Lower fn call arg spans down to MIR 2024-01-15 19:07:11 +01:00
rustc_mir_transform Auto merge of #116520 - Enselic:large-copy-into-fn, r=oli-obk 2024-01-16 19:33:14 +00:00
rustc_monomorphize large_assignments: Lint on specific large args passed to functions 2024-01-15 19:07:12 +01:00
rustc_next_trait_solver Remove movability from TyKind::Coroutine 2023-12-28 16:35:01 +00:00
rustc_parse Auto merge of #119341 - sjwang05:issue-58462, r=WaffleLapkin 2024-01-14 04:37:45 +00:00
rustc_parse_format Removing redudant note from parse error 2024-01-08 19:41:01 +01:00
rustc_passes Add check for ui_testing via promoting parameters from ParseSess to Session 2024-01-13 12:11:13 -05:00
rustc_pattern_analysis Remove the unused overlapping_range_endpoints Vec 2024-01-15 19:27:06 +01:00
rustc_privacy Remove Session methods that duplicate DiagCtxt methods. 2023-12-24 08:05:28 +11:00
rustc_query_impl Rollup merge of #119527 - klensy:ordering, r=compiler-errors 2024-01-09 13:23:17 +01:00
rustc_query_system Auto merge of #119977 - Mark-Simulacrum:defid-cache, r=cjgillot 2024-01-16 21:58:10 +00:00
rustc_resolve Auto merge of #119610 - Nadrieril:never_pattern_bindings, r=compiler-errors 2024-01-15 21:24:13 +00:00
rustc_serialize Remove more needless leb128 coding for enum variants 2024-01-09 20:08:44 -05:00
rustc_session Replace TrimmedDefPaths with a bool. 2024-01-15 09:16:14 +11:00
rustc_smir compiler: Lower fn call arg spans down to MIR 2024-01-15 19:07:11 +01:00
rustc_span compiler: Lower fn call arg spans down to MIR 2024-01-15 19:07:11 +01:00
rustc_symbol_mangling Rename consuming chaining methods on DiagnosticBuilder. 2024-01-10 07:40:00 +11:00
rustc_target Auto merge of #119927 - matthiaskrgr:rollup-885ws57, r=matthiaskrgr 2024-01-13 16:09:45 +00:00
rustc_trait_selection Auto merge of #120019 - lcnr:fn-wf, r=BoxyUwU 2024-01-17 02:35:06 +00:00
rustc_traits Remove redundant Code from FulfillmentErrorCode variants 2024-01-12 16:34:39 +00:00
rustc_transmute Fix an ICE that occurs after an error has already been reported 2024-01-09 16:09:30 +00:00
rustc_ty_utils Rollup merge of #119969 - compiler-errors:simplify-closure-env-ty, r=oli-obk 2024-01-16 17:55:23 +01:00
rustc_type_ir Fix tidy error 2023-12-31 20:58:36 +00:00
stable_mir Rollup merge of #119877 - celinval:smir-visit-projection, r=oli-obk 2024-01-12 15:16:57 +01:00