diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-07-15 16:25:15 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-07-15 16:25:15 +0000 |
commit | e9d62935d3c42cb73c39fc4d0dc46bc35dc213ec (patch) | |
tree | 036b86922700ec62b02752888abd69f8ab3f1993 /clang/lib/Sema/SemaOverload.cpp | |
parent | 397745e5406b0b6aefeddc43c71c1cc8e937bf5d (diff) | |
download | bcm5719-llvm-e9d62935d3c42cb73c39fc4d0dc46bc35dc213ec.tar.gz bcm5719-llvm-e9d62935d3c42cb73c39fc4d0dc46bc35dc213ec.zip |
Store bracket locations for array subscript expressions, from Erik Verbruggen!
llvm-svn: 135275
Diffstat (limited to 'clang/lib/Sema/SemaOverload.cpp')
-rw-r--r-- | clang/lib/Sema/SemaOverload.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index b95b886efbe..437b2b5c6d4 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -38,8 +38,10 @@ using namespace sema; /// function. static ExprResult CreateFunctionRefExpr(Sema &S, FunctionDecl *Fn, - SourceLocation Loc = SourceLocation()) { - ExprResult E = S.Owned(new (S.Context) DeclRefExpr(Fn, Fn->getType(), VK_LValue, Loc)); + SourceLocation Loc = SourceLocation(), + const DeclarationNameLoc &LocInfo = DeclarationNameLoc()){ + ExprResult E = S.Owned(new (S.Context) DeclRefExpr(Fn, Fn->getType(), + VK_LValue, Loc, LocInfo)); E = S.DefaultFunctionArrayConversion(E.take()); if (E.isInvalid()) return ExprError(); @@ -8878,7 +8880,10 @@ Sema::CreateOverloadedArraySubscriptExpr(SourceLocation LLoc, ResultTy = ResultTy.getNonLValueExprType(Context); // Build the actual expression node. - ExprResult FnExpr = CreateFunctionRefExpr(*this, FnDecl, LLoc); + DeclarationNameLoc LocInfo; + LocInfo.CXXOperatorName.BeginOpNameLoc = LLoc.getRawEncoding(); + LocInfo.CXXOperatorName.EndOpNameLoc = RLoc.getRawEncoding(); + ExprResult FnExpr = CreateFunctionRefExpr(*this, FnDecl, LLoc, LocInfo); if (FnExpr.isInvalid()) return ExprError(); |