class Foo { public: enum EN { ev1 , ev2 }; void foo(EN e); }; ===================== CLANG 130 ============================= Clang Parser using v0.62 g++ 11.3 clang_parseTranslationUnit2(0x242, -fPIC, -fno-exceptions, -Wno-constant-logical-operand, -x, c++, -std=c++17, /home/kleint/t.cpp, -isystem, /opt/QtO/clang130qt/lib/clang/13.0.0/include t.cpp:1:1-7:2 >ClassDecl [def], type="Foo", spelling="Foo" t.cpp:2:1-8 >CXXAccessSpecifier public EnumDecl, "unsigned int", type="Foo::EN", spelling="EN" t.cpp:3:13-16 >EnumConstantDecl, value=0u (0x0), type="Foo::EN", spelling="ev1" EnumConstantDecl, value=1u (0x1), type="Foo::EN", spelling="ev2" CXXMethod Available, result type="void", ExceptionNone, type="void (Foo::EN)", spelling="foo" t.cpp:6:13-17 >ParmDecl, type="Foo::EN", spelling="e" t.cpp:6:13-15 >TypeRef, type="Foo::EN", spelling="enum Foo::EN" ClassDecl [def], type="Foo", spelling="Foo" t.cpp:2:1-8 >CXXAccessSpecifier public EnumDecl, "unsigned int", type="Foo::EN", spelling="EN" t.cpp:3:13-16 >EnumConstantDecl, value=0u (0x0), type="Foo::EN", spelling="ev1" EnumConstantDecl, value=1u (0x1), type="Foo::EN", spelling="ev2" CXXMethod Available, result type="void", ExceptionNone, type="void (EN)", spelling="foo" t.cpp:6:13-17 >ParmDecl, type= "EN", spelling="e" t.cpp:6:13-15 >TypeRef, type="Foo::EN", spelling="enum Foo::EN"