Skip to content

Rollup of 6 pull requests #120623

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

Closed
wants to merge 24 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
9099c94
Use a better set of targets for blessing mir-opt tests
saethlin Jan 7, 2024
3ea464f
Add tests
Nadrieril Jan 21, 2024
96ff1a4
Move `Or` test out of the loop
Nadrieril Jan 21, 2024
e902878
Clarify the binding dance
Nadrieril Jan 21, 2024
09d4613
Put new bindings first in refutable cases too
Nadrieril Jan 21, 2024
0825ad3
Clarify the new binding dance
Nadrieril Jan 21, 2024
cda3588
make matching on NaN a hard error
RalfJung Sep 30, 2023
1254ee4
remove illegal_floating_point_literal_pattern lint
RalfJung Jan 6, 2024
9f14fc4
add test checking behavior of matching on floats, and NaNs in consts
RalfJung Sep 23, 2023
c367983
Suggest name value cfg when only value is used for check-cfg
chenyukang Jan 28, 2024
0213c87
limit the names_possiblilities to less than 3
chenyukang Jan 30, 2024
ca243e7
add testcase for more than 3 cfg names
chenyukang Jan 30, 2024
d34b0fa
Add test for method on unbounded type parameter receiver
estebank Jan 26, 2024
20b1c2a
Account for unbounded type param receiver in suggestions
estebank Jan 26, 2024
9ccc770
fix rebase
estebank Jan 30, 2024
f622e83
Actually abort in panic-abort-tests
tmandry Jan 24, 2024
815d312
Tweak a few mir-opt tests instead of using -Clink-dead-code
saethlin Jan 31, 2024
48f664b
Ignore test-panic-abort tests on Android
tmandry Feb 2, 2024
0cb975e
Rollup merge of #116284 - RalfJung:no-nan-match, r=cjgillot
matthiaskrgr Feb 3, 2024
d4c48be
Rollup merge of #120060 - saethlin:mir-opt-bless-targets, r=wesleywiser
matthiaskrgr Feb 3, 2024
a637087
Rollup merge of #120214 - Nadrieril:fix-120210, r=pnkfelix
matthiaskrgr Feb 3, 2024
b810fa6
Rollup merge of #120326 - tmandry:abort-in-tests, r=cuviper
matthiaskrgr Feb 3, 2024
3655eee
Rollup merge of #120396 - estebank:method-on-unbounded-type-param, r=…
matthiaskrgr Feb 3, 2024
6677374
Rollup merge of #120435 - chenyukang:yukang-fix-120427-cfg-name, r=Ur…
matthiaskrgr Feb 3, 2024
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
Prev Previous commit
Next Next commit
Add test for method on unbounded type parameter receiver
  • Loading branch information
estebank committed Jan 30, 2024
commit d34b0fa495bfbc3bd7de14a691822706074fcbb6
15 changes: 15 additions & 0 deletions tests/ui/traits/method-on-unbounded-type-param.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
fn f<T>(a: T, b: T) -> std::cmp::Ordering {
a.cmp(&b) //~ ERROR E0599
}
fn g<T>(a: T, b: T) -> std::cmp::Ordering {
(&a).cmp(&b) //~ ERROR E0599
}
fn h<T>(a: &T, b: T) -> std::cmp::Ordering {
a.cmp(&b) //~ ERROR E0599
}
trait T {}
impl<X: std::cmp::Ord> T for X {}
fn main() {
let x: Box<dyn T> = Box::new(0);
x.cmp(&x); //~ ERROR E0599
}
83 changes: 83 additions & 0 deletions tests/ui/traits/method-on-unbounded-type-param.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
error[E0599]: `T` is not an iterator
--> $DIR/method-on-unbounded-type-param.rs:2:7
|
LL | fn f<T>(a: T, b: T) -> std::cmp::Ordering {
| - method `cmp` not found for this type parameter
LL | a.cmp(&b)
| ^^^ `T` is not an iterator
|
= note: the following trait bounds were not satisfied:
`T: Iterator`
which is required by `&mut T: Iterator`
help: consider restricting the type parameter to satisfy the trait bound
|
LL | fn f<T>(a: T, b: T) -> std::cmp::Ordering where T: Iterator {
| +++++++++++++++++

error[E0599]: the method `cmp` exists for reference `&T`, but its trait bounds were not satisfied
--> $DIR/method-on-unbounded-type-param.rs:5:10
|
LL | (&a).cmp(&b)
| ^^^ method cannot be called on `&T` due to unsatisfied trait bounds
|
= note: the following trait bounds were not satisfied:
`T: Ord`
which is required by `&T: Ord`
`&T: Iterator`
which is required by `&mut &T: Iterator`
`T: Iterator`
which is required by `&mut T: Iterator`
help: consider restricting the type parameters to satisfy the trait bounds
|
LL | fn g<T>(a: T, b: T) -> std::cmp::Ordering where T: Iterator, T: Ord {
| +++++++++++++++++++++++++

error[E0599]: the method `cmp` exists for reference `&T`, but its trait bounds were not satisfied
--> $DIR/method-on-unbounded-type-param.rs:8:7
|
LL | a.cmp(&b)
| ^^^ method cannot be called on `&T` due to unsatisfied trait bounds
|
= note: the following trait bounds were not satisfied:
`T: Ord`
which is required by `&T: Ord`
`&T: Iterator`
which is required by `&mut &T: Iterator`
`T: Iterator`
which is required by `&mut T: Iterator`
help: consider restricting the type parameters to satisfy the trait bounds
|
LL | fn h<T>(a: &T, b: T) -> std::cmp::Ordering where T: Iterator, T: Ord {
| +++++++++++++++++++++++++

error[E0599]: the method `cmp` exists for struct `Box<dyn T>`, but its trait bounds were not satisfied
--> $DIR/method-on-unbounded-type-param.rs:14:7
|
LL | trait T {}
| -------
| |
| doesn't satisfy `dyn T: Iterator`
| doesn't satisfy `dyn T: Ord`
...
LL | x.cmp(&x);
| ^^^ method cannot be called on `Box<dyn T>` due to unsatisfied trait bounds
--> $SRC_DIR/alloc/src/boxed.rs:LL:COL
::: $SRC_DIR/alloc/src/boxed.rs:LL:COL
|
= note: doesn't satisfy `Box<dyn T>: Iterator`
|
= note: doesn't satisfy `Box<dyn T>: Ord`
|
= note: the following trait bounds were not satisfied:
`dyn T: Iterator`
which is required by `Box<dyn T>: Iterator`
`dyn T: Ord`
which is required by `Box<dyn T>: Ord`
`Box<dyn T>: Iterator`
which is required by `&mut Box<dyn T>: Iterator`
`dyn T: Iterator`
which is required by `&mut dyn T: Iterator`

error: aborting due to 4 previous errors

For more information about this error, try `rustc --explain E0599`.