Skip to content

Commit 0bd93ab

Browse files
authored
refactor: Interpreterのdefineメソッドを同期関数に (#972)
* define関数を削除し、defineSyncをdefineに名前変更 * defineに対するawaitを削除
1 parent eb13dad commit 0bd93ab

1 file changed

Lines changed: 7 additions & 34 deletions

File tree

src/interpreter/index.ts

Lines changed: 7 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ export class Interpreter {
265265
) {
266266
value.name = nsScope.getNsPrefix() + node.dest.name;
267267
}
268-
await this.define(nsScope, node.dest, value, node.mut);
268+
this.define(nsScope, node.dest, value, node.mut);
269269

270270
break;
271271
}
@@ -309,7 +309,7 @@ export class Interpreter {
309309
) {
310310
value.name = nsScope.getNsPrefix() + node.dest.name;
311311
}
312-
this.defineSync(nsScope, node.dest, value, node.mut);
312+
this.define(nsScope, node.dest, value, node.mut);
313313

314314
break;
315315
}
@@ -668,7 +668,7 @@ export class Interpreter {
668668
) {
669669
value.name = node.dest.name;
670670
}
671-
await this.define(scope, node.dest, value, node.mut);
671+
this.define(scope, node.dest, value, node.mut);
672672
return NULL;
673673
}
674674

@@ -1212,7 +1212,7 @@ export class Interpreter {
12121212
) {
12131213
value.name = node.dest.name;
12141214
}
1215-
this.defineSync(scope, node.dest, value, node.mut);
1215+
this.define(scope, node.dest, value, node.mut);
12161216
return NULL;
12171217
}
12181218

@@ -1667,34 +1667,7 @@ export class Interpreter {
16671667
}
16681668

16691669
@autobind
1670-
private async define(scope: Scope, dest: Ast.Expression, value: Value, isMutable: boolean): Promise<void> {
1671-
switch (dest.type) {
1672-
case 'identifier': {
1673-
scope.add(dest.name, { isMutable, value });
1674-
break;
1675-
}
1676-
case 'arr': {
1677-
assertArray(value);
1678-
await Promise.all(dest.value.map(
1679-
(item, index) => this.define(scope, item, value.value[index] ?? NULL, isMutable),
1680-
));
1681-
break;
1682-
}
1683-
case 'obj': {
1684-
assertObject(value);
1685-
await Promise.all([...dest.value].map(
1686-
([key, item]) => this.define(scope, item, value.value.get(key) ?? NULL, isMutable),
1687-
));
1688-
break;
1689-
}
1690-
default: {
1691-
throw new AiScriptRuntimeError('The left-hand side of an definition expression must be a variable.');
1692-
}
1693-
}
1694-
}
1695-
1696-
@autobind
1697-
private defineSync(scope: Scope, dest: Ast.Expression, value: Value, isMutable: boolean): void {
1670+
private define(scope: Scope, dest: Ast.Expression, value: Value, isMutable: boolean): void {
16981671
switch (dest.type) {
16991672
case 'identifier': {
17001673
scope.add(dest.name, { isMutable, value });
@@ -1703,14 +1676,14 @@ export class Interpreter {
17031676
case 'arr': {
17041677
assertArray(value);
17051678
dest.value.map(
1706-
(item, index) => this.defineSync(scope, item, value.value[index] ?? NULL, isMutable),
1679+
(item, index) => this.define(scope, item, value.value[index] ?? NULL, isMutable),
17071680
);
17081681
break;
17091682
}
17101683
case 'obj': {
17111684
assertObject(value);
17121685
[...dest.value].map(
1713-
([key, item]) => this.defineSync(scope, item, value.value.get(key) ?? NULL, isMutable),
1686+
([key, item]) => this.define(scope, item, value.value.get(key) ?? NULL, isMutable),
17141687
);
17151688
break;
17161689
}

0 commit comments

Comments
 (0)