mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
Interfaces not correctly copied with generics #1545.
This commit is contained in:
@@ -29,6 +29,7 @@
|
||||
- Improved error message on invalid subscript index type #1535.
|
||||
- Improved error message when declaring a variable `void!`.
|
||||
- Cannot use void as a generic parameter #1546
|
||||
- Interfaces not correctly copied with generics #1545
|
||||
|
||||
### Stdlib changes
|
||||
- Remove unintended print of `char[]` as String
|
||||
|
||||
@@ -941,6 +941,7 @@ Decl *copy_decl(CopyStruct *c, Decl *decl)
|
||||
case DECL_ERASED:
|
||||
break;
|
||||
case DECL_INTERFACE:
|
||||
copy_decl_type(copy);
|
||||
MACRO_COPY_TYPE_LIST(copy->interfaces);
|
||||
MACRO_COPY_DECL_LIST(copy->methods);
|
||||
MACRO_COPY_DECL_LIST(copy->interface_methods);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// #target: macos-aarch64
|
||||
module gen(<Type>);
|
||||
|
||||
fn Type mult(Type x)
|
||||
|
||||
31
test/test_suite/generic/generic_interface.c3t
Normal file
31
test/test_suite/generic/generic_interface.c3t
Normal file
@@ -0,0 +1,31 @@
|
||||
// #target: macos-aarch64
|
||||
module base;
|
||||
|
||||
module test(<MyType>);
|
||||
import base;
|
||||
interface Zzz
|
||||
{
|
||||
fn void zzz(MyType t);
|
||||
}
|
||||
struct TestStruct (Zzz)
|
||||
{
|
||||
String data;
|
||||
}
|
||||
fn void TestStruct.zzz(&self, MyType t) @dynamic { }
|
||||
|
||||
module app;
|
||||
import test;
|
||||
fn int main()
|
||||
{
|
||||
TestStruct(<int>) ts;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* #expect: app.ll
|
||||
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
%ts = alloca %TestStruct, align 8
|
||||
call void @llvm.memset.p0.i64(ptr align 8 %ts, i8 0, i64 16, i1 false)
|
||||
ret i32 0
|
||||
}
|
||||
Reference in New Issue
Block a user