Skip to content

Commit 9baa36f

Browse files
committed
Added checks for getters and setters in class definitions.
------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=70416871
1 parent 3bac804 commit 9baa36f

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

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

+7-2
Original file line numberDiff line numberDiff line change
@@ -367,8 +367,13 @@ private void validateClassMembers(Node n) {
367367
}
368368

369369
private void validateClassMember(Node n) {
370-
validateNodeType(Token.MEMBER_DEF, n);
371-
validateChildCount(n, Token.arity(Token.MEMBER_DEF));
370+
if (n.getType() != Token.MEMBER_DEF
371+
&& n.getType() != Token.GETTER_DEF
372+
&& n.getType() != Token.SETTER_DEF) {
373+
violation("Class contained member which was not a MEMBER_DEF, GETTER_DEF, or SETTER_DEF",
374+
n);
375+
}
376+
validateChildCount(n, Token.arity(n.getType()));
372377
validateFunctionExpression(n.getFirstChild());
373378
}
374379

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

+11
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ public boolean shouldTraverse(NodeTraversal t, Node n, Node parent) {
119119
// Need to check for super references before they get rewritten.
120120
checkClassSuperReferences(n);
121121
break;
122+
case Token.CLASS_MEMBERS:
123+
checkMemberDefs(n);
124+
break;
122125
case Token.ARRAY_COMP:
123126
case Token.ARRAY_PATTERN:
124127
case Token.OBJECT_PATTERN:
@@ -238,6 +241,14 @@ private void checkClassReassignment(Node clazz) {
238241
NodeTraversal.traverse(compiler, enclosingFunction, checkAssigns);
239242
}
240243

244+
public void checkMemberDefs(Node members) {
245+
for (Node member : members.children()) {
246+
if (member.isGetterDef() || member.isSetterDef()) {
247+
cannotConvert(member, "Cannot convert getters or setters in class definitions.");
248+
}
249+
}
250+
}
251+
241252
private void visitSuper(Node node, Node parent) {
242253
Node enclosing = parent;
243254
Node potentialCallee = node;

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

+6
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,12 @@ public void testInvalidClassUse() {
783783
), null, null, TypeCheck.CONFLICTING_SHAPE_TYPE);
784784
}
785785

786+
public void testClassGetterSetter() {
787+
test("class C { get value() {} }", null, Es6ToEs3Converter.CANNOT_CONVERT);
788+
789+
test("class C { set value(v) {} }", null, Es6ToEs3Converter.CANNOT_CONVERT);
790+
}
791+
786792
public void testArrowFunction() {
787793
test("var f = x => { return x+1; };",
788794
"var f = function(x) { return x+1; };");

0 commit comments

Comments
 (0)