mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-26 07:22:21 +00:00
Support object literal shorthands
This commit is contained in:
parent
c636eddcd2
commit
10a9f407bf
2
dist/assemblyscript.js
vendored
2
dist/assemblyscript.js
vendored
File diff suppressed because one or more lines are too long
2
dist/assemblyscript.js.map
vendored
2
dist/assemblyscript.js.map
vendored
File diff suppressed because one or more lines are too long
@ -446,9 +446,15 @@ export class ASTBuilder {
|
|||||||
for (let i = 1; i < numElements; ++i) {
|
for (let i = 1; i < numElements; ++i) {
|
||||||
sb.push(",\n");
|
sb.push(",\n");
|
||||||
indent(sb, this.indentLevel);
|
indent(sb, this.indentLevel);
|
||||||
this.visitNode(names[i]);
|
let name = names[i];
|
||||||
sb.push(": ");
|
let value = values[i];
|
||||||
this.visitNode(values[i]);
|
if (name === value) {
|
||||||
|
this.visitNode(name);
|
||||||
|
} else {
|
||||||
|
this.visitNode(name);
|
||||||
|
sb.push(": ");
|
||||||
|
this.visitNode(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
sb.push("\n");
|
sb.push("\n");
|
||||||
indent(sb, --this.indentLevel);
|
indent(sb, --this.indentLevel);
|
||||||
|
@ -3093,17 +3093,20 @@ export class Parser extends DiagnosticEmitter {
|
|||||||
} else {
|
} else {
|
||||||
name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());
|
name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());
|
||||||
}
|
}
|
||||||
if (!tn.skip(Token.COLON)) {
|
names.push(name);
|
||||||
|
if (tn.skip(Token.COLON)) {
|
||||||
|
let value = this.parseExpression(tn, Precedence.COMMA + 1);
|
||||||
|
if (!value) return null;
|
||||||
|
values.push(value);
|
||||||
|
} else if (!name.is(CommonFlags.QUOTED)) {
|
||||||
|
values.push(name);
|
||||||
|
} else {
|
||||||
this.error(
|
this.error(
|
||||||
DiagnosticCode._0_expected,
|
DiagnosticCode._0_expected,
|
||||||
tn.range(), ":"
|
tn.range(), ":"
|
||||||
);
|
);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
let value = this.parseExpression(tn, Precedence.COMMA + 1);
|
|
||||||
if (!value) return null;
|
|
||||||
names.push(name);
|
|
||||||
values.push(value);
|
|
||||||
if (!tn.skip(Token.COMMA)) {
|
if (!tn.skip(Token.COMMA)) {
|
||||||
if (tn.skip(Token.CLOSEBRACE)) {
|
if (tn.skip(Token.CLOSEBRACE)) {
|
||||||
break;
|
break;
|
||||||
|
@ -4,6 +4,8 @@ var obj = {
|
|||||||
"c": false,
|
"c": false,
|
||||||
d: {
|
d: {
|
||||||
a: 123,
|
a: 123,
|
||||||
"b": {}
|
"b": {},
|
||||||
|
c,
|
||||||
|
d: d
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -4,6 +4,8 @@ var obj = {
|
|||||||
"c": false,
|
"c": false,
|
||||||
d: {
|
d: {
|
||||||
a: 123,
|
a: 123,
|
||||||
"b": {}
|
"b": {},
|
||||||
|
c,
|
||||||
|
d: d
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user