[cfe-users] libclang: Spelling on typedefs lacks namespaces

Michael via cfe-users cfe-users at lists.llvm.org
Tue Sep 27 05:55:31 PDT 2016

Nobody? Wrong list? Any insight in this would be greatly appreciated.



On 08/30/2016 07:00 PM, Michael via cfe-users wrote:
> Hi
> Hope I picked the right place for this kind of problem, if not please 
> let me know.
> I'm using libclang to parse header files and generate code from them. 
> I found that clang_getTypeSpelling() usually includes the namespace(s) 
> a type was declared in. However with the exception being typedefs (and 
> same for "using A = B"). Not sure if this is a bug or intended 
> behavior, but it seems at least inconsistent. I also couldn't really 
> find a good workaround for this. I'd have to manually figure out all 
> typedefs (not just pure typedefs, they could also be template 
> parameters or whatever) and then their originating namespaces. This 
> sounds a bit cumbersome and not really straight forward.
> Minimal example:
> namespace foo {
> class Bar {
> };
> typedef Bar BarDef;
> }
> clang_getTypeSpelling on "Bar" (kind "Record") gives: "foo::Bar"
> clang_getTypeSpelling on "BarDef" (kind "Typedef") gives: "BarDef" 
> (<== missing "foo::")
> Any idea how to solve this problem? Am I missing something?
> Thanks
> Michael
> _______________________________________________
> cfe-users mailing list
> cfe-users at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users

More information about the cfe-users mailing list