diff --git a/integration/avoid-import-conflicts-types-only/parameters.txt b/integration/avoid-import-conflicts-types-only/parameters.txt new file mode 100644 index 000000000..456fdfbd2 --- /dev/null +++ b/integration/avoid-import-conflicts-types-only/parameters.txt @@ -0,0 +1 @@ +outputJsonMethods=false,outputEncodeMethods=false,outputClientImpl=false,nestJs=false diff --git a/integration/avoid-import-conflicts-types-only/simple-test.ts b/integration/avoid-import-conflicts-types-only/simple-test.ts new file mode 100644 index 000000000..328963459 --- /dev/null +++ b/integration/avoid-import-conflicts-types-only/simple-test.ts @@ -0,0 +1,13 @@ +import { Simple } from './simple'; + +describe('Simple', () => { + it('type checking works correctly', () => { + const simple: Simple = { + name: 'foo', + otherSimple: { + simple2Name: 'bar', + simple2Age: 1, + }, + } + }); +}) diff --git a/integration/avoid-import-conflicts-types-only/simple.bin b/integration/avoid-import-conflicts-types-only/simple.bin new file mode 100644 index 000000000..80f7ad10d Binary files /dev/null and b/integration/avoid-import-conflicts-types-only/simple.bin differ diff --git a/integration/avoid-import-conflicts-types-only/simple.proto b/integration/avoid-import-conflicts-types-only/simple.proto new file mode 100644 index 000000000..90c76b693 --- /dev/null +++ b/integration/avoid-import-conflicts-types-only/simple.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; +package simple; +import "simple2.proto"; + +message Simple { + string name = 1; + simple2.Simple otherSimple = 2; +} diff --git a/integration/avoid-import-conflicts-types-only/simple.ts b/integration/avoid-import-conflicts-types-only/simple.ts new file mode 100644 index 000000000..c8d73d508 --- /dev/null +++ b/integration/avoid-import-conflicts-types-only/simple.ts @@ -0,0 +1,9 @@ +/* eslint-disable */ +import { Simple as Simple1 } from './simple2'; + +export const protobufPackage = 'simple'; + +export interface Simple { + name: string; + otherSimple: Simple1 | undefined; +} diff --git a/integration/avoid-import-conflicts-types-only/simple2.bin b/integration/avoid-import-conflicts-types-only/simple2.bin new file mode 100644 index 000000000..3805b7bbf Binary files /dev/null and b/integration/avoid-import-conflicts-types-only/simple2.bin differ diff --git a/integration/avoid-import-conflicts-types-only/simple2.proto b/integration/avoid-import-conflicts-types-only/simple2.proto new file mode 100644 index 000000000..7eb16d390 --- /dev/null +++ b/integration/avoid-import-conflicts-types-only/simple2.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; +package simple2; + +message Simple { + string simple2Name = 1; + int32 simple2Age = 2; +} + diff --git a/integration/avoid-import-conflicts-types-only/simple2.ts b/integration/avoid-import-conflicts-types-only/simple2.ts new file mode 100644 index 000000000..d76e0601e --- /dev/null +++ b/integration/avoid-import-conflicts-types-only/simple2.ts @@ -0,0 +1,7 @@ +/* eslint-disable */ +export const protobufPackage = 'simple2'; + +export interface Simple { + simple2Name: string; + simple2Age: number; +} diff --git a/src/main.ts b/src/main.ts index 9495a6a50..7c307221b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -498,7 +498,8 @@ function generateInterfaceDeclaration( const chunks: Code[] = []; maybeAddComment(sourceInfo, chunks, messageDesc.options?.deprecated); - chunks.push(code`export interface ${fullName} {`); + // interface name should be defined to avoid import collisions + chunks.push(code`export interface ${def(fullName)} {`); if (ctx.options.outputTypeRegistry) { chunks.push(code`$type: '${fullTypeName}',`);