@@ -220,6 +220,7 @@ class TestSimplifyTypedef : public TestFixture {
220220 TEST_CASE (simplifyTypedef153);
221221 TEST_CASE (simplifyTypedef154);
222222 TEST_CASE (simplifyTypedef155);
223+ TEST_CASE (simplifyTypedef156);
223224
224225 TEST_CASE (simplifyTypedefFunction1);
225226 TEST_CASE (simplifyTypedefFunction2); // ticket #1685
@@ -3624,6 +3625,69 @@ class TestSimplifyTypedef : public TestFixture {
36243625 ASSERT_EQUALS (exp, tok (code));
36253626 }
36263627
3628+ void simplifyTypedef156 () {
3629+ const char code[] = " typedef struct S_t {\n " // #12930
3630+ " enum E { E0 };\n "
3631+ " E e;\n "
3632+ " } S;\n "
3633+ " void f(S s) {\n "
3634+ " switch (s.e) {\n "
3635+ " case S::E0:\n "
3636+ " break;\n "
3637+ " }\n "
3638+ " }\n " ;
3639+ const char exp[] = " struct S_t { "
3640+ " enum E { E0 } ; "
3641+ " E e ; "
3642+ " } ; "
3643+ " void f ( struct S_t s ) { "
3644+ " switch ( s . e ) { "
3645+ " case S_t :: E0 : ; "
3646+ " break ; "
3647+ " } "
3648+ " }" ;
3649+ ASSERT_EQUALS (exp, tok (code));
3650+
3651+ const char code2[] = " typedef enum E_t { E0 } E;\n "
3652+ " void f(E e) {\n "
3653+ " switch (e) {\n "
3654+ " case E::E0:\n "
3655+ " break;\n "
3656+ " }\n "
3657+ " }\n " ;
3658+ const char exp2[] = " enum E_t { E0 } ; "
3659+ " void f ( enum E_t e ) { "
3660+ " switch ( e ) { "
3661+ " case E_t :: E0 : ; "
3662+ " break ; "
3663+ " } "
3664+ " }" ;
3665+ ASSERT_EQUALS (exp2, tok (code2));
3666+
3667+ const char code3[] = " typedef union U_t {\n "
3668+ " int i;\n "
3669+ " enum { E0 } e;\n "
3670+ " } U;\n "
3671+ " void f(U u) {\n "
3672+ " switch (u.e) {\n "
3673+ " case U::E0:\n "
3674+ " break;\n "
3675+ " }\n "
3676+ " }\n " ;
3677+ const char exp3[] = " union U_t { "
3678+ " int i ; "
3679+ " enum Anonymous0 { E0 } ; "
3680+ " enum Anonymous0 e ; "
3681+ " } ; "
3682+ " void f ( union U_t u ) { "
3683+ " switch ( u . e ) { "
3684+ " case U_t :: E0 : ; "
3685+ " break ; "
3686+ " } "
3687+ " }" ;
3688+ ASSERT_EQUALS (exp3, tok (code3));
3689+ }
3690+
36273691 void simplifyTypedefFunction1 () {
36283692 {
36293693 const char code[] = " typedef void (*my_func)();\n "
0 commit comments