cairo-lang-semantic 2.18.0

Cairo semantic model.
Documentation
//! > Unknown types in trait/impl methods.

//! > test_runner_name
test_function_diagnostics(expect_diagnostics: true)

//! > function_code
fn foo() {}

//! > function_name
foo

//! > module_code
trait MyTrait {
    fn foo(x: u8, y: T, z: u8) -> u8;
    fn bar() -> T;
}

impl MyImpl of MyTrait {
    fn foo(x: T, y: u8, z: u16) -> T {}
    fn bar() -> u8 {
        0
    }
}

//! > expected_diagnostics
error[E0006]: Type not found.
 --> lib.cairo:2:22
    fn foo(x: u8, y: T, z: u8) -> u8;
                     ^

error[E0006]: Type not found.
 --> lib.cairo:3:17
    fn bar() -> T;
                ^

error[E0006]: Type not found.
 --> lib.cairo:7:15
    fn foo(x: T, y: u8, z: u16) -> T {}
              ^

error[E0006]: Type not found.
 --> lib.cairo:7:36
    fn foo(x: T, y: u8, z: u16) -> T {}
                                   ^

error[E2031]: Parameter type of impl function `MyImpl::foo` is incompatible with `MyTrait::foo`. Expected: `core::integer::u8`, actual: `core::integer::u16`.
 --> lib.cairo:7:28
    fn foo(x: T, y: u8, z: u16) -> T {}
                           ^^^