From f2a452005daaf46614bdb66d00d1a8f0870840f0 Mon Sep 17 00:00:00 2001 From: Joshua Tenner Date: Mon, 13 Apr 2020 17:34:58 -0400 Subject: [PATCH 1/2] export astbuilder --- src/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/index.ts b/src/index.ts index f28bf24f9f..cb191ae928 100644 --- a/src/index.ts +++ b/src/index.ts @@ -287,6 +287,8 @@ export * from "./program"; export * from "./resolver"; export * from "./tokenizer"; export * from "./types"; +// TODO: When vTables are pulled, perhaps it would be better to extend an ASTWalker +export * from "./extra/ast"; import * as util from "./util/index"; export { util }; From da35d21c6eb2bb581f755bf59907d3ab27c4a19e Mon Sep 17 00:00:00 2001 From: Joshua Tenner Date: Mon, 13 Apr 2020 17:51:46 -0400 Subject: [PATCH 2/2] Add some small fixes to make assemblyscript compile itself --- src/extra/ast.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/extra/ast.ts b/src/extra/ast.ts index 02baff920c..5389a86a5a 100644 --- a/src/extra/ast.ts +++ b/src/extra/ast.ts @@ -905,7 +905,7 @@ export class ASTBuilder { sb.push("class"); } var typeParameters = node.typeParameters; - if (typeParameters && typeParameters.length) { + if (typeParameters != null && typeParameters.length > 0) { sb.push("<"); this.visitTypeParameter(typeParameters[0]); for (let i = 1, k = typeParameters.length; i < k; ++i) { @@ -1000,9 +1000,10 @@ export class ASTBuilder { visitEnumValueDeclaration(node: EnumValueDeclaration): void { this.visitIdentifierExpression(node.name); - if (node.initializer) { + var initializer = node.initializer; + if (initializer) { this.sb.push(" = "); - this.visitNode(node.initializer); + this.visitNode(initializer); } } @@ -1028,7 +1029,7 @@ export class ASTBuilder { sb.push("declare "); } var members = node.members; - if (members && members.length) { + if (members != null && members.length > 0) { let numMembers = members.length; sb.push("export {\n"); let indentLevel = ++this.indentLevel; @@ -1328,7 +1329,7 @@ export class ASTBuilder { sb.push("interface "); this.visitIdentifierExpression(node.name); var typeParameters = node.typeParameters; - if (typeParameters && typeParameters.length) { + if (typeParameters != null && typeParameters.length > 0) { sb.push("<"); this.visitTypeParameter(typeParameters[0]); for (let i = 1, k = typeParameters.length; i < k; ++i) {