[prev in list] [next in list] [prev in thread] [next in thread]
List: cfe-dev
Subject: Re: [cfe-dev] API for auto type deduction in libclang
From: Jacob Carlborg <doob () me ! com>
Date: 2014-01-25 14:18:50
Message-ID: lc0h3u$cdi$1 () ger ! gmane ! org
[Download RAW message or body]
On 2014-01-25 01:33, Kevin Funk wrote:
> Hey guys,
>
> I'm also part of the group trying to integrate Clang into KDevelop. We're
> using the C interface to Clang.
>
> I'm currently struggling to figure out how to get the automatically deduced
> type of a C++11 auto type. What we basically do atm is the following:
>
> Assume we have some code such as 'auto i = 42;'
>
> Following situation:
> - We have a CXCursor pointing to the declaration
> - Now clang_getCursorType(cursor) at this point
> just returns CXType_Unexposed. This indicates some internal type.
> - clang_getTypeSpelling(cursor) then just gives us 'auto'.
> Which is somewhat correct, but not what we really want.
> - We'd like to know the deduced type
>
> So the question is:
> Is there some way to get the deduced type for 'i' (obviously 'int' here)?
>
> Through debugging, I found out that C++11 auto types are internally handled as
> clang::AutoType. So, right now I'm missing API in the C interface, such as
> 'CXType clang_getAutoDeducedType(CXType)' that internally calls something like
> clang::AutoType::getDeducedType() (from AST/Type.h).
>
> I actually tried to patch Clang (excerpt attached) to get a proof-of-concept,
> but apparently AutoType::getDeducedType() always returns a null QualType for
> me. Hence the resulting type we get is garbage. Is AutoType::getDeducedType()
> even the correct method to use here? Is this approach completely wrong?
>
> Any hints are welcome
This seems to work without modifications to libclang:
CXType type = clang_getCursorType(cursor);
CXType deducedType = clang_getCanonicalType(type);
assert(deducedType.kind == CXType_Int);
--
/Jacob Carlborg
_______________________________________________
cfe-dev mailing list
cfe-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic