mirror of
https://github.com/Noratrieb/riverdelta.git
synced 2026-01-15 00:45:04 +01:00
fix generics
This commit is contained in:
parent
dbd49d852f
commit
66d95dfeeb
18 changed files with 154 additions and 158 deletions
6
ui-tests/type/generics/aliases_nested.nil
Normal file
6
ui-tests/type/generics/aliases_nested.nil
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
//@check-pass
|
||||
type A[T] = T;
|
||||
|
||||
function ohno(x: A[A[A[I32]]]): I32 = x;
|
||||
|
||||
function main() = ;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
error: type I32 does not take generic arguments
|
||||
error: type I32 does not take any generic arguments but 1 were passed
|
||||
--> $DIR/generics_on_primitive.nil:2
|
||||
2 | let a: I32[I32] = 0;
|
||||
^^^
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
/home/nils/projects/riverdelta/target/ast.js:110
|
||||
throw new Error(`substitution out of range, param index ${ty.idx} of param ${ty.name} out of range for length ${genericArgs.length}`);
|
||||
^
|
||||
|
||||
Error: substitution out of range, param index 0 of param T out of range for length 0
|
||||
at substituteTy (/home/nils/projects/riverdelta/target/ast.js:110:23)
|
||||
at subst (/home/nils/projects/riverdelta/target/ast.js:106:27)
|
||||
at Array.map (<anonymous>)
|
||||
at substituteTy (/home/nils/projects/riverdelta/target/ast.js:125:45)
|
||||
at typeOfItem (/home/nils/projects/riverdelta/target/typeck/item.js:193:33)
|
||||
at Object.itemInner (/home/nils/projects/riverdelta/target/typeck/index.js:63:54)
|
||||
at Object.item (/home/nils/projects/riverdelta/target/ast.js:146:34)
|
||||
at /home/nils/projects/riverdelta/target/ast.js:164:55
|
||||
at Array.map (<anonymous>)
|
||||
at foldAst (/home/nils/projects/riverdelta/target/ast.js:164:34)
|
||||
|
||||
Node.js v20.10.0
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
//@check-pass
|
||||
type A[T] = struct { a: T };
|
||||
type B[T, U, V] = struct {
|
||||
b: T,
|
||||
|
|
@ -6,3 +7,5 @@ type B[T, U, V] = struct {
|
|||
type C = ();
|
||||
|
||||
function test(a: A[I32], b: B[I32, Int, I32], c: C) = ;
|
||||
|
||||
function main() = ;
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
/home/nils/projects/riverdelta/target/ast.js:110
|
||||
throw new Error(`substitution out of range, param index ${ty.idx} of param ${ty.name} out of range for length ${genericArgs.length}`);
|
||||
^
|
||||
|
||||
Error: substitution out of range, param index 0 of param T out of range for length 0
|
||||
at substituteTy (/home/nils/projects/riverdelta/target/ast.js:110:23)
|
||||
at subst (/home/nils/projects/riverdelta/target/ast.js:106:27)
|
||||
at Array.map (<anonymous>)
|
||||
at substituteTy (/home/nils/projects/riverdelta/target/ast.js:125:45)
|
||||
at typeOfItem (/home/nils/projects/riverdelta/target/typeck/item.js:193:33)
|
||||
at Object.itemInner (/home/nils/projects/riverdelta/target/typeck/index.js:63:54)
|
||||
at Object.item (/home/nils/projects/riverdelta/target/ast.js:146:34)
|
||||
at /home/nils/projects/riverdelta/target/ast.js:164:55
|
||||
at Array.map (<anonymous>)
|
||||
at foldAst (/home/nils/projects/riverdelta/target/ast.js:164:34)
|
||||
|
||||
Node.js v20.10.0
|
||||
|
|
@ -21,3 +21,5 @@ function test(
|
|||
c2: C[],
|
||||
c3: C[I32],
|
||||
) = ;
|
||||
|
||||
function main() = ;
|
||||
|
|
|
|||
|
|
@ -1,17 +1,24 @@
|
|||
/home/nils/projects/riverdelta/target/ast.js:110
|
||||
throw new Error(`substitution out of range, param index ${ty.idx} of param ${ty.name} out of range for length ${genericArgs.length}`);
|
||||
^
|
||||
|
||||
Error: substitution out of range, param index 0 of param T out of range for length 0
|
||||
at substituteTy (/home/nils/projects/riverdelta/target/ast.js:110:23)
|
||||
at subst (/home/nils/projects/riverdelta/target/ast.js:106:27)
|
||||
at Array.map (<anonymous>)
|
||||
at substituteTy (/home/nils/projects/riverdelta/target/ast.js:125:45)
|
||||
at typeOfItem (/home/nils/projects/riverdelta/target/typeck/item.js:193:33)
|
||||
at Object.itemInner (/home/nils/projects/riverdelta/target/typeck/index.js:63:54)
|
||||
at Object.item (/home/nils/projects/riverdelta/target/ast.js:146:34)
|
||||
at /home/nils/projects/riverdelta/target/ast.js:164:55
|
||||
at Array.map (<anonymous>)
|
||||
at foldAst (/home/nils/projects/riverdelta/target/ast.js:164:34)
|
||||
|
||||
Node.js v20.10.0
|
||||
error: missing generics for type A, expected 1, but only 0 were passed
|
||||
--> $DIR/wrong_amount.nil:9
|
||||
9 | a1: A,
|
||||
^
|
||||
error: missing generics for type A, expected 1, but only 0 were passed
|
||||
--> $DIR/wrong_amount.nil:10
|
||||
10 | a2: A[],
|
||||
^
|
||||
error: missing generics for type B, expected 3, but only 0 were passed
|
||||
--> $DIR/wrong_amount.nil:14
|
||||
14 | b1: B,
|
||||
^
|
||||
error: missing generics for type B, expected 3, but only 0 were passed
|
||||
--> $DIR/wrong_amount.nil:15
|
||||
15 | b2: B[],
|
||||
^
|
||||
error: missing generics for type B, expected 3, but only 2 were passed
|
||||
--> $DIR/wrong_amount.nil:16
|
||||
16 | b3: B[Int, Int],
|
||||
^
|
||||
error: type () does not take any generic arguments but 1 were passed
|
||||
--> $DIR/wrong_amount.nil:22
|
||||
22 | c3: C[I32],
|
||||
^
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue