Closure compiler v20220601 released

271 views
Skip to first unread message

Matthias Hausner

unread,
Jun 3, 2022, 5:13:06 PM6/3/22
to Closure Compiler Discuss
Downloads:
Maven: http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22closure-compiler%22
NPM: https://www.npmjs.com/package/google-closure-compiler

Release Notes:
https://github.com/google/closure-compiler/wiki/Releases

June 1st, 2022 (v20220601)

*   Correct useless label optimization when a label is nested within a label.
    Fixes github issue #3946.
*   Compilation error on duplicate module and provide names.
*   Fix crash with label'd do/while blocks.
*   Support `@provideAlreadyProvided` during typechecking.
    Here we are doing a couple of things:
    *   avoid creating a default namespace object type when a `goog.provide` is
        annotated with `@provideAlreadyProvided`.
    *   add some logic find the type of the implicitly assigned namespace by
        looking up the object from the parent namespace object.
    The second is valid as `@provideAlreadyProvided` is only useful if the
    parent namespace is assigned a value that contains the child namespace.
*   Add externs for maps api v3.49.
*   Add a flag --emit_async_functions_with_zonejs to relax the restriction on
    disallowing --language_out=ES_2017 together with Zone.js
*   Fix cases of incorrect constant folding for the coalesce operator `??`
*   Move "public class fields" feature down from ES_NEXT to UNSTABLE.
    Since ES_NEXT is supposed to be for features that are fully supported, and
    transpilation of public fields is not yet fully implemented, by our
    accounting it should only be considered UNSTABLE and not yet ES_NEXT. We do
    intend to add support for transpilation and will move the feature back to
    ES_NEXT when we do.
*   Fix false positive "missing @const annotation" lint when using destructuring
    assigns.
*   Fix potential misoptimization of variables/properties in a logical
    assignment. Some compiler passes failed to realize that such assignments
    could evaluate to a mutable value and so would delete code incorrect.
*   Set --angular_pass to true by default.
*   Refactor pass building so that there is a central way to check conditions
    for the pass. This is step toward making it easier to configure modes for
    the passes (transpile only, renaming only, etc).
*   Made typechecker change to fix edge cases where `@implements {I<SomeType>}`
    was treated as `@implements {I<?}`
*   Fix handling of tagged template literals side-effect detection to consider
    contained expressions.
*   Improves performance and memory usage of ControlFlowAnalysis.
*   Fix an issue when where source text could be retained in memory throughout
    the compilation process.
*   Fix an issue when resolving non-trivial unions when complex types, where the
    check for existence of template types would be n^2.
Reply all
Reply to author
Forward
0 new messages