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

Adam McLaughlin via cfe-users cfe-users at lists.llvm.org
Tue Sep 27 06:53:22 PDT 2016


Hi Michael,

I haven't used libclang much (my use case requires LibTooling) but I think
you want to get the underlying type from the typedef and then use
getTypeSpelling on that result. Basically you want to check if CXType.kind
is CXType_Typedef and if so, get the underlying type (which in this case
should be "Bar") and then call clang_getTypeSpelling on that result.

I don't know anything about CXCursors or CXTypes so I'll leave it to you to
figure out how to get the underlying type, but hopefully this helps.

-Adam



On Tue, Sep 27, 2016 at 8:55 AM, Michael via cfe-users <
cfe-users at lists.llvm.org> wrote:

> Nobody? Wrong list? Any insight in this would be greatly appreciated.
>
> Thanks
>
> Michael
>
>
> 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
>>
>
> _______________________________________________
> cfe-users mailing list
> cfe-users at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20160927/486c91c0/attachment.html>


More information about the cfe-users mailing list