Skip to content

Commit 872f27a

Browse files
Closure Teamcopybara-github
Closure Team
authored andcommitted
Fix RewriteClassMember to skip handling computed property when it is not in a class body.
PiperOrigin-RevId: 615559359
1 parent 0f42d86 commit 872f27a

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

src/com/google/javascript/jscomp/RewriteClassMembers.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,11 @@ public boolean shouldTraverse(NodeTraversal t, Node n, Node parent) {
9696
classStack.peek().recordStaticBlock(n);
9797
break;
9898
case COMPUTED_PROP:
99-
checkState(!classStack.isEmpty());
100-
if (n.getParent().isClassMembers() && NodeUtil.canBeSideEffected(n.getFirstChild())) {
101-
classStack.peek().computedPropMembers.add(n);
99+
if (n.getParent().isClassMembers()) {
100+
checkState(!classStack.isEmpty());
101+
if (NodeUtil.canBeSideEffected(n.getFirstChild())) {
102+
classStack.peek().computedPropMembers.add(n);
103+
}
102104
}
103105
break;
104106
default:

test/com/google/javascript/jscomp/RewriteClassMembersTest.java

+18
Original file line numberDiff line numberDiff line change
@@ -896,6 +896,24 @@ public void testSideEffectsInComputedField() {
896896
" }",
897897
" }",
898898
"}")));
899+
900+
rewriteFieldOrBlockTest(
901+
srcs(
902+
lines(
903+
"x.a = 'b';",
904+
"y = { [x.a]:'aa' };", // computed property not in a class body
905+
"class Baz {",
906+
" z = 1;",
907+
"}")),
908+
expected(
909+
lines(
910+
"x.a = 'b';",
911+
"y = {[x.a]:'aa'};",
912+
"class Baz {",
913+
" constructor() {",
914+
" this.z = 1;",
915+
" }",
916+
"}")));
899917
}
900918

901919
@Test

0 commit comments

Comments
 (0)