Skip to content

TS namespace containing just declare class incorrectly removed #7676

@nicolo-ribaudo

Description

@nicolo-ribaudo

Describe the bug

TS doesn't remove namespaces that contain declare class, while SWC does

Input code

namespace NS {
  declare class D {}
}

console.log(typeof NS)

Config

{
  "jsc": {
    "parser": {
      "syntax": "typescript",
      "tsx": false
    },
    "target": "es2019",
    "loose": false,
    "minify": {
      "compress": false,
      "mangle": false
    }
  },
  "module": {
    "type": "es6"
  },
  "minify": false,
  "isModule": true
}

Playground link

https://play.swc.rs/?version=1.3.70&code=H4sIAAAAAAAAA8tLzE0tLkhMTlXwC1ao5lJQSElNzkksSlUAksXFCi4K1bVctVxcyfl5xfk5qXo5%2BekaJZUFqflpQPWaXADOIbDEPgAAAA%3D%3D&config=H4sIAAAAAAAAA1VPSQ7CMAy85xWRzxyAAxL8gUdEwa2Csil2JaKqfydpk0Jv9iye8SykhDdpeMi5jGWJKhGmfS8IZc%2FqUxDgHJF0MpHh1FmmSg3KEq7QsjHAKo3I1YV0PV%2FuzQE2BMLuaJgz3gz5P1MHFxMSHYVVqvxo8ZgoWiq48JpWsv1S%2B24NbvAT9bD9MBh6dienCcXyBaIK9Y0XAQAA

Expected behavior

var NS;
(function (NS) {
})(NS || (NS = {}));
console.log(typeof NS);

Actual behavior

console.log(typeof NS);

and at runtime it throws that NS is not declared

Version

1.3.70

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions