mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
Distinct inline would not implement protocol if the inlined implemented it. This closes #1292
This commit is contained in:
35
test/test_suite/dynamic/inline_protocol.c3
Normal file
35
test/test_suite/dynamic/inline_protocol.c3
Normal file
@@ -0,0 +1,35 @@
|
||||
interface Foo
|
||||
{
|
||||
fn int foo();
|
||||
}
|
||||
|
||||
struct Abc (Foo)
|
||||
{
|
||||
int a;
|
||||
}
|
||||
|
||||
struct Bcd
|
||||
{
|
||||
inline Abc a;
|
||||
}
|
||||
|
||||
struct Def
|
||||
{
|
||||
Abc a;
|
||||
}
|
||||
|
||||
fn int Abc.foo(&self) @dynamic => 1;
|
||||
|
||||
distinct Foob = inline Abc;
|
||||
|
||||
fn void test1()
|
||||
{
|
||||
Foob b;
|
||||
Abc x;
|
||||
Bcd y;
|
||||
Def d;
|
||||
Foo f = &x;
|
||||
f = &b;
|
||||
f = &y;
|
||||
f = &d; // #error: assume the interface is implemented
|
||||
}
|
||||
Reference in New Issue
Block a user