From b66d77793f2582901e6dde2015a6f3a8fac167b7 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Fri, 23 Mar 2012 23:09:08 +0000 Subject: When defining a forward-declared enum, don't try to attach the definition to a previous declaration if the redeclaration is invalid. That way lies madness. Fixes a crash-on-invalid reported by Abramo. llvm-svn: 153349 --- clang/test/SemaCXX/enum-scoped.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'clang/test') diff --git a/clang/test/SemaCXX/enum-scoped.cpp b/clang/test/SemaCXX/enum-scoped.cpp index 31190bebaa3..44394296e37 100644 --- a/clang/test/SemaCXX/enum-scoped.cpp +++ b/clang/test/SemaCXX/enum-scoped.cpp @@ -189,3 +189,14 @@ namespace test7 { enum class E { e = (struct S*)0 == (struct S*)0 }; S *p; } + +namespace test8 { + template struct S { + enum A : int; // expected-note {{here}} + enum class B; // expected-note {{here}} + enum class C : int; // expected-note {{here}} + }; + template enum S::A { a }; // expected-error {{previously declared with fixed underlying type}} + template enum class S::B : char { b }; // expected-error {{redeclared with different underlying}} + template enum S::C : int { c }; // expected-error {{previously declared as scoped}} +} -- cgit v1.2.3