diff --git a/integration/avoid-import-conflicts-types-only/simple-test.ts b/integration/avoid-import-conflicts-types-only/simple-test.ts index 328963459..8d08d5ab5 100644 --- a/integration/avoid-import-conflicts-types-only/simple-test.ts +++ b/integration/avoid-import-conflicts-types-only/simple-test.ts @@ -1,7 +1,8 @@ -import { Simple } from './simple'; +import { Simple, SimpleEnum as LocalSimpleEnum, SimpleEnums } from './simple'; +import { SimpleEnum as ImportSimpleEnum } from './simple2'; describe('Simple', () => { - it('type checking works correctly', () => { + it('type checking works correctly for interfaces', () => { const simple: Simple = { name: 'foo', otherSimple: { @@ -10,4 +11,11 @@ describe('Simple', () => { }, } }); + + it('type checking works correctly for enums', () => { + const simpleEnum: SimpleEnums = { + localEnum: LocalSimpleEnum.LOCAL_BAR, + importEnum: ImportSimpleEnum.IMPORT_FOO, + } + }); }) diff --git a/integration/avoid-import-conflicts-types-only/simple.bin b/integration/avoid-import-conflicts-types-only/simple.bin index 3f79dd4fc..4e88b42bc 100644 Binary files a/integration/avoid-import-conflicts-types-only/simple.bin 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 index 90c76b693..5f6778ff4 100644 --- a/integration/avoid-import-conflicts-types-only/simple.proto +++ b/integration/avoid-import-conflicts-types-only/simple.proto @@ -2,7 +2,20 @@ syntax = "proto3"; package simple; import "simple2.proto"; +enum SimpleEnum { + LOCAL_DEFAULT = 0; + LOCAL_FOO = 1; + LOCAL_BAR = 2; +} + message Simple { string name = 1; simple2.Simple otherSimple = 2; } + +message SimpleEnums { + SimpleEnum local_enum = 1; + simple2.SimpleEnum import_enum = 2; +} + + diff --git a/integration/avoid-import-conflicts-types-only/simple.ts b/integration/avoid-import-conflicts-types-only/simple.ts index c8d73d508..c2ddf1fcf 100644 --- a/integration/avoid-import-conflicts-types-only/simple.ts +++ b/integration/avoid-import-conflicts-types-only/simple.ts @@ -1,9 +1,21 @@ /* eslint-disable */ -import { Simple as Simple1 } from './simple2'; +import { SimpleEnum as SimpleEnum1, Simple as Simple2 } from './simple2'; export const protobufPackage = 'simple'; +export enum SimpleEnum { + LOCAL_DEFAULT = 0, + LOCAL_FOO = 1, + LOCAL_BAR = 2, + UNRECOGNIZED = -1, +} + export interface Simple { name: string; - otherSimple: Simple1 | undefined; + otherSimple: Simple2 | undefined; +} + +export interface SimpleEnums { + localEnum: SimpleEnum; + importEnum: SimpleEnum1; } diff --git a/integration/avoid-import-conflicts-types-only/simple2.bin b/integration/avoid-import-conflicts-types-only/simple2.bin index 3561fcb3b..6faaf8947 100644 Binary files a/integration/avoid-import-conflicts-types-only/simple2.bin 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 index 7eb16d390..5e2572baf 100644 --- a/integration/avoid-import-conflicts-types-only/simple2.proto +++ b/integration/avoid-import-conflicts-types-only/simple2.proto @@ -1,6 +1,12 @@ syntax = "proto3"; package simple2; +enum SimpleEnum { + IMPORT_DEFAULT = 0; + IMPORT_FOO = 10; + IMPORT_BAR = 11; +} + 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 index d76e0601e..ee5dfd906 100644 --- a/integration/avoid-import-conflicts-types-only/simple2.ts +++ b/integration/avoid-import-conflicts-types-only/simple2.ts @@ -1,6 +1,13 @@ /* eslint-disable */ export const protobufPackage = 'simple2'; +export enum SimpleEnum { + IMPORT_DEFAULT = 0, + IMPORT_FOO = 10, + IMPORT_BAR = 11, + UNRECOGNIZED = -1, +} + export interface Simple { simple2Name: string; simple2Age: number; diff --git a/src/enums.ts b/src/enums.ts index f4e82c94a..64d46b55c 100644 --- a/src/enums.ts +++ b/src/enums.ts @@ -1,4 +1,4 @@ -import { code, Code, joinCode } from 'ts-poet'; +import { code, def, Code, joinCode } from 'ts-poet'; import { EnumDescriptorProto } from 'ts-proto-descriptors'; import { maybeAddComment } from './utils'; import { camelCase } from './case'; @@ -19,7 +19,7 @@ export function generateEnum( const chunks: Code[] = []; maybeAddComment(sourceInfo, chunks, enumDesc.options?.deprecated); - chunks.push(code`export ${options.constEnums ? 'const ' : ''}enum ${fullName} {`); + chunks.push(code`export ${options.constEnums ? 'const ' : ''}enum ${def(fullName)} {`); enumDesc.value.forEach((valueDesc, index) => { const info = sourceInfo.lookup(Fields.enum.value, index);