[PATCH] Fix DeclRefExpr::getFoundDecl() for non-call references.

Daniel Jasper djasper at google.com
Wed Mar 20 14:37:57 PDT 2013



================
Comment at: lib/Sema/SemaExpr.cpp:2363-2364
@@ -2362,4 +2362,4 @@
   if (!NeedsADL && R.isSingleResult() && !R.getAsSingle<FunctionTemplateDecl>())
-    return BuildDeclarationNameExpr(SS, R.getLookupNameInfo(),
-                                    R.getFoundDecl());
+    return BuildDeclarationNameExpr(SS, R.getLookupNameInfo(), R.getFoundDecl(),
+                                    R.getRepresentativeDecl());
 
----------------
Richard Smith wrote:
> These arguments appear to be reversed from the declaration of BuildDeclarationNameExpr. Is that intentional?
I hope I am getting this right. I think they just mean different things. The confusion is about FoundD(ecl).

In the context of a DeclRefExpr, it seems to mean the actually referenced Decl, i.e. the UsingShadowDecl if it references through it. In the context of a LookupResult, the getFoundDecl() returns the underlying decl and getRepresentativeDecl() returns what would be the DeclRefExpr::getFoundDecl().


http://llvm-reviews.chandlerc.com/D550



More information about the cfe-commits mailing list