Skip to content

Use the span of the whole bound when the diagnostic talks about a bound #139374

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

Merged
merged 1 commit into from
Apr 5, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs
Original file line number Diff line number Diff line change
@@ -838,7 +838,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
| PredicateFilter::SelfOnly
| PredicateFilter::SelfAndAssociatedTypeBounds => {
match constness {
hir::BoundConstness::Always(span) => {
hir::BoundConstness::Always(_) => {
if polarity == ty::PredicatePolarity::Positive {
bounds.push((
poly_trait_ref
@@ -864,7 +864,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
// in `lower_assoc_item_constraint`.
PredicateFilter::ConstIfConst | PredicateFilter::SelfConstIfConst => {
match constness {
hir::BoundConstness::Maybe(span) => {
hir::BoundConstness::Maybe(_) => {
if polarity == ty::PredicatePolarity::Positive {
bounds.push((
poly_trait_ref
2 changes: 1 addition & 1 deletion tests/ui/consts/const-block-const-bound.stderr
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ note: required by a bound in `f`
--> $DIR/const-block-const-bound.rs:6:15
|
LL | const fn f<T: ~const Destruct>(x: T) {}
| ^^^^^^ required by this bound in `f`
| ^^^^^^^^^^^^^^^ required by this bound in `f`

error: aborting due to 1 previous error

2 changes: 1 addition & 1 deletion tests/ui/traits/const-traits/assoc-type.current.stderr
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ note: required by a bound in `Foo::Bar`
--> $DIR/assoc-type.rs:33:15
|
LL | type Bar: ~const Add;
| ^^^^^^ required by this bound in `Foo::Bar`
| ^^^^^^^^^^ required by this bound in `Foo::Bar`

error: aborting due to 1 previous error

2 changes: 1 addition & 1 deletion tests/ui/traits/const-traits/assoc-type.next.stderr
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ note: required by a bound in `Foo::Bar`
--> $DIR/assoc-type.rs:33:15
|
LL | type Bar: ~const Add;
| ^^^^^^ required by this bound in `Foo::Bar`
| ^^^^^^^^^^ required by this bound in `Foo::Bar`

error: aborting due to 1 previous error

Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ note: required by a bound in `equals_self`
--> $DIR/call-generic-method-nonconst.rs:17:25
|
LL | const fn equals_self<T: ~const Foo>(t: &T) -> bool {
| ^^^^^^ required by this bound in `equals_self`
| ^^^^^^^^^^ required by this bound in `equals_self`

error: aborting due to 1 previous error

4 changes: 2 additions & 2 deletions tests/ui/traits/const-traits/const-drop-fail-2.precise.stderr
Original file line number Diff line number Diff line change
@@ -8,14 +8,14 @@ note: required for `ConstDropImplWithBounds<NonTrivialDrop>` to implement `const
--> $DIR/const-drop-fail-2.rs:25:25
|
LL | impl<T: ~const A> const Drop for ConstDropImplWithBounds<T> {
| ------ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
| -------- ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
| unsatisfied trait bound introduced here
note: required by a bound in `check`
--> $DIR/const-drop-fail-2.rs:21:19
|
LL | const fn check<T: ~const Destruct>(_: T) {}
| ^^^^^^ required by this bound in `check`
| ^^^^^^^^^^^^^^^ required by this bound in `check`

error: aborting due to 1 previous error

4 changes: 2 additions & 2 deletions tests/ui/traits/const-traits/const-drop-fail-2.stock.stderr
Original file line number Diff line number Diff line change
@@ -8,14 +8,14 @@ note: required for `ConstDropImplWithBounds<NonTrivialDrop>` to implement `const
--> $DIR/const-drop-fail-2.rs:25:25
|
LL | impl<T: ~const A> const Drop for ConstDropImplWithBounds<T> {
| ------ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
| -------- ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
| unsatisfied trait bound introduced here
note: required by a bound in `check`
--> $DIR/const-drop-fail-2.rs:21:19
|
LL | const fn check<T: ~const Destruct>(_: T) {}
| ^^^^^^ required by this bound in `check`
| ^^^^^^^^^^^^^^^ required by this bound in `check`

error: aborting due to 1 previous error

Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ note: required by a bound in `check`
--> $DIR/const-drop-fail.rs:24:19
|
LL | const fn check<T: ~const Destruct>(_: T) {}
| ^^^^^^ required by this bound in `check`
| ^^^^^^^^^^^^^^^ required by this bound in `check`

error[E0277]: the trait bound `NonTrivialDrop: const Destruct` is not satisfied
--> $DIR/const-drop-fail.rs:35:5
@@ -26,7 +26,7 @@ note: required by a bound in `check`
--> $DIR/const-drop-fail.rs:24:19
|
LL | const fn check<T: ~const Destruct>(_: T) {}
| ^^^^^^ required by this bound in `check`
| ^^^^^^^^^^^^^^^ required by this bound in `check`

error: aborting due to 2 previous errors

4 changes: 2 additions & 2 deletions tests/ui/traits/const-traits/const-drop-fail.new_stock.stderr
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ note: required by a bound in `check`
--> $DIR/const-drop-fail.rs:24:19
|
LL | const fn check<T: ~const Destruct>(_: T) {}
| ^^^^^^ required by this bound in `check`
| ^^^^^^^^^^^^^^^ required by this bound in `check`

error[E0277]: the trait bound `NonTrivialDrop: const Destruct` is not satisfied
--> $DIR/const-drop-fail.rs:35:5
@@ -26,7 +26,7 @@ note: required by a bound in `check`
--> $DIR/const-drop-fail.rs:24:19
|
LL | const fn check<T: ~const Destruct>(_: T) {}
| ^^^^^^ required by this bound in `check`
| ^^^^^^^^^^^^^^^ required by this bound in `check`

error: aborting due to 2 previous errors

Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ note: required by a bound in `check`
--> $DIR/const-drop-fail.rs:24:19
|
LL | const fn check<T: ~const Destruct>(_: T) {}
| ^^^^^^ required by this bound in `check`
| ^^^^^^^^^^^^^^^ required by this bound in `check`

error[E0277]: the trait bound `NonTrivialDrop: const Destruct` is not satisfied
--> $DIR/const-drop-fail.rs:35:5
@@ -26,7 +26,7 @@ note: required by a bound in `check`
--> $DIR/const-drop-fail.rs:24:19
|
LL | const fn check<T: ~const Destruct>(_: T) {}
| ^^^^^^ required by this bound in `check`
| ^^^^^^^^^^^^^^^ required by this bound in `check`

error: aborting due to 2 previous errors

4 changes: 2 additions & 2 deletions tests/ui/traits/const-traits/const-drop-fail.old_stock.stderr
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ note: required by a bound in `check`
--> $DIR/const-drop-fail.rs:24:19
|
LL | const fn check<T: ~const Destruct>(_: T) {}
| ^^^^^^ required by this bound in `check`
| ^^^^^^^^^^^^^^^ required by this bound in `check`

error[E0277]: the trait bound `NonTrivialDrop: const Destruct` is not satisfied
--> $DIR/const-drop-fail.rs:35:5
@@ -26,7 +26,7 @@ note: required by a bound in `check`
--> $DIR/const-drop-fail.rs:24:19
|
LL | const fn check<T: ~const Destruct>(_: T) {}
| ^^^^^^ required by this bound in `check`
| ^^^^^^^^^^^^^^^ required by this bound in `check`

error: aborting due to 2 previous errors

2 changes: 1 addition & 1 deletion tests/ui/traits/const-traits/const-opaque.no.stderr
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ note: required by a bound in `bar`
--> $DIR/const-opaque.rs:26:17
|
LL | const fn bar<T: ~const Foo>(t: T) -> impl ~const Foo {
| ^^^^^^ required by this bound in `bar`
| ^^^^^^^^^^ required by this bound in `bar`

error[E0277]: the trait bound `(): const Foo` is not satisfied
--> $DIR/const-opaque.rs:33:12
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ note: required by a bound in `foo`
--> $DIR/default-method-body-is-const-body-checking.rs:7:28
|
LL | const fn foo<T>() where T: ~const Tr {}
| ^^^^^^ required by this bound in `foo`
| ^^^^^^^^^ required by this bound in `foo`

error: aborting due to 1 previous error

Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ note: required by a bound in `Foo::Assoc`
--> $DIR/item-bound-entailment-fails.rs:5:20
|
LL | type Assoc<T>: ~const Bar
| ^^^^^^ required by this bound in `Foo::Assoc`
| ^^^^^^^^^^ required by this bound in `Foo::Assoc`

error[E0277]: the trait bound `T: ~const Bar` is not satisfied
--> $DIR/item-bound-entailment-fails.rs:24:21
@@ -20,12 +20,12 @@ note: required for `C<T>` to implement `~const Bar`
--> $DIR/item-bound-entailment-fails.rs:14:15
|
LL | impl<T> const Bar for C<T> where T: ~const Bar {}
| ^^^ ^^^^ ------ unsatisfied trait bound introduced here
| ^^^ ^^^^ ---------- unsatisfied trait bound introduced here
note: required by a bound in `Foo::Assoc`
--> $DIR/item-bound-entailment-fails.rs:5:20
|
LL | type Assoc<T>: ~const Bar
| ^^^^^^ required by this bound in `Foo::Assoc`
| ^^^^^^^^^^ required by this bound in `Foo::Assoc`

error: aborting due to 2 previous errors

2 changes: 1 addition & 1 deletion tests/ui/traits/const-traits/minicore-fn-fail.stderr
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ note: required by a bound in `call_indirect`
--> $DIR/minicore-fn-fail.rs:11:27
|
LL | const fn call_indirect<T: ~const Fn()>(t: &T) { t() }
| ^^^^^^ required by this bound in `call_indirect`
| ^^^^^^^^^^^ required by this bound in `call_indirect`

error: aborting due to 1 previous error

12 changes: 6 additions & 6 deletions tests/ui/traits/const-traits/predicate-entailment-fails.stderr
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@ LL | type Bar<T> where T: ~const Bar;
| ----------- definition of `Bar` from trait
...
LL | type Bar<T> = () where T: const Bar;
| ^^^^^ impl has extra requirement `T: const Bar`
| ^^^^^^^^^ impl has extra requirement `T: const Bar`

error[E0276]: impl has stricter requirements than trait
--> $DIR/predicate-entailment-fails.rs:17:26
@@ -14,7 +14,7 @@ LL | fn foo<T>() where T: ~const Bar;
| -------------------------------- definition of `foo` from trait
...
LL | fn foo<T>() where T: const Bar {}
| ^^^^^ impl has extra requirement `T: const Bar`
| ^^^^^^^^^ impl has extra requirement `T: const Bar`

error[E0276]: impl has stricter requirements than trait
--> $DIR/predicate-entailment-fails.rs:28:31
@@ -23,7 +23,7 @@ LL | type Bar<T> where T: Bar;
| ----------- definition of `Bar` from trait
...
LL | type Bar<T> = () where T: const Bar;
| ^^^^^ impl has extra requirement `T: const Bar`
| ^^^^^^^^^ impl has extra requirement `T: const Bar`

error[E0276]: impl has stricter requirements than trait
--> $DIR/predicate-entailment-fails.rs:31:26
@@ -32,7 +32,7 @@ LL | fn foo<T>() where T: Bar;
| ------------------------- definition of `foo` from trait
...
LL | fn foo<T>() where T: const Bar {}
| ^^^^^ impl has extra requirement `T: const Bar`
| ^^^^^^^^^ impl has extra requirement `T: const Bar`

error[E0276]: impl has stricter requirements than trait
--> $DIR/predicate-entailment-fails.rs:35:31
@@ -41,7 +41,7 @@ LL | type Bar<T> where T: Bar;
| ----------- definition of `Bar` from trait
...
LL | type Bar<T> = () where T: ~const Bar;
| ^^^^^^ impl has extra requirement `T: ~const Bar`
| ^^^^^^^^^^ impl has extra requirement `T: ~const Bar`

error[E0276]: impl has stricter requirements than trait
--> $DIR/predicate-entailment-fails.rs:38:26
@@ -50,7 +50,7 @@ LL | fn foo<T>() where T: Bar;
| ------------------------- definition of `foo` from trait
...
LL | fn foo<T>() where T: ~const Bar {}
| ^^^^^^ impl has extra requirement `T: ~const Bar`
| ^^^^^^^^^^ impl has extra requirement `T: ~const Bar`

error: aborting due to 6 previous errors

4 changes: 2 additions & 2 deletions tests/ui/traits/const-traits/trait-where-clause-const.stderr
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ note: required by a bound in `Foo::b`
--> $DIR/trait-where-clause-const.rs:15:24
|
LL | fn b() where Self: ~const Bar;
| ^^^^^^ required by this bound in `Foo::b`
| ^^^^^^^^^^ required by this bound in `Foo::b`

error[E0277]: the trait bound `T: ~const Bar` is not satisfied
--> $DIR/trait-where-clause-const.rs:23:12
@@ -20,7 +20,7 @@ note: required by a bound in `Foo::c`
--> $DIR/trait-where-clause-const.rs:16:13
|
LL | fn c<T: ~const Bar>();
| ^^^^^^ required by this bound in `Foo::c`
| ^^^^^^^^^^ required by this bound in `Foo::c`

error: aborting due to 2 previous errors

Original file line number Diff line number Diff line change
@@ -28,7 +28,7 @@ note: required by a bound in `require`
--> $DIR/unsatisfied-const-trait-bound.rs:8:15
|
LL | fn require<T: const Trait>() {}
| ^^^^^ required by this bound in `require`
| ^^^^^^^^^^^ required by this bound in `require`

error: aborting due to 4 previous errors