Skip to content

Typescript namespaces lead to ReferenceError #11514

@mischnic

Description

@mischnic

Describe the bug

Coming from vercel/next.js#89136

Input code

export namespace Test {
    export const a = 1;
}

export namespace Test {
    export const b = a + 1;
}

Config

{
  "jsc": {
    "parser": {
      "syntax": "typescript",
      "tsx": false
    },
    "minify": {
      "compress": false,
      "mangle": false
    }
  },
  "module": {
    "type": "es6"
  },
  "minify": false,
  "isModule": true,
  "env": {
    "targets": "Safari 10"
  }
}

Link to the code that reproduces this issue

https://play.swc.rs/?version=1.15.11&code=H4sIAAAAAAAAA0utKMgvKlHIS8xNLS5ITE5VCEktLlGo5lIAglSIXHJ%2BHlAoUcFWwdCaq5aLK5VYLUlALYkK2mBtAOYCn9toAAAA&config=H4sIAAAAAAAAA1WOMQ7CMAxF95wi8swACwN3YOIEVnCroCaN7BQRVb07SduEsvn%2Fbz%2F%2FWWkNLzFw03MeswjIQtx0diT5iJ%2FsQEyBxLANEU41jVKiDgeh1Vq2BJz1tktHjhldYBKp6w3h0PcD%2FVPUTgI3Pqc13PuVDqULyRV%2BS%2FVZA4OVe72MPG0e%2BfcBhNxTLG3ggR2y1ZfzSlTLF2pa2cwWAQAA

SWC Info output

No response

Expected behavior

compare with
Babel: https://babeljs.io/repl#?config_lz=N4IgZglgNgpgdgQwLYxALhAJxgBygOgBcBnEAGhB22JhPQG16RCBPHGYgY0wh0PNAIoUAPYB3ACIxOUBNgBiEGFAAmpNIUwBXGBSGixAOWQccCTh3SadAXwC6disRFbMFgCptUGJCJVbYEBsgA&code_lz=KYDwDg9gTgLgBAOwIYFtgGcxIMbDgFQ3gG8AoOCuUSWObCBdeJOAXjgEYBuUgX1NLVo8ZGkw48hJnDKUq4YXQbSARmzgsA1Jx68gA&version=7.28.6

and tsc: https://www.typescriptlang.org/play/?#code/KYDwDg9gTgLgBAOwIYFtgGcxIMbDgFQ3gG8AoOCuUSWObCBdeJOAXjgEYBuUgX1NLVo8ZGkw48hJnDKUq4YXQbSARmzgsA1Jx68gA

Actual behavior

(function(Test) {
    Test.a = 1;
})(Test || (Test = {}));
(function(Test) {
    Test.b = a + 1; // undeclared variable
})(Test || (Test = {}));
export var Test;

Version

1.15.11

Additional context

No response

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions