rust/tests
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
..
assembly test: Add assembly tests for x86_64-unknown-linux-none target 2024-05-12 01:25:11 +02:00
auxiliary Clean up users of rust_dbg_call 2024-04-17 15:08:08 -04:00
codegen Rollup merge of #125184 - scottmcm:fix-thin-ptr-ice, r=jieyouxu 2024-05-18 18:44:14 +02:00
codegen-units Fix some minor issues from the ui-test auto-porting 2024-05-11 19:58:35 -04:00
coverage Auto merge of #124223 - Zalathar:conditional-let, r=compiler-errors 2024-05-07 22:28:51 +00:00
coverage-run-rustdoc
crashes Propagate errors rather than using return_if_err 2024-05-12 12:50:18 -04:00
debuginfo Implement lldb formattter for "clang encoded" enums (LLDB 18.1+) 2024-05-05 17:53:02 -07:00
incremental add test for incremental ICE: slice-pattern-const.rs #83085 2024-04-21 14:45:00 +02:00
mir-opt Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
pretty Rollup merge of #124269 - scrabsha:sasha/fix-124206, r=dtolnay 2024-04-29 18:03:22 +01:00
run-make Migrate run-make/rustdoc-scrape-examples-invalid-expr to rmake.rs 2024-05-18 15:35:00 +02:00
run-make-fulldeps Soft-destabilize RustcEncodable/RustcDecodable 2024-03-22 13:24:35 -07:00
run-pass-valgrind Add test for Apple's -weak_framework linker argument 2024-03-18 23:27:34 +01:00
rustdoc rustdoc: Negative impls are not notable 2024-05-14 20:40:59 -04:00
rustdoc-gui Rollup merge of #124738 - notriddle:notriddle/search-form-js, r=GuillaumeGomez 2024-05-07 18:12:54 +02:00
rustdoc-js rustdoc-search: add parser for & syntax 2024-04-19 14:31:21 -07:00
rustdoc-js-std rustdoc-search: add parser for & syntax 2024-04-19 14:31:21 -07:00
rustdoc-json
rustdoc-ui Always hide private fields in aliased type 2024-05-11 13:11:46 +02:00
ui Actually use the #[do_not_recommend] attribute if present 2024-05-19 08:29:27 +02:00
ui-fulldeps Add ErrorGuaranteed to Recovered::Yes and use it more. 2024-05-09 20:12:07 +10:00
COMPILER_TESTS.md