diff --git a/src/com/google/javascript/jscomp/TypeCheck.java b/src/com/google/javascript/jscomp/TypeCheck.java index 7376b5a23dd..ed2f9955d21 100644 --- a/src/com/google/javascript/jscomp/TypeCheck.java +++ b/src/com/google/javascript/jscomp/TypeCheck.java @@ -1324,8 +1324,7 @@ private void visitObjectOrClassLiteralKey( // Allow the definition of "constructor" as an unquoted key in class bodies. They will // never be renamed so quoting is unimportant for the ALL_UNQUOTED renaming policy // and the property is not accessed directly. - boolean temp = true; - if (temp || !key.isMemberFunctionDef() + if (!key.isMemberFunctionDef() || !key.getParent().isClassMembers() || !key.getString().equals("constructor")) { report(t, key, ILLEGAL_OBJLIT_KEY, "dict"); diff --git a/test/com/google/javascript/jscomp/TypeCheckNoTranspileTest.java b/test/com/google/javascript/jscomp/TypeCheckNoTranspileTest.java index 19b5b2b704a..e2e703a864c 100644 --- a/test/com/google/javascript/jscomp/TypeCheckNoTranspileTest.java +++ b/test/com/google/javascript/jscomp/TypeCheckNoTranspileTest.java @@ -4024,5 +4024,9 @@ public void testDefaultValueForNestedArrayPatternMustBeIterable() { "required: Iterable")); } + public void testDictClass1() { + testTypes("/** @dict */ var C = class { constructor() {} 'x'(){} };"); + } + // TODO(b/77597706): add tests for missing property warnings on object destructuring string keys } diff --git a/test/com/google/javascript/jscomp/TypeCheckTest.java b/test/com/google/javascript/jscomp/TypeCheckTest.java index a2ecd82350f..290bdef55a2 100644 --- a/test/com/google/javascript/jscomp/TypeCheckTest.java +++ b/test/com/google/javascript/jscomp/TypeCheckTest.java @@ -1199,10 +1199,6 @@ public void testObjLitDef7() { "Illegal key, the object literal is a dict"); } - public void testDictClass1() { - testTypes("var C = /** @dict */ class { constructor() {} 'x'(){} };"); - } - public void testInstanceOfReduction1() { testTypes("/** @constructor */ var T = function() {};\n" + "/** @param {T|string} x\n@return {T} */\n" +