Lyricdev
GitHub

LYR-SEM0125

a qualified interface call on a receiver that does not conform

error · spec 05-interfaces

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);
}
interface Greeter { fn greet(): string; }

struct Person :: [Greeter] {
    name: string,
    fn greet(): string { return "hello"; }
}

fn main(): void {
    let _ = Greeter.greet(Person { name = "ada" });
}