Add test for #100246.
This commit is contained in:
parent
fb8636fc48
commit
75cc9cddf7
2 changed files with 43 additions and 0 deletions
30
src/test/ui/typeck/issue-100246.rs
Normal file
30
src/test/ui/typeck/issue-100246.rs
Normal file
|
@ -0,0 +1,30 @@
|
|||
#![recursion_limit = "5"] // To reduce noise
|
||||
|
||||
//expect incompatible type error when ambiguous traits are in scope
|
||||
//and not an overflow error on the span in the main function.
|
||||
|
||||
struct Ratio<T>(T);
|
||||
|
||||
pub trait Pow {
|
||||
fn pow(self) -> Self;
|
||||
}
|
||||
|
||||
impl<'a, T> Pow for &'a Ratio<T>
|
||||
where
|
||||
&'a T: Pow,
|
||||
{
|
||||
fn pow(self) -> Self {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
fn downcast<'a, W: ?Sized>() -> std::io::Result<&'a W> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
struct Other;
|
||||
|
||||
fn main() -> std::io::Result<()> {
|
||||
let other: Other = downcast()?;//~ERROR 28:24: 28:35: `?` operator has incompatible types
|
||||
Ok(())
|
||||
}
|
13
src/test/ui/typeck/issue-100246.stderr
Normal file
13
src/test/ui/typeck/issue-100246.stderr
Normal file
|
@ -0,0 +1,13 @@
|
|||
error[E0308]: `?` operator has incompatible types
|
||||
--> $DIR/issue-100246.rs:28:24
|
||||
|
|
||||
LL | let other: Other = downcast()?;
|
||||
| ^^^^^^^^^^^ expected struct `Other`, found reference
|
||||
|
|
||||
= note: `?` operator cannot convert from `&_` to `Other`
|
||||
= note: expected struct `Other`
|
||||
found reference `&_`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
Loading…
Add table
Reference in a new issue