<html>
<head></head>
<body>
<p>Jordan, thank you for your response, now it's much clearer. </p>
<p>Alp, I've been trying for a while to recall for those terms that I got mixed up when I had to use them, but I'm not able to contribute with something relevant right now. If I remember something, I'll write you again.</p>
<p>Thanks,</p>
<p>Pedro.</p>
<div><em>El día 25 ene 2014 02:48, Alp Toker <alp@nuanti.com> escribió:</em></div><blockquote class="replyBlock" style="border-left: 2px solid #000083; margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><p>On 25/01/2014 01:24, Richard Smith wrote:</p>
<blockquote class="replyBlock" style="border-left: 2px solid #000083; margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><p>On Fri Jan 24 2014 at 9:20:44 AM, Jordan Rose <jordan_rose@apple.com <<a href="mailto:jordan_rose@apple.com>> wrote:" target="_blank">mailto:jordan_rose@apple.com>> wrote:</a></p>
<br/>
<p>    On Jan 24, 2014, at 2:51 , Pedro Delgado Perez<br/>
    <pedro.delgadoperez@mail.uca.es<br/>
    <<a href="mailto:pedro.delgadoperez@mail.uca.es>> wrote:" target="_blank">mailto:pedro.delgadoperez@mail.uca.es>> wrote:</a></p>
<blockquote class="replyBlock" style="border-left: 2px solid #000083; margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><p>    Hi,</p>
<p>    My question is simple. Could anyone explain me what's the<br/>
    difference between the methods<br/>
    getResultType and getCallResultType in FunctionDecl?</p>
<p>    This is the implementation in FunctionType:</p>
<p>    02783  <http://clang.llvm.org/doxygen/classclang_1_1FunctionType.html#aafa453cd7e81a7c3d6c61f261e68afe8>    QualType  <http://clang.llvm.org/doxygen/classclang_1_1QualType.html>  getResultType  <http://clang.llvm.org/doxygen/classclang_1_1FunctionType.html#aafa453cd7e81a7c3d6c61f261e68afe8>()  const{return  ResultType; }</p>
<p>    ...<br/>
    02799  <http://clang.llvm.org/doxygen/classclang_1_1FunctionType.html#a5f8df0258bcf7281e7055ea01dbd8f85>    QualType  <<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html>  getCallResultType  <http://clang.llvm.org/doxygen/classclang_1_1FunctionType.html#a5f8df0258bcf7281e7055ea01dbd8f85>(ASTContext  <" target="_blank">http://clang.llvm.org/doxygen/classclang_1_1QualType.html>  getCallResultType  <http://clang.llvm.org/doxygen/classclang_1_1FunctionType.html#a5f8df0258bcf7281e7055ea01dbd8f85>(ASTContext  <</a><a href="http://clang.llvm.org/doxygen/classclang_1_1ASTContext.html>  &Context  <http://clang.llvm.org/doxygen/ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f>" target="_blank">http://clang.llvm.org/doxygen/classclang_1_1ASTContext.html>  &Context  <http://clang.llvm.org/doxygen/ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f></a>)  const{2800return  getResultType().getNonLValueExprType  <<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html#a89e3ea65c009b7a0ea76edc56076107c>(Context" target="_blank">http://clang.llvm.org/doxygen/classclang_1_1QualType.html#a89e3ea65c009b7a0ea76edc56076107c>(Context</a>);2801   }</p>
<p>    And this is the definition ofgetNonLValueExprType<br/>
    <<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html#a89e3ea65c009b7a0ea76edc56076107c>:" target="_blank">http://clang.llvm.org/doxygen/classclang_1_1QualType.html#a89e3ea65c009b7a0ea76edc56076107c>:</a><br/>
    Determine the type of a (typically non-lvalue) expression with<br/>
    the specified result type.<br/>
    This routine should be used for expressions for which the return<br/>
    type is explicitly specified (e.g., in a cast or call) and isn't<br/>
    necessarily an lvalue. It removes a top-level reference (since<br/>
    there are no expressions of reference type) and deletes top-level<br/>
    cvr-qualifiers from non-class types (in C++) or all types (in C).</p>
<p>    But I am not able to understand this very well. Could anyone give<br/>
    me an example of the difference? Up to now, I have been using<br/>
    getResultType, but now I have found getCallResultType and I'm not<br/>
    sure what should I use.</p>
</blockquote><p>    I'm not 100% sure about this, but my understanding is:</p>
<p>    You can declare your function to return "const int", but the<br/>
    caller is just going to get an int. Similarly, if you declare your<br/>
    function to return "int &", the calling expression has type "int"<br/>
    but is marked as an lvalue.</p>
<p>    On the other hand, if you return "const int *", dropping the const<br/>
    would be incorrect. (And the same is actually true for "const int &".)</p>
<p>    Basically, if you want to know the type the function says it's<br/>
    returning, use getResultType(). If you want to know the type that<br/>
    the CallExpr will have, use getCallResultType().</p>
<br/>
<p>We should rename 'getResultType' to 'getReturnType' to clarify this (and to generally follow the standard terminology). This has been on my TODO list for a long time, but there's always been something more pressing to do...</p>
</blockquote><p>I'll take a look into this shortly, it's very much in line with the other terminology fixes we've been working on lately. Will deprecate and keep the old version around for external modules.</p>
<p>Richard, do you see any other terminology fixes we could get done while I have the refactoring setup primed?</p>
<p>Alp.</p>
<br/>
<blockquote class="replyBlock" style="border-left: 2px solid #000083; margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><p>_______________________________________________<br/>
cfe-dev mailing list<br/>
cfe-dev@cs.uiuc.edu<br/>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a></p>
</blockquote><p>-- <br/>
<a href="http://www.nuanti.com" target="_blank">http://www.nuanti.com</a><br/>
the browser experts</p>
</blockquote>
</body>
</html>