From: Abramo Bagnara Date: Sat, 29 Oct 2011 20:52:52 +0000 (+0000) Subject: Fixed FriendDecl source locations. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0216df8fd3ce58f5a68ef2ab141ea34c96c11164;p=clang Fixed FriendDecl source locations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143295 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Sema/Sema.h b/include/clang/Sema/Sema.h index f1b0befcbf..967c02e0b7 100644 --- a/include/clang/Sema/Sema.h +++ b/include/clang/Sema/Sema.h @@ -3611,7 +3611,8 @@ public: Expr *AssertMessageExpr, SourceLocation RParenLoc); - FriendDecl *CheckFriendTypeDecl(SourceLocation FriendLoc, + FriendDecl *CheckFriendTypeDecl(SourceLocation Loc, + SourceLocation FriendLoc, TypeSourceInfo *TSInfo); Decl *ActOnFriendTypeDecl(Scope *S, const DeclSpec &DS, MultiTemplateParamsArg TemplateParams); diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index 4d7a53face..42d7b2f48f 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -9646,7 +9646,8 @@ Decl *Sema::ActOnStaticAssertDeclaration(SourceLocation StaticAssertLoc, /// \brief Perform semantic analysis of the given friend type declaration. /// /// \returns A friend declaration that. -FriendDecl *Sema::CheckFriendTypeDecl(SourceLocation FriendLoc, +FriendDecl *Sema::CheckFriendTypeDecl(SourceLocation Loc, + SourceLocation FriendLoc, TypeSourceInfo *TSInfo) { assert(TSInfo && "NULL TypeSourceInfo for friend type declaration"); @@ -9703,7 +9704,7 @@ FriendDecl *Sema::CheckFriendTypeDecl(SourceLocation FriendLoc, // FIXME: C++0x has some syntactic restrictions on friend type declarations // in [class.friend]p3 that we do not implement. - return FriendDecl::Create(Context, CurContext, FriendLoc, TSInfo, FriendLoc); + return FriendDecl::Create(Context, CurContext, Loc, TSInfo, FriendLoc); } /// Handle a friend tag declaration where the scope specifier was @@ -9900,7 +9901,7 @@ Decl *Sema::ActOnFriendTypeDecl(Scope *S, const DeclSpec &DS, TSI, DS.getFriendSpecLoc()); else - D = CheckFriendTypeDecl(DS.getFriendSpecLoc(), TSI); + D = CheckFriendTypeDecl(Loc, DS.getFriendSpecLoc(), TSI); if (!D) return 0; diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp index 218beaa682..a4808f88d2 100644 --- a/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -552,7 +552,8 @@ Decl *TemplateDeclInstantiator::VisitFriendDecl(FriendDecl *D) { if (!InstTy) return 0; - FriendDecl *FD = SemaRef.CheckFriendTypeDecl(D->getFriendLoc(), InstTy); + FriendDecl *FD = SemaRef.CheckFriendTypeDecl(D->getLocation(), + D->getFriendLoc(), InstTy); if (!FD) return 0;