From 21c59dd32922007f5647a747aa5020b89f584566 Mon Sep 17 00:00:00 2001 From: ASDAlexander77 Date: Wed, 28 Oct 2026 14:41:49 +0000 Subject: [PATCH] Array: count and rest constructors `new Array(10)` makes ten elements and `new Array(10, 20, 30)` those three, beside `new Array([..])`. Needs the compiler's constructor-overload inference (#715) and optional-parameter overload fit (#716). Co-Authored-By: Claude Opus 5.5 --- src/generics/lib.generics.ts | 16 ++++++++-------- tests/array_constructors_overload.ts | 12 ++++++++++++ 2 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 tests/array_constructors_overload.ts diff --git a/src/generics/lib.generics.ts b/src/generics/lib.generics.ts index 03f5817..00bd499 100644 --- a/src/generics/lib.generics.ts +++ b/src/generics/lib.generics.ts @@ -449,14 +449,14 @@ class Array { constructor(private data: T[] = []) { } - // constructor(count: int = 0) { - // this.data = []; - // this.data.length = count; - // } - - // constructor(...args: T[]) { - // this.data = args; - // } + constructor(count: int = 0) { + this.data = []; + this.data.length = count; + } + + constructor(...args: T[]) { + this.data = args; + } public [index: int]: T; diff --git a/tests/array_constructors_overload.ts b/tests/array_constructors_overload.ts new file mode 100644 index 0000000..0f2e3f5 --- /dev/null +++ b/tests/array_constructors_overload.ts @@ -0,0 +1,12 @@ +function main() { + + const a = new Array(10); + + assert(a.length === 10 && a[0] === 0); + + const b = new Array(10, 20, 30); + + assert(b.length === 3 && b[0] === 10 && b[1] === 20 && b[2] === 30); + + console.log("ALL DONE"); +}