Skip to content

Commit 10a9f40

Browse files
committed
Support object literal shorthands
1 parent c636edd commit 10a9f40

File tree

6 files changed

+25
-12
lines changed

6 files changed

+25
-12
lines changed

dist/assemblyscript.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/assemblyscript.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/extra/ast.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -446,9 +446,15 @@ export class ASTBuilder {
446446
for (let i = 1; i < numElements; ++i) {
447447
sb.push(",\n");
448448
indent(sb, this.indentLevel);
449-
this.visitNode(names[i]);
450-
sb.push(": ");
451-
this.visitNode(values[i]);
449+
let name = names[i];
450+
let value = values[i];
451+
if (name === value) {
452+
this.visitNode(name);
453+
} else {
454+
this.visitNode(name);
455+
sb.push(": ");
456+
this.visitNode(value);
457+
}
452458
}
453459
sb.push("\n");
454460
indent(sb, --this.indentLevel);

src/parser.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3093,17 +3093,20 @@ export class Parser extends DiagnosticEmitter {
30933093
} else {
30943094
name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());
30953095
}
3096-
if (!tn.skip(Token.COLON)) {
3096+
names.push(name);
3097+
if (tn.skip(Token.COLON)) {
3098+
let value = this.parseExpression(tn, Precedence.COMMA + 1);
3099+
if (!value) return null;
3100+
values.push(value);
3101+
} else if (!name.is(CommonFlags.QUOTED)) {
3102+
values.push(name);
3103+
} else {
30973104
this.error(
30983105
DiagnosticCode._0_expected,
30993106
tn.range(), ":"
31003107
);
31013108
return null;
31023109
}
3103-
let value = this.parseExpression(tn, Precedence.COMMA + 1);
3104-
if (!value) return null;
3105-
names.push(name);
3106-
values.push(value);
31073110
if (!tn.skip(Token.COMMA)) {
31083111
if (tn.skip(Token.CLOSEBRACE)) {
31093112
break;

tests/parser/object-literal.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ var obj = {
44
"c": false,
55
d: {
66
a: 123,
7-
"b": {}
7+
"b": {},
8+
c,
9+
d: d
810
}
911
};

tests/parser/object-literal.ts.fixture.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ var obj = {
44
"c": false,
55
d: {
66
a: 123,
7-
"b": {}
7+
"b": {},
8+
c,
9+
d: d
810
}
911
};

0 commit comments

Comments
 (0)