From 4c1396c3532d6ad4973177d1c97578989385f347 Mon Sep 17 00:00:00 2001 From: Ellie Hermaszewska Date: Tue, 30 May 2023 23:29:16 +0800 Subject: Disallow duplicate enumerator names in the same enum (#2904) Fixes https://github.com/shader-slang/slang/issues/2895 --- source/slang/slang-check-decl.cpp | 1 + tests/bugs/overloaded-enum.slang | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 tests/bugs/overloaded-enum.slang diff --git a/source/slang/slang-check-decl.cpp b/source/slang/slang-check-decl.cpp index 3fd7bee7a..c7a955f06 100644 --- a/source/slang/slang-check-decl.cpp +++ b/source/slang/slang-check-decl.cpp @@ -145,6 +145,7 @@ namespace Slang #define CASE(TYPE) void visit##TYPE(TYPE* decl) { checkForRedeclaration(decl); } + CASE(EnumCaseDecl) CASE(FuncDecl) CASE(VarDeclBase) CASE(SimpleTypeDecl) diff --git a/tests/bugs/overloaded-enum.slang b/tests/bugs/overloaded-enum.slang new file mode 100644 index 000000000..3b9ac8e10 --- /dev/null +++ b/tests/bugs/overloaded-enum.slang @@ -0,0 +1,10 @@ +//TEST:SIMPLE(filecheck=CHECK): + +enum E +{ + A, + A + // CHECK: overloaded-enum.slang([[#@LINE-1]]): error 30200: declaration of 'A' conflicts with existing declaration +} + +E e = E::A; -- cgit v1.2.3