From d4cbaebd827ca5e0a8af63693b7b3c1c6b71044f Mon Sep 17 00:00:00 2001 From: Jacob Carlborg Date: Tue, 4 Jul 2023 14:51:16 +0200 Subject: [PATCH] Fix #285: `--alias-enum-members=true` shouldn't affect global anonymous enums The members of anonymous are already accessible outside the enum. Adding aliases are not necessary. --- changelog.md | 1 + dstep/translator/Enum.d | 2 +- tests/unit/EnumUnitTests.d | 26 ++++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 76864b76..552e132c 100644 --- a/changelog.md +++ b/changelog.md @@ -14,6 +14,7 @@ * [Issue 235](https://github.com/jacob-carlborg/dstep/issues/235): Passing `--` as an argument doesn't work properly * [Issue 224](https://github.com/jacob-carlborg/dstep/issues/224): Dub assumes default installation path for LLVM on Windows * [Issue 247](https://github.com/jacob-carlborg/dstep/issues/247): `--alias-enum-members` doesn't work properly for typedef enums +* [Issue 285](https://github.com/jacob-carlborg/dstep/issues/285): `--alias-enum-members=true` shouldn't affect global anonymous enums ## Version 1.0.0 ### New/Changed Features diff --git a/dstep/translator/Enum.d b/dstep/translator/Enum.d index 3407e93a..ab61b035 100644 --- a/dstep/translator/Enum.d +++ b/dstep/translator/Enum.d @@ -305,7 +305,7 @@ void translateEnumDef(Output output, Context context, Cursor cursor) } }; - if ((anonymous && variables) || !cursor.isGlobal || context.options.aliasEnumMembers) + if ((anonymous && variables) || !cursor.isGlobal || (context.options.aliasEnumMembers && !anonymous)) generateEnumAliases(context.globalScope, context, cursor, spelling); } diff --git a/tests/unit/EnumUnitTests.d b/tests/unit/EnumUnitTests.d index 15968b37..5fa3e4cc 100644 --- a/tests/unit/EnumUnitTests.d +++ b/tests/unit/EnumUnitTests.d @@ -341,6 +341,32 @@ alias BAZ = Enum.BAZ; D", options); } +// Test aliasing of all enum members for anonymous enum. +unittest +{ + Options options = { aliasEnumMembers: true }; + +assertTranslates( +q"C +enum +{ + FOO, + BAR, + BAZ, +}; +C", +q"D +extern (C): + +enum +{ + FOO = 0, + BAR = 1, + BAZ = 2 +} +D", options); +} + // Test a named enum inside a struct. unittest {