Skip to content

2.13.0 (2023-04-13)

Compare
Choose a tag to compare
@strager strager released this 14 Apr 00:54
· 1195 commits to master since this release

Downloads

Known issues

Added

  • quick-lint-js now recognizes Deno's global variables, including Deno.
    This suppresses undesired E0057 ("use of undeclared variable") warnings.
    This is controlled by the deno global group.
  • if () {} (without a condition) now reports E0452 ("empty parenthesis
    after control statement"). (Implemented by Yunus.)
  • return x, now reports E0026 ("missing operand for operator").
    (Implemented by Tom Binford.)
  • TypeScript support (still experimental):
    • The satisfies operator is now recognized.
    • The infer operator is now recognized.
    • The in and out keywords for generic parameter variance are now
      recognized.
    • Parameter properties (constructor(public readonly name: string, public age: number)) are now recognized.
    • C<T>=y; now reports E0365 ("TypeScript requires whitespace between
      '>' and '=' here").
    • extends in interface now allows generic arguments, such as in
      interface I extends T<U> {}.
    • extends in interface now allows nested namespaces, such as in
      interface I extends ns1.ns2.ns3.I {}.
  • FreeBSD: quick-lint-js --debug-apps now works. (Implemented by Nico
    Sonack
    .)

Fixed

  • Fixed several false errors:
    • do while (x); while (y); no longer falsely reports E0101 ("missing
      body for do-while loop").
    • { var async; async } no longer falsely reports E0054 ("unexpected
      token").
    • async[x] no longer falsely reports E0054 ("unexpected token").
    • await x ? y : z no longer falsely reports E0311 ("missing parentheses
      around parameter").
    • if (c) async () => {}; else {} no longer falsely reports E0065
      ("'else' has no corresponding 'if'").
    • class A extends await {} no longer falsely reports E0111 ("missing
      body for class").
    • class A extends await() {} no longer falsely reports E0176 ("missing
      arrow operator for arrow function").
    • do if (c) {} else (b); while (d); no longer falsely reports E0103
      ("missing 'while (condition)' for do-while statement").
  • if (c) {} else (b) d; now correctly reports E0027 ("missing semicolon
    after statement").
  • The CLI's --output-format=gnu-like output (default) no longer prints
    terminal escape sequences for "dumb" terminals (where TERM=dumb). (Fixed by
    wagner riffel.)
  • FreeBSD: The quick-lint-js-licenses.txt file is now populated correctly.
  • TypeScript support (still experimental):
    • let x: C<T>=y; no longer falsely reports an error.
    • class A extends B<C> {} no longer falsely reports an error.
    • T extends keyof O ? A : B no longer falsely reports an error.

Changed

  • Cross compiling now requires you to build with
    QUICK_LINT_JS_ENABLE_BUILD_TOOLS for the build machine then with
    QUICK_LINT_JS_USE_BUILD_TOOLS for the target machine. See the
    cross-compiling documentation for details.
  • Code signing certificate has been refreshed. The old certificate expires on
    April 18, 2023 (PDT) and the new certificate expires on April 17, 2024 (PDT).
    The public key is the same between the two certificates:
    7ea531a42cd3e7161b6951f93d83449546e90722 (SHA1).