[cfe-dev] canonical type for C++11 auto

Milian Wolff mail at milianw.de
Thu Jul 30 13:48:53 PDT 2015


Ping?

Could anyone help me out? In what direction should I look? How can I resolve the "auto" QualType (as 
returned by e.g. T.getAsString())" to the underlying type - in my test code below "int"?

Any help would be greatly appreciated.

Bye

On Sunday, July 26, 2015 03:31:14 PM Milian Wolff wrote:
> Hey all,
> 
> I want to scratch my own itch by fixing the issue that
> clang_getCanonicalType does not deduce the type for variables such as `auto
> i = 1;`. See for context:
> 
> https://llvm.org/bugs/show_bug.cgi?id=18669
> http://clang-developers.42468.n3.nabble.com/API-for-auto-type-deduction-in-l
> ibclang-td4037350.html
> 
> I added a simple unit test as the first step:
> 
>     $ cat test/Index/cxx11-print-type.cpp
>     auto a = 1;
> 
>     // RUN: c-index-test -test-print-type -std=c++11 %s | FileCheck %s
>     // CHECK: VarDecl=a:1:6 [type=auto] [typeKind=Unexposed]
>     [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1]
> 
> Running the first half manually I get:
> 
>     VarDecl=a:1:6 (Definition) [type=auto] [typekind=Unexposed] [isPOD=0]
> 
> Sadly, I'm a bit lost as to where I'd have to fix this. Looking at
> CXType.cpp's clang_getCanonicalType implementation, I tried something like
> this:
> 
>     fprintf(stderr, "--------------> undeduced?: %d\n",
> T->isUndeducedType()); if (T->isUndeducedType()) {
>       auto d = T->getContainedAutoType()->getDeducedType();
>       fprintf(stderr, "--------------> deduced valid? %d\n", !d.isNull());
>       if (!d.isNull()) {
>         T = d;
>       }
>     }
> 
> This shows me that for the above input (i.e. `auto i = 1;`), the type is
> undeduced, but I also cannot force deduction by getDeducedType (probably me
> abusing/misinterpreting the API). So what can be done here - how could it be
> fixed? Where would it be fixed?
> 
> Thanks

-- 
Milian Wolff
mail at milianw.de
http://milianw.de
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150730/5ed295e7/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150730/5ed295e7/attachment.sig>


More information about the cfe-dev mailing list