rust/compiler
Georg Semmler 9b45cfdbdd
Actually use the #[do_not_recommend] attribute if present
This change tweaks the error message generation to actually use the
`#[do_not_recommend]` attribute if present by just skipping the marked
trait impl in favour of the parent impl. It also adds a compile test for
this behaviour. Without this change the test would output the following
error:

```
error[E0277]: the trait bound `&str: Expression` is not satisfied
  --> /home/weiznich/Documents/rust/rust/tests/ui/diagnostic_namespace/do_not_recommend.rs:53:15
   |
LL |     SelectInt.check("bar");
   |               ^^^^^ the trait `Expression` is not implemented for `&str`, which is required by `&str: AsExpression<Integer>`
   |
   = help: the following other types implement trait `Expression`:
             Bound<T>
             SelectInt
note: required for `&str` to implement `AsExpression<Integer>`
  --> /home/weiznich/Documents/rust/rust/tests/ui/diagnostic_namespace/do_not_recommend.rs:26:13
   |
LL | impl<T, ST> AsExpression<ST> for T
   |             ^^^^^^^^^^^^^^^^     ^
LL | where
LL |     T: Expression<SqlType = ST>,
   |        ------------------------ unsatisfied trait bound introduced here
```

Note how that mentions `&str: Expression` before and now mentions `&str:
AsExpression<Integer>` instead which is much more helpful for users.

Open points for further changes before stabilization:

* We likely want to move the attribute to the `#[diagnostic]` namespace
to relax the guarantees given?
* How does it interact with the new trait solver?
2024-05-19 08:29:27 +02:00
..
rustc Change SIGPIPE ui from #[unix_sigpipe = "..."] to -Zon-broken-pipe=... 2024-05-02 19:48:29 +02:00
rustc_abi Temporarily revert to NonZeroUsize in rustc-abi to fix building on stable 2024-05-18 11:27:29 +03:00
rustc_arena
rustc_ast Auto merge of #125077 - spastorino:add-new-fnsafety-enum2, r=jackh726 2024-05-18 19:35:24 +00:00
rustc_ast_ir Remove extern crate rustc_macros from numerous crates. 2024-04-29 10:21:54 +10:00
rustc_ast_lowering Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_ast_passes Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_ast_pretty Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_attr Remove extern crate rustc_macros from numerous crates. 2024-04-29 10:21:54 +10:00
rustc_baked_icu_data
rustc_borrowck Auto merge of #125077 - spastorino:add-new-fnsafety-enum2, r=jackh726 2024-05-18 19:35:24 +00:00
rustc_builtin_macros Auto merge of #125077 - spastorino:add-new-fnsafety-enum2, r=jackh726 2024-05-18 19:35:24 +00:00
rustc_codegen_cranelift Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_codegen_gcc Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_codegen_llvm Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_codegen_ssa Auto merge of #125077 - spastorino:add-new-fnsafety-enum2, r=jackh726 2024-05-18 19:35:24 +00:00
rustc_const_eval Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_data_structures Rollup merge of #124818 - compiler-errors:ena, r=Mark-Simulacrum 2024-05-11 08:00:15 +02:00
rustc_driver
rustc_driver_impl Don't call env::set_var in rustc_driver::install_ice_hook 2024-05-13 09:37:29 +02:00
rustc_error_codes Remove a stray backtick in an error explanation. 2024-05-13 07:53:38 +10:00
rustc_error_messages Rename SubdiagnosticMessage as SubdiagMessage. 2024-03-05 12:14:49 +11:00
rustc_errors Uplift FnSig 2024-05-16 09:52:01 -04:00
rustc_expand Auto merge of #125180 - mu001999-contrib:improve/macro-diag, r=fee1-dead 2024-05-18 13:02:48 +00:00
rustc_feature Add expr_2021 nonterminal and feature flag 2024-05-13 11:27:26 -07:00
rustc_fluent_macro Rename SubdiagnosticMessage as SubdiagMessage. 2024-03-05 12:14:49 +11:00
rustc_fs_util Stabilize std::path::absolute 2024-04-24 14:35:02 +00:00
rustc_graphviz
rustc_hir Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_hir_analysis Auto merge of #125077 - spastorino:add-new-fnsafety-enum2, r=jackh726 2024-05-18 19:35:24 +00:00
rustc_hir_pretty Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_hir_typeck Auto merge of #125077 - spastorino:add-new-fnsafety-enum2, r=jackh726 2024-05-18 19:35:24 +00:00
rustc_incremental Auto merge of #123441 - saethlin:fixed-len-file-names, r=oli-obk 2024-05-03 17:41:48 +00:00
rustc_index Simplify static_assert_sizes. 2024-04-18 15:36:25 +10:00
rustc_index_macros rustc_index: Add a ZERO constant to index types 2024-04-03 19:06:22 +03:00
rustc_infer Auto merge of #125230 - compiler-errors:uplift-query-stuff, r=lcnr 2024-05-19 00:03:48 +00:00
rustc_interface Improve check-cfg CLI errors with more structured diagnostics 2024-05-06 07:44:41 +02:00
rustc_lexer Improved the compiler code with clippy 2024-04-24 09:41:44 +02:00
rustc_lint Auto merge of #125077 - spastorino:add-new-fnsafety-enum2, r=jackh726 2024-05-18 19:35:24 +00:00
rustc_lint_defs Add `on_unimplemented" typo suggestions 2024-05-15 00:49:33 +02:00
rustc_llvm Update cc crate to v1.0.97 2024-05-08 15:06:35 +00:00
rustc_log Construct SourceMap at the same time as SessionGlobals. 2024-04-16 13:02:53 +10:00
rustc_macros Lift Lift 2024-05-10 15:44:03 -04:00
rustc_metadata Remove extern crate rustc_middle from rustc_metadata. 2024-05-13 08:20:18 +10:00
rustc_middle Auto merge of #125230 - compiler-errors:uplift-query-stuff, r=lcnr 2024-05-19 00:03:48 +00:00
rustc_mir_build Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_mir_dataflow Inline & delete Ty::new_unit, since it's just a field access 2024-05-02 17:49:23 +02:00
rustc_mir_transform Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_monomorphize Lift TraitRef into rustc_type_ir 2024-05-10 15:44:03 -04:00
rustc_next_trait_solver Uplift GenericArgKind, CanonicalVarValues, QueryInput 2024-05-18 16:21:43 -04:00
rustc_parse Auto merge of #125077 - spastorino:add-new-fnsafety-enum2, r=jackh726 2024-05-18 19:35:24 +00:00
rustc_parse_format Simplify static_assert_sizes. 2024-04-18 15:36:25 +10:00
rustc_passes Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_pattern_analysis Stabilize exclusive_range 2024-05-02 19:42:31 -04:00
rustc_privacy split out AliasTy -> AliasTerm 2024-05-13 11:59:42 -04:00
rustc_query_impl Remove extern crate rustc_middle from rustc_query_impl. 2024-05-13 08:20:18 +10:00
rustc_query_system Remove some unneeded Cargo.toml dependencies. 2024-05-03 15:33:52 +10:00
rustc_resolve Auto merge of #125105 - nnethercote:rustc_resolve-cleanups, r=estebank 2024-05-18 06:36:44 +00:00
rustc_sanitizers Apply nits, uplift ExistentialPredicate too 2024-05-11 18:20:00 -04:00
rustc_serialize Step bootstrap cfgs 2024-05-01 22:19:11 -04:00
rustc_session Auto merge of #124611 - Urgau:rustdoc-stdin, r=GuillaumeGomez 2024-05-18 10:53:47 +00:00
rustc_smir Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_span Add expr_2021 nonterminal and feature flag 2024-05-13 11:27:26 -07:00
rustc_symbol_mangling Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
rustc_target enable rust-lld on x86_64-unknown-linux-gnu when requested 2024-05-16 16:08:06 +00:00
rustc_trait_selection Actually use the #[do_not_recommend] attribute if present 2024-05-19 08:29:27 +02:00
rustc_traits split out AliasTy -> AliasTerm 2024-05-13 11:59:42 -04:00
rustc_transmute Align: add bytes_usize and bits_usize 2024-05-01 15:57:33 +02:00
rustc_ty_utils Auto merge of #125077 - spastorino:add-new-fnsafety-enum2, r=jackh726 2024-05-18 19:35:24 +00:00
rustc_type_ir Auto merge of #125230 - compiler-errors:uplift-query-stuff, r=lcnr 2024-05-19 00:03:48 +00:00
rustc_type_ir_macros Uplift TraitPredicate 2024-05-11 18:20:00 -04:00
stable_mir Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00