From b4fc2e09d01561f0e372286b26ed4a2966a3d862 Mon Sep 17 00:00:00 2001 From: uzmoi Date: Sun, 25 Aug 2024 00:23:27 +0900 Subject: [PATCH 1/3] fix metadata type --- etc/aiscript.api.md | 2 +- src/interpreter/index.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/etc/aiscript.api.md b/etc/aiscript.api.md index 17c43207..2650bb98 100644 --- a/etc/aiscript.api.md +++ b/etc/aiscript.api.md @@ -395,7 +395,7 @@ export class Interpreter { // (undocumented) abort(): void; // (undocumented) - static collectMetadata(script?: Ast.Node[]): Map | undefined; + static collectMetadata(script?: Ast.Node[]): Map | undefined; // (undocumented) exec(script?: Ast.Node[]): Promise; execFn(fn: VFn, args: Value[]): Promise; diff --git a/src/interpreter/index.ts b/src/interpreter/index.ts index 41cca0ef..c05cdbc5 100644 --- a/src/interpreter/index.ts +++ b/src/interpreter/index.ts @@ -112,7 +112,7 @@ export class Interpreter { } @autobind - public static collectMetadata(script?: Ast.Node[]): Map | undefined { + public static collectMetadata(script?: Ast.Node[]): Map | undefined { if (script == null || script.length === 0) return; function nodeToJs(node: Ast.Node): JsValue { @@ -134,7 +134,7 @@ export class Interpreter { } } - const meta = new Map(); + const meta = new Map(); for (const node of script) { switch (node.type) { From 6c831f943d46024f38f69c9e8b93d2cd47a7132a Mon Sep 17 00:00:00 2001 From: uzmoi Date: Sun, 25 Aug 2024 00:25:03 +0900 Subject: [PATCH 2/3] refactor type --- src/interpreter/index.ts | 2 +- src/interpreter/util.ts | 2 +- src/parser/syntaxes/expressions.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/interpreter/index.ts b/src/interpreter/index.ts index c05cdbc5..2eb6cc53 100644 --- a/src/interpreter/index.ts +++ b/src/interpreter/index.ts @@ -446,7 +446,7 @@ export class Interpreter { case 'arr': return ARR(await Promise.all(node.value.map(item => this._eval(item, scope)))); case 'obj': { - const obj = new Map() as Map; + const obj = new Map(); for (const k of node.value.keys()) { obj.set(k, await this._eval(node.value.get(k)!, scope)); } diff --git a/src/interpreter/util.ts b/src/interpreter/util.ts index 13fda68e..303eb334 100644 --- a/src/interpreter/util.ts +++ b/src/interpreter/util.ts @@ -143,7 +143,7 @@ export function jsToVal(val: unknown): Value { if (typeof val === 'number') return NUM(val); if (Array.isArray(val)) return ARR(val.map(item => jsToVal(item))); if (typeof val === 'object') { - const obj = new Map(); + const obj: VObj['value'] = new Map(); for (const [k, v] of Object.entries(val)) { obj.set(k, jsToVal(v)); } diff --git a/src/parser/syntaxes/expressions.ts b/src/parser/syntaxes/expressions.ts index 2373c04f..342644ab 100644 --- a/src/parser/syntaxes/expressions.ts +++ b/src/parser/syntaxes/expressions.ts @@ -566,7 +566,7 @@ function parseObject(s: ITokenStream, isStatic: boolean): Ast.Obj { s.next(); } - const map = new Map(); + const map = new Map(); while (!s.is(TokenKind.CloseBrace)) { s.expect(TokenKind.Identifier); const k = s.getTokenValue(); From a7aa1e9fc6c884ec0ca50c03b19dbea9720b706e Mon Sep 17 00:00:00 2001 From: uzmoi Date: Sun, 25 Aug 2024 00:26:11 +0900 Subject: [PATCH 3/3] refactor --- src/interpreter/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/interpreter/index.ts b/src/interpreter/index.ts index 2eb6cc53..c178ed5a 100644 --- a/src/interpreter/index.ts +++ b/src/interpreter/index.ts @@ -447,8 +447,8 @@ export class Interpreter { case 'obj': { const obj = new Map(); - for (const k of node.value.keys()) { - obj.set(k, await this._eval(node.value.get(k)!, scope)); + for (const [key, value] of node.value) { + obj.set(key, await this._eval(value, scope)); } return OBJ(obj); }