LYR-SEM0125
a qualified interface call on a receiver that does not conform
A call 'Interface.member(receiver, …)' passes a first argument whose type does not conform to the interface.
Explanation
Greeter.greet(x) calls the greet that x's conformance to Greeter provides; the first argument is the receiver. A value whose type does not conform to the interface has no such member.
Pass a value that conforms, or call the member on the value directly.
Wrong
interface Greeter { fn greet(): string; }
struct Person :: [Greeter] {
name: string,
fn greet(): string { return "hello"; }
}
fn main(): void {
let _ = Greeter.greet(3);
}
Right
interface Greeter { fn greet(): string; }
struct Person :: [Greeter] {
name: string,
fn greet(): string { return "hello"; }
}
fn main(): void {
let _ = Greeter.greet(Person { name = "ada" });
}