mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-25 23:12:19 +00:00
Allow trailing commas in import and export statements (#114)
This commit is contained in:
parent
33b10e347b
commit
edf4aaa966
@ -710,7 +710,10 @@ export class ASTBuilder {
|
|||||||
sb.push(";\n");
|
sb.push(";\n");
|
||||||
} else {
|
} else {
|
||||||
let last = sb[sb.length - 1];
|
let last = sb[sb.length - 1];
|
||||||
if (last.length && last.charCodeAt(last.length - 1) == CharCode.CLOSEBRACE) {
|
if (last.length && (
|
||||||
|
last.charCodeAt(last.length - 1) == CharCode.CLOSEBRACE ||
|
||||||
|
last.charCodeAt(last.length - 1) == CharCode.SEMICOLON)
|
||||||
|
) {
|
||||||
sb.push("\n");
|
sb.push("\n");
|
||||||
} else {
|
} else {
|
||||||
sb.push(";\n");
|
sb.push(";\n");
|
||||||
@ -892,11 +895,15 @@ export class ASTBuilder {
|
|||||||
var numMembers = members.length;
|
var numMembers = members.length;
|
||||||
if (numMembers) {
|
if (numMembers) {
|
||||||
sb.push("export {\n");
|
sb.push("export {\n");
|
||||||
|
let indentLevel = ++this.indentLevel;
|
||||||
|
indent(sb, indentLevel);
|
||||||
this.visitExportMember(node.members[0]);
|
this.visitExportMember(node.members[0]);
|
||||||
for (let i = 1; i < numMembers; ++i) {
|
for (let i = 1; i < numMembers; ++i) {
|
||||||
sb.push(",\n");
|
sb.push(",\n");
|
||||||
|
indent(sb, indentLevel);
|
||||||
this.visitExportMember(node.members[i]);
|
this.visitExportMember(node.members[i]);
|
||||||
}
|
}
|
||||||
|
--this.indentLevel;
|
||||||
sb.push("\n}");
|
sb.push("\n}");
|
||||||
} else {
|
} else {
|
||||||
sb.push("export {}");
|
sb.push("export {}");
|
||||||
@ -906,6 +913,7 @@ export class ASTBuilder {
|
|||||||
sb.push(" from ");
|
sb.push(" from ");
|
||||||
this.visitStringLiteralExpression(path);
|
this.visitStringLiteralExpression(path);
|
||||||
}
|
}
|
||||||
|
sb.push(";");
|
||||||
}
|
}
|
||||||
|
|
||||||
visitExpressionStatement(node: ExpressionStatement): void {
|
visitExpressionStatement(node: ExpressionStatement): void {
|
||||||
|
@ -1878,18 +1878,20 @@ export class Parser extends DiagnosticEmitter {
|
|||||||
|
|
||||||
if (tn.skip(Token.OPENBRACE)) {
|
if (tn.skip(Token.OPENBRACE)) {
|
||||||
let members = new Array<ExportMember>();
|
let members = new Array<ExportMember>();
|
||||||
if (!tn.skip(Token.CLOSEBRACE)) {
|
while (!tn.skip(Token.CLOSEBRACE)) {
|
||||||
do {
|
|
||||||
let member = this.parseExportMember(tn);
|
let member = this.parseExportMember(tn);
|
||||||
if (!member) return null;
|
if (!member) return null;
|
||||||
members.push(member);
|
members.push(member);
|
||||||
} while (tn.skip(Token.COMMA));
|
if (!tn.skip(Token.COMMA)) {
|
||||||
if (!tn.skip(Token.CLOSEBRACE)) {
|
if (tn.skip(Token.CLOSEBRACE)) {
|
||||||
this.error(
|
break;
|
||||||
DiagnosticCode._0_expected,
|
} else {
|
||||||
tn.range(), "}"
|
this.error(
|
||||||
);
|
DiagnosticCode._0_expected,
|
||||||
return null;
|
tn.range(), "}"
|
||||||
|
);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let path: StringLiteralExpression | null = null;
|
let path: StringLiteralExpression | null = null;
|
||||||
@ -1971,18 +1973,20 @@ export class Parser extends DiagnosticEmitter {
|
|||||||
var skipFrom = false;
|
var skipFrom = false;
|
||||||
if (tn.skip(Token.OPENBRACE)) {
|
if (tn.skip(Token.OPENBRACE)) {
|
||||||
members = new Array();
|
members = new Array();
|
||||||
if (!tn.skip(Token.CLOSEBRACE)) {
|
while (!tn.skip(Token.CLOSEBRACE)) {
|
||||||
do {
|
let member = this.parseImportDeclaration(tn);
|
||||||
let member = this.parseImportDeclaration(tn);
|
if (!member) return null;
|
||||||
if (!member) return null;
|
members.push(member);
|
||||||
members.push(member);
|
if (!tn.skip(Token.COMMA)) {
|
||||||
} while (tn.skip(Token.COMMA));
|
if (tn.skip(Token.CLOSEBRACE)) {
|
||||||
if (!tn.skip(Token.CLOSEBRACE)) {
|
break;
|
||||||
this.error(
|
} else {
|
||||||
DiagnosticCode._0_expected,
|
this.error(
|
||||||
tn.range(), "}"
|
DiagnosticCode._0_expected,
|
||||||
);
|
tn.range(), "}"
|
||||||
return null;
|
);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (tn.skip(Token.ASTERISK)) {
|
} else if (tn.skip(Token.ASTERISK)) {
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
import {
|
||||||
|
a,
|
||||||
|
b,
|
||||||
|
} from "c";
|
||||||
|
|
||||||
enum Foo {
|
enum Foo {
|
||||||
A,
|
A,
|
||||||
B,
|
B,
|
||||||
@ -31,3 +36,8 @@ export function compute(): i32 {
|
|||||||
2,
|
2,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
a,
|
||||||
|
b,
|
||||||
|
};
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
import {
|
||||||
|
a,
|
||||||
|
b
|
||||||
|
} from "c";
|
||||||
enum Foo {
|
enum Foo {
|
||||||
A,
|
A,
|
||||||
B
|
B
|
||||||
@ -11,3 +15,7 @@ export function compute(): i32 {
|
|||||||
parameterized<i8, i32>(0, 0);
|
parameterized<i8, i32>(0, 0);
|
||||||
return add(1, 2);
|
return add(1, 2);
|
||||||
}
|
}
|
||||||
|
export {
|
||||||
|
a,
|
||||||
|
b
|
||||||
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user