diff options
| author | Michael Goulet <michael@errs.io> | 2024-05-19 11:04:08 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-19 11:04:08 -0400 |
| commit | e940ca7d4fd4ddb027592ed6c1ef00d20037bb58 (patch) | |
| tree | 0c2a84d6f98b93b907e60d251df00c5dca93235a /compiler/rustc_codegen_llvm/src/errors.rs | |
| parent | f848505c404049f3b75cd5fd6d7e08667e7c6d3a (diff) | |
| parent | 9b45cfdbdde020682d167ffd9f512fd8401d8cfe (diff) | |
| download | rust-e940ca7d4fd4ddb027592ed6c1ef00d20037bb58.tar.gz rust-e940ca7d4fd4ddb027592ed6c1ef00d20037bb58.zip | |
Rollup merge of #124708 - weiznich:implement_do_not_recommend, r=compiler-errors,estebank
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?
r? `@estebank`
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/errors.rs')
0 files changed, 0 insertions, 0 deletions
