rollup-plugin-dts icon indicating copy to clipboard operation
rollup-plugin-dts copied to clipboard

[bug] Introduces a variable that cirtularly references itself

Open nicolo-ribaudo opened this issue 9 months ago • 0 comments

Checklist

  • [x] I can reproduce this issue when running this plugin on its own. Other plugins, such as node-resolve are known to cause issues.
  • [x] I am running this plugin on .d.ts files generated by TypeScript. The plugin can consume .ts and even .js files (with allowJs: true), but this is known to cause issues.
  • [x] This issue is not related to rolling up @types. The plugin ignores these by default, unless respectExternal is set. @types can contain hand-crafted code which is known to cause issues.

Code Snipped

// index.d.ts
declare namespace a {
  var fn: typeof import("./other-file.d.ts").fn;
}

export { a };
// other-file.d.ts
export declare function fn(): void;

The .ts files are

// index.ts
import { fn } from "./other-file";
export function a() {}
a.fn = fn;
// other-file.ts
export function fn() {}

Output

declare function fn(): void;

declare function a(): void;
declare namespace a {
    var fn: typeof fn;
}

export { a };

You can see that var fn circularly references itself, rather than referencing the fn function.

nicolo-ribaudo avatar May 08 '24 12:05 nicolo-ribaudo