Skip to content

2.16.0 (2023-09-06)

Compare
Choose a tag to compare
@strager strager released this 07 Sep 07:12
· 582 commits to master since this release

Downloads

Known issues

Added

  • 2 ^ 8 now reports E0710 ("'^' is the XOR operator; to exponentiate, use
    '**' instead"). (Implemented by pedrobl1718.)
  • A missing } in a function parameter list now reports E0161 ("unclosed
    object literal; expected '}'"). (Implemented by Yash Masani.)
  • quick-lint-js now builds on Alpine Linux and other musl-based distributions.
  • TypeScript support (still experimental):
    • Invalid recursive type definitions such as type T = T; now report
      E0384 ("cannot use type directly in its own definition").
    • quick-lint-js now recognizes import types.
    • quick-lint-js now recognizes .d.ts files:
      • CLI: --language=experimental-typescript-definition
      • LSP server: typescriptdefinition; typescript will detect from the URI,
        and typescriptsource prevents detection from the URI
      • Visual Studio Code extension: detected from the file name

Fixed

  • LSP: On macOS, quick-lint-js no longer hangs if a file has too many
    diagnostics.
  • #property in object expressions are now parsed correctly and do not report
    E0155.
  • ({k = defaultValue} = o); no longer incorrectly reports E0253 ("use ':'
    instead of '=' in object literals").
  • Class property initializers no longer incorrectly report E0058 ("variable
    used before declaration"). Example:
    class C { myProperty = f(); } const f = () => {};
  • TypeScript support (still experimental):
    • quick-lint-js no longer falsely reports E0058 ("variable used before
      declaration") for code such as function f<T extends T[]>() {}.
    • Declaring a type alias or an interface inside a declare namespace no
      longer reports E0357 ("'declare namespace' cannot contain statements,
      only declarations").
    • const enum E {} no longer causes E0150.
    • Using a declare-ed variable prior to its declaration is now allowed.
      Example: new C(); declare class C { }
    • Using a variable in a declare class's extends clause prior to the
      variable's declaration is now allowed.
      Example: declare class Derived extends Base { } class Base { }
    • VS Code: The extension now loads when only opening a TypeScript file.
      (Previously, the extension would only load when you opened a JavaScript or
      JSON file.) The quick-lint-js.experimental-typescript setting is still
      required.
    • Vim ALE: JSX syntax is now recognized inside .tsx files.

Changed

  • quick-lint-js no longer depends on the Boost third-party library. The
    QUICK_LINT_JS_USE_BUNDLED_BOOST CMake variable now has no effect.