Commit some new solver tests

This commit is contained in:
Michael Goulet 2023-02-27 05:23:26 +00:00
parent d962ea5789
commit e1485202ac
3 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,28 @@
// check-pass
// compile-flags: -Ztrait-solver=next
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
let x: i32 = parse()?;
Ok(())
}
trait Parse {}
impl Parse for i32 {}
#[derive(Debug)]
struct ParseError;
impl std::fmt::Display for ParseError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "ParseError")
}
}
impl Error for ParseError {}
fn parse<T: Parse>() -> Result<T, ParseError> {
todo!()
}

View File

@ -0,0 +1,24 @@
// compile-flags: -Ztrait-solver=next
// known-bug: unknown
trait Test {
type Assoc;
}
fn transform<T: Test>(x: T) -> T::Assoc {
todo!()
}
impl Test for i32 {
type Assoc = i32;
}
impl Test for String {
type Assoc = String;
}
fn main() {
let mut x = Default::default();
x = transform(x);
x = 1i32;
}

View File

@ -0,0 +1,14 @@
error[E0308]: mismatched types
--> $DIR/equating-projection-cyclically.rs:22:19
|
LL | x = transform(x);
| ^ expected inferred type, found associated type
|
= note: expected type `_`
found associated type `<_ as Test>::Assoc`
= help: consider constraining the associated type `<_ as Test>::Assoc` to `_`
= note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html
error: aborting due to previous error
For more information about this error, try `rustc --explain E0308`.