diff --git a/src/generate-output.ts b/src/generate-output.ts index f1682b5..14a28c8 100644 --- a/src/generate-output.ts +++ b/src/generate-output.ts @@ -231,6 +231,13 @@ function getStatementText(statement: ts.Statement, includeSortingValue: boolean, return node; } + if (ts.isIdentifier(node) && (node.parent as ts.NamedDeclaration).name === node && ( + ts.isInterfaceDeclaration(node.parent) || + ts.isClassDeclaration(node.parent) + )) { + return node; + } + return recreateEntityName(node, helpers); } } diff --git a/tests/e2e/test-cases/names-collision-with-globals/config.ts b/tests/e2e/test-cases/names-collision-with-globals/config.ts index 7f3c5de..5bdb2bc 100644 --- a/tests/e2e/test-cases/names-collision-with-globals/config.ts +++ b/tests/e2e/test-cases/names-collision-with-globals/config.ts @@ -1,6 +1,9 @@ import { TestCaseConfig } from '../test-case-config'; const config: TestCaseConfig = { + output: { + inlineDeclareExternals: true + } }; export = config; diff --git a/tests/e2e/test-cases/names-collision-with-globals/input.ts b/tests/e2e/test-cases/names-collision-with-globals/input.ts index 7fd5f8e..4597a42 100644 --- a/tests/e2e/test-cases/names-collision-with-globals/input.ts +++ b/tests/e2e/test-cases/names-collision-with-globals/input.ts @@ -1,4 +1,5 @@ import { Date as LocalDate, Promise as LocalPromise } from './local-types'; +import { BaseEncodingOptions as Alias1, BigIntOptions as Alias2 } from 'node:fs'; export interface Int { localD: LocalDate; @@ -7,3 +8,16 @@ export interface Int { localP: LocalPromise; globalP: Promise; } + +export interface Interface1 extends Alias1 {} +export interface Interface2 extends Alias2 {} + +declare module 'node:fs' { + interface BaseEncodingOptions { + newField: string; + } + + class BigIntOptions { + newField: string; + } +} diff --git a/tests/e2e/test-cases/names-collision-with-globals/output.d.ts b/tests/e2e/test-cases/names-collision-with-globals/output.d.ts index c789c1b..315dcec 100644 --- a/tests/e2e/test-cases/names-collision-with-globals/output.d.ts +++ b/tests/e2e/test-cases/names-collision-with-globals/output.d.ts @@ -1,3 +1,5 @@ +import { BaseEncodingOptions as Alias1, BigIntOptions as Alias2 } from 'node:fs'; + interface Promise$3 { } interface Date$2 { @@ -8,5 +10,17 @@ export interface Int { localP: Promise$3; globalP: Promise; } +export interface Interface1 extends Alias1 { +} +export interface Interface2 extends Alias2 { +} +declare module "node:fs" { + interface BaseEncodingOptions { + newField: string; + } + class BigIntOptions { + newField: string; + } +} export {}; diff --git a/tests/e2e/test-cases/names-collision-with-globals/tsconfig.json b/tests/e2e/test-cases/names-collision-with-globals/tsconfig.json new file mode 100644 index 0000000..83e602c --- /dev/null +++ b/tests/e2e/test-cases/names-collision-with-globals/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "types": ["node"] + } +}