fix some bugs

This commit is contained in:
nora 2023-12-15 17:28:00 +01:00
parent 01d4238269
commit 537c924a68
7 changed files with 47 additions and 11 deletions

View file

@ -1328,6 +1328,7 @@ function checkCall(
expr.span,
),
);
return;
}
fcx.infcx.assign(param, args[i].ty, args[i].span);

21
std/list.nil Normal file
View file

@ -0,0 +1,21 @@
type List[T] = struct {
ptr: Int,
len: Int,
cap: Int,
};
function new(): List[Int] = (
List { ptr: 0, len: 0, cap: 0 }
);
function push(list: List[Int], elem: Int) = (
growIfNeeded(list, 1);
);
// PRIVATE:
function growIfNeeded(list: List[Int], elems: Int) = (
if (list.len + elems) < list.cap then (
let newMemory = std.rt.alloc.allocateItem(0_I32, 0_I32);
);
);

View file

@ -1,4 +1,5 @@
mod rt;
mod list;
function printlnI32(x: I32) = (
printI32(x);

View file

@ -1,11 +1,4 @@
//@check-pass
type A[T] = struct { a: T };
type B[T, U, V] = struct {
b: T,
d: V,
};
type C = ();
function main() = ;
function test(a: A[I32], b: B[I32, Int, I32], c: C) = ;
function main() = (
let list = std.list.new();
std.list.push(list, 0);
);

View file

@ -0,0 +1,5 @@
function main() = (
x();
);
function x(a: Int) = ;

View file

@ -0,0 +1,4 @@
error: missing argument of type Int
--> $DIR/missing_args.nil:2
2 | x();
^

View file

@ -0,0 +1,11 @@
//@check-pass
type A[T] = struct { a: T };
type B[T, U, V] = struct {
b: T,
d: V,
};
type C = ();
function main() = ;
function test(a: A[I32], b: B[I32, Int, I32], c: C) = ;