diff --git a/src/com/google/javascript/jscomp/ConstCheck.java b/src/com/google/javascript/jscomp/ConstCheck.java index 3e3dab66421..2e76f8725c7 100644 --- a/src/com/google/javascript/jscomp/ConstCheck.java +++ b/src/com/google/javascript/jscomp/ConstCheck.java @@ -16,7 +16,6 @@ package com.google.javascript.jscomp; -import com.google.common.base.Preconditions; import com.google.javascript.jscomp.NodeTraversal.AbstractPostOrderCallback; import com.google.javascript.rhino.JSDocInfo; import com.google.javascript.rhino.Node; @@ -31,6 +30,8 @@ * XX++; // error! * */ +// TODO(tbreisacher): Consider merging this with CheckAccessControls so that all +// const-related checks are in the same place. class ConstCheck extends AbstractPostOrderCallback implements CompilerPass { @@ -53,7 +54,6 @@ public ConstCheck(AbstractCompiler compiler) { @Override public void process(Node externs, Node root) { - Preconditions.checkState(compiler.getLifeCycleStage().isNormalized()); NodeTraversal.traverseRootsEs6(compiler, this, externs, root); } diff --git a/src/com/google/javascript/jscomp/DefaultPassConfig.java b/src/com/google/javascript/jscomp/DefaultPassConfig.java index ccd485a0114..e60ca49c090 100644 --- a/src/com/google/javascript/jscomp/DefaultPassConfig.java +++ b/src/com/google/javascript/jscomp/DefaultPassConfig.java @@ -412,6 +412,8 @@ protected List getChecks() { checks.add(checkAccessControls); } + checks.add(checkConsts); + // Analyzer checks must be run after typechecking. if (options.enables(DiagnosticGroups.ANALYZER_CHECKS)) { checks.add(analyzerChecks); @@ -602,12 +604,6 @@ protected List getOptimizations() { passes.add(chainCalls); } - // Constant checking must be done after property collapsing because - // property collapsing can introduce new constants (e.g. enum values). - // TODO(johnlenz): make checkConsts namespace aware so it can be run - // as during the checks phase. - passes.add(checkConsts); - // Detects whether invocations of the method goog.string.Const.from are done // with an argument which is a string literal. passes.add(checkConstParams); diff --git a/test/com/google/javascript/jscomp/IntegrationTest.java b/test/com/google/javascript/jscomp/IntegrationTest.java index 21e22141504..da082a2bfc6 100644 --- a/test/com/google/javascript/jscomp/IntegrationTest.java +++ b/test/com/google/javascript/jscomp/IntegrationTest.java @@ -1282,23 +1282,6 @@ public void testProvidedNamespaceIsConst() { ConstCheck.CONST_REASSIGNED_VALUE_ERROR); } - public void testProvidedNamespaceIsConst2() { - CompilerOptions options = createCompilerOptions(); - options.setClosurePass(true); - options.setInlineConstantVars(true); - options.setCollapseProperties(true); - test( - options, - LINE_JOINER.join( - "var goog = {};", - "goog.provide('foo.bar');", - "function f() { foo.bar = {};}"), - LINE_JOINER.join( - "var foo$bar = {};", - "function f() { foo$bar = {}; }"), - ConstCheck.CONST_REASSIGNED_VALUE_ERROR); - } - public void testProvidedNamespaceIsConst3() { CompilerOptions options = createCompilerOptions(); options.setClosurePass(true); @@ -1338,10 +1321,10 @@ public void testProvidedNamespaceIsConst5() { "var foo = {}; foo = {}; foo.Bar = {};"); } - public void testProcessDefinesAlwaysOn() { + public void testAtDefineReassigned() { test(createCompilerOptions(), "/** @define {boolean} */ var HI = true; HI = false;", - "var HI = false;false;"); + ConstCheck.CONST_REASSIGNED_VALUE_ERROR); } public void testProcessDefinesAdditionalReplacements() {