Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Actually use the #[do_not_recommend] attribute if present #124708

Merged
merged 1 commit into from
May 19, 2024

Commits on May 19, 2024

  1. 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?
    weiznich committed May 19, 2024
    Configuration menu
    Copy the full SHA
    9b45cfd View commit details
    Browse the repository at this point in the history