From 2fa69c89e64e7431cb00c29783298f3141fd976a Mon Sep 17 00:00:00 2001 From: FineArchs <133759614+FineArchs@users.noreply.github.com> Date: Fri, 26 Apr 2024 18:42:15 +0900 Subject: [PATCH 1/3] Update index.ts --- src/interpreter/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/interpreter/index.ts b/src/interpreter/index.ts index 23df41ea..496e16ff 100644 --- a/src/interpreter/index.ts +++ b/src/interpreter/index.ts @@ -239,7 +239,7 @@ export class Interpreter { for (let i = 0; i < (fn.args ?? []).length; i++) { _args.set(fn.args![i]!, { isMutable: true, - value: args[i]!, + value: args[i] ?? NULL, }); } const fnScope = fn.scope!.createChildScope(_args); From d8df50fcc9de652f7e59a1515af04077371ea0ba Mon Sep 17 00:00:00 2001 From: FineArchs <133759614+FineArchs@users.noreply.github.com> Date: Fri, 26 Apr 2024 18:46:25 +0900 Subject: [PATCH 2/3] add test --- test/index.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/index.ts b/test/index.ts index 290efa73..07e8385c 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1296,6 +1296,16 @@ describe('Function call', () => { } assert.fail(); }); + + test.concurrent('omitted args', async () => { + const res = await exe(` + @f(x, y) { + [x, y] + } + <: f(1) + `); + eq(res, ARR([NUM(1), NULL])); + }); }); describe('Return', () => { From a7178576257cffa032503089d95611ff25a598fb Mon Sep 17 00:00:00 2001 From: FineArchs <133759614+FineArchs@users.noreply.github.com> Date: Fri, 26 Apr 2024 18:54:59 +0900 Subject: [PATCH 3/3] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fabbc0d..e0523285 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ [Read translated version (en)](./translations/en/CHANGELOG.md) # 未リリース分 +- 関数の省略された引数にNULLを格納するように + - 一時的な措置であり、省略可能引数構文の実装と同時に廃止予定です。依存し過ぎないようにしてください # 0.18.0 - `Core:abort`でプログラムを緊急停止できるように