Search in sources :

Example 21 with TestExternsBuilder

use of com.google.javascript.jscomp.testing.TestExternsBuilder in project closure-compiler by google.

the class AdvancedOptimizationsIntegrationTest method testBug123583793.

@Test
public void testBug123583793() {
    // Avoid including the transpilation library
    useNoninjectingCompiler = true;
    CompilerOptions options = createCompilerOptions();
    CompilationLevel.ADVANCED_OPTIMIZATIONS.setOptionsForCompilationLevel(options);
    CompilationLevel.ADVANCED_OPTIMIZATIONS.setTypeBasedOptimizationOptions(options);
    options.setLanguageIn(LanguageMode.ECMASCRIPT_NEXT);
    options.setLanguageOut(LanguageMode.ECMASCRIPT5);
    options.setRewritePolyfills(true);
    options.setPrettyPrint(true);
    externs = ImmutableList.of(new TestExternsBuilder().addObject().addConsole().buildExternsFile("externs.js"));
    test(options, lines("function foo() {", "  const {a, ...rest} = {a: 1, b: 2, c: 3};", "  return {a, rest};", "};", "console.log(foo());", ""), lines("var a = console,", "    b = a.log,", "    c = {a:1, b:2, c:3},", "    d = Object.assign({}, c),", "    e = c.a,", "    f = (delete d.a, d);", "b.call(a, {a:e, d:f});", ""));
    assertThat(((NoninjectingCompiler) lastCompiler).getInjected()).contains("es6/object/assign");
}
Also used : NoninjectingCompiler(com.google.javascript.jscomp.testing.NoninjectingCompiler) CompilerOptions(com.google.javascript.jscomp.CompilerOptions) TestExternsBuilder(com.google.javascript.jscomp.testing.TestExternsBuilder) Test(org.junit.Test)

Example 22 with TestExternsBuilder

use of com.google.javascript.jscomp.testing.TestExternsBuilder in project closure-compiler by google.

the class AdvancedOptimizationsIntegrationTest method testUnusedTaggedTemplateLiteralGetsRemoved.

@Test
public void testUnusedTaggedTemplateLiteralGetsRemoved() {
    CompilerOptions options = createCompilerOptions();
    CompilationLevel.ADVANCED_OPTIMIZATIONS.setOptionsForCompilationLevel(options);
    options.setLanguageOut(LanguageMode.ECMASCRIPT5);
    options.setPropertyRenaming(PropertyRenamingPolicy.OFF);
    options.setVariableRenaming(VariableRenamingPolicy.OFF);
    options.setPrettyPrint(true);
    externs = ImmutableList.of(new TestExternsBuilder().addConsole().addArray().addExtra("var goog;", "", "/**", " * @param {string} msg", " * @return {string}", " * @nosideeffects", " */", "goog.getMsg = function(msg) {};", "", "/**", " * @param {...*} template_args", " * @return {string}", " */", "function $localize(template_args){}", "/**", " * @constructor", " * @extends {Array<string>}", " */", "var ITemplateArray = function() {};", "").buildExternsFile("externs.js"));
    test(options, lines("var i18n_7;", "var ngI18nClosureMode = true;", "if (ngI18nClosureMode) {", "    /**", "     * @desc Some message", "     */", "    const MSG_A = goog.getMsg(\"test\");", "    i18n_7 = MSG_A;", "}", "else {", "    i18n_7 = $localize `...`;", "}", "console.log(i18n_7);", ""), lines(// Tagged template literal was correctly removed.
    "console.log(goog.getMsg('test'));"));
}
Also used : CompilerOptions(com.google.javascript.jscomp.CompilerOptions) TestExternsBuilder(com.google.javascript.jscomp.testing.TestExternsBuilder) Test(org.junit.Test)

Example 23 with TestExternsBuilder

use of com.google.javascript.jscomp.testing.TestExternsBuilder in project closure-compiler by google.

the class AdvancedOptimizationsIntegrationTest method testFunctionThatAcceptsAndReturnsBigInt.

@Test
public void testFunctionThatAcceptsAndReturnsBigInt() {
    CompilerOptions options = createCompilerOptions();
    CompilationLevel.ADVANCED_OPTIMIZATIONS.setOptionsForCompilationLevel(options);
    options.setLanguage(LanguageMode.ECMASCRIPT_NEXT);
    externs = ImmutableList.of(new TestExternsBuilder().addBigInt().addConsole().buildExternsFile("externs.js"));
    test(options, lines("/**", " * @param {bigint} value", " * @return {bigint}", " */", "function bigintTimes3(value){", "  return value * 3n;", "}", "console.log(bigintTimes3(5n));"), "console.log(15n);");
}
Also used : CompilerOptions(com.google.javascript.jscomp.CompilerOptions) TestExternsBuilder(com.google.javascript.jscomp.testing.TestExternsBuilder) Test(org.junit.Test)

Example 24 with TestExternsBuilder

use of com.google.javascript.jscomp.testing.TestExternsBuilder in project closure-compiler by google.

the class AdvancedOptimizationsIntegrationTest method testRewritePolyfills_noAddedCodeForUnusedPolyfill.

@Test
public void testRewritePolyfills_noAddedCodeForUnusedPolyfill() {
    CompilerOptions options = createCompilerOptions();
    CompilationLevel.ADVANCED_OPTIMIZATIONS.setOptionsForCompilationLevel(options);
    options.setLanguageIn(LanguageMode.STABLE_IN);
    options.setLanguageOut(LanguageMode.ECMASCRIPT5);
    options.setRewritePolyfills(true);
    options.setGeneratePseudoNames(true);
    externs = ImmutableList.of(SourceFile.fromCode("testExterns.js", new TestExternsBuilder().addArray().addString().addObject().build()));
    test(options, "const unused = 'foo'.startsWith('bar');", "");
}
Also used : CompilerOptions(com.google.javascript.jscomp.CompilerOptions) TestExternsBuilder(com.google.javascript.jscomp.testing.TestExternsBuilder) Test(org.junit.Test)

Example 25 with TestExternsBuilder

use of com.google.javascript.jscomp.testing.TestExternsBuilder in project closure-compiler by google.

the class ES2021IntegrationTest method logicalAsssignmentsSimpleCastType_supportedOnlyWithoutTranspilation.

@Test
public void logicalAsssignmentsSimpleCastType_supportedOnlyWithoutTranspilation() {
    CompilerOptions options = optimizedWithoutTranspilationCompilerOptions();
    externs = ImmutableList.of(new TestExternsBuilder().addExtra("let x").buildExternsFile("externs"));
    test(options, "/** @type {?} */ (x) ||= 's'", "x ||= 's'");
}
Also used : CompilerOptions(com.google.javascript.jscomp.CompilerOptions) TestExternsBuilder(com.google.javascript.jscomp.testing.TestExternsBuilder) Test(org.junit.Test)

Aggregations

TestExternsBuilder (com.google.javascript.jscomp.testing.TestExternsBuilder)107 Test (org.junit.Test)106 CompilerOptions (com.google.javascript.jscomp.CompilerOptions)58 Node (com.google.javascript.rhino.Node)17 NodeSubject.assertNode (com.google.javascript.rhino.testing.NodeSubject.assertNode)17 Compiler (com.google.javascript.jscomp.Compiler)8 SourceFile (com.google.javascript.jscomp.SourceFile)7 Color (com.google.javascript.jscomp.colors.Color)5 ArrayList (java.util.ArrayList)3 HashMap (java.util.HashMap)3 CodeSubTree (com.google.javascript.jscomp.testing.CodeSubTree)2 ImmutableList (com.google.common.collect.ImmutableList)1 NoninjectingCompiler (com.google.javascript.jscomp.testing.NoninjectingCompiler)1 ClosureReverseAbstractInterpreter (com.google.javascript.jscomp.type.ClosureReverseAbstractInterpreter)1 SemanticReverseAbstractInterpreter (com.google.javascript.jscomp.type.SemanticReverseAbstractInterpreter)1 FunctionType (com.google.javascript.rhino.jstype.FunctionType)1 File (java.io.File)1 Path (java.nio.file.Path)1 HashSet (java.util.HashSet)1