diff --git a/src/com/google/javascript/jscomp/DefaultPassConfig.java b/src/com/google/javascript/jscomp/DefaultPassConfig.java index 4e117a0d736..aebc0a74162 100644 --- a/src/com/google/javascript/jscomp/DefaultPassConfig.java +++ b/src/com/google/javascript/jscomp/DefaultPassConfig.java @@ -183,8 +183,7 @@ protected List getTranspileOnlyPasses() { // can be removed. if (options.needsTranspilationFrom(ES6) || options.needsTranspilationFrom(ES7)) { TranspilationPasses.addEs6EarlyPasses(passes); - TranspilationPasses.addEs6LatePassesBeforeNti(passes); - TranspilationPasses.addEs6LatePassesAfterNti(passes); + TranspilationPasses.addEs6LatePasses(passes); TranspilationPasses.addPostCheckPasses(passes); if (options.rewritePolyfills) { TranspilationPasses.addRewritePolyfillPass(passes); @@ -395,9 +394,10 @@ protected List getChecks() { } if (options.needsTranspilationFrom(ES6)) { - TranspilationPasses.addEs6LatePassesBeforeNti(checks); - if (!options.getTypeCheckEs6Natively()) { - TranspilationPasses.addEs6LatePassesAfterNti(checks); + if (options.getTypeCheckEs6Natively()) { + TranspilationPasses.addEs6PassesBeforeNTI(checks); + } else { + TranspilationPasses.addEs6LatePasses(checks); } } @@ -437,9 +437,7 @@ protected List getChecks() { } if (options.needsTranspilationFrom(ES6)) { - if (options.getTypeCheckEs6Natively()) { - TranspilationPasses.addEs6LatePassesAfterNti(checks); - } + TranspilationPasses.addEs6PassesAfterNTI(checks); checks.add(setFeatureSet(options.getLanguageOut().toFeatureSet())); } } diff --git a/src/com/google/javascript/jscomp/TranspilationPasses.java b/src/com/google/javascript/jscomp/TranspilationPasses.java index 9be549387aa..c4c670e86a4 100644 --- a/src/com/google/javascript/jscomp/TranspilationPasses.java +++ b/src/com/google/javascript/jscomp/TranspilationPasses.java @@ -60,16 +60,27 @@ public static void addEs6EarlyPasses(List passes) { passes.add(es6RewriteArrowFunction); } + /** Adds all the late ES6 transpilation passes, which go after the Dart pass */ + public static void addEs6LatePasses(List passes) { + // TODO(b/64811685): Delete this method and use addEs6PassesBeforeNTI and addEs6PassesAfterNTI. + passes.add(es6ExtractClasses); + passes.add(es6RewriteClass); + passes.add(earlyConvertEs6ToEs3); + passes.add(lateConvertEs6ToEs3); + passes.add(rewriteBlockScopedDeclaration); + passes.add(rewriteGenerators); + } + /** * Adds all the late ES6 transpilation passes, which go after the Dart pass - * and go before TypeChecking. + * and go before TypeChecking * *

Includes ES6 features that are best handled natively by the compiler. * As we convert more passes to handle these features, we will be moving the * transpilation later in the compilation, and eventually only transpiling * when the output is lower than ES6. */ - public static void addEs6LatePassesBeforeNti(List passes) { + public static void addEs6PassesBeforeNTI(List passes) { passes.add(es6ExtractClasses); passes.add(es6RewriteClass); passes.add(earlyConvertEs6ToEs3); @@ -77,7 +88,7 @@ public static void addEs6LatePassesBeforeNti(List passes) { } /** Adds all transpilation passes that runs after NTI */ - public static void addEs6LatePassesAfterNti(List passes) { + public static void addEs6PassesAfterNTI(List passes) { passes.add(lateConvertEs6ToEs3); passes.add(rewriteGenerators); } diff --git a/test/com/google/javascript/jscomp/CompilerTestCase.java b/test/com/google/javascript/jscomp/CompilerTestCase.java index 14ce9479cd0..be31b7be412 100644 --- a/test/com/google/javascript/jscomp/CompilerTestCase.java +++ b/test/com/google/javascript/jscomp/CompilerTestCase.java @@ -1786,8 +1786,7 @@ private static void transpileToEs5(AbstractCompiler compiler, Node externsRoot, TranspilationPasses.addEs2017Passes(factories); TranspilationPasses.addEs2016Passes(factories); TranspilationPasses.addEs6EarlyPasses(factories); - TranspilationPasses.addEs6LatePassesBeforeNti(factories); - TranspilationPasses.addEs6LatePassesAfterNti(factories); + TranspilationPasses.addEs6LatePasses(factories); TranspilationPasses.addRewritePolyfillPass(factories); for (PassFactory factory : factories) { factory.create(compiler).process(externsRoot, codeRoot); diff --git a/test/com/google/javascript/jscomp/NewTypeInferenceTestBase.java b/test/com/google/javascript/jscomp/NewTypeInferenceTestBase.java index 97180d19570..c333a20807e 100644 --- a/test/com/google/javascript/jscomp/NewTypeInferenceTestBase.java +++ b/test/com/google/javascript/jscomp/NewTypeInferenceTestBase.java @@ -254,9 +254,9 @@ private void parseAndTypeCheck(String externs, String js) { TranspilationPasses.addEs2017Passes(passes); TranspilationPasses.addEs2016Passes(passes); TranspilationPasses.addEs6EarlyPasses(passes); - TranspilationPasses.addEs6LatePassesBeforeNti(passes); + TranspilationPasses.addEs6PassesBeforeNTI(passes); if (!compilerOptions.getTypeCheckEs6Natively()) { - TranspilationPasses.addEs6LatePassesAfterNti(passes); + TranspilationPasses.addEs6PassesAfterNTI(passes); TranspilationPasses.addRewritePolyfillPass(passes); } } @@ -264,7 +264,7 @@ private void parseAndTypeCheck(String externs, String js) { passes.add(makePassFactory("NewTypeInference", new NewTypeInference(compiler))); if (compilerOptions.needsTranspilationFrom(FeatureSet.ES6) && compilerOptions.getTypeCheckEs6Natively()) { - TranspilationPasses.addEs6LatePassesAfterNti(passes); + TranspilationPasses.addEs6PassesAfterNTI(passes); TranspilationPasses.addRewritePolyfillPass(passes); } diff --git a/test/com/google/javascript/jscomp/TypeCheckTest.java b/test/com/google/javascript/jscomp/TypeCheckTest.java index 200b82718c9..9395f537196 100644 --- a/test/com/google/javascript/jscomp/TypeCheckTest.java +++ b/test/com/google/javascript/jscomp/TypeCheckTest.java @@ -17997,8 +17997,7 @@ private TypeCheckResult parseAndTypeCheckWithScope(String externs, String js) { TranspilationPasses.addEs2017Passes(passes); TranspilationPasses.addEs2016Passes(passes); TranspilationPasses.addEs6EarlyPasses(passes); - TranspilationPasses.addEs6LatePassesBeforeNti(passes); - TranspilationPasses.addEs6LatePassesAfterNti(passes); + TranspilationPasses.addEs6LatePasses(passes); TranspilationPasses.addRewritePolyfillPass(passes); PhaseOptimizer phaseopt = new PhaseOptimizer(compiler, null); phaseopt.consume(passes);