From 39e61f377054b991588e5e80bc98da2fde2dd203 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Fri, 11 Jul 2014 00:16:51 +0000 Subject: [PATCH] Return a FixItHint instead of taking a diagnostic builder Addressing review comments from r212784. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212786 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaDecl.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 51967627b0..253ec39a84 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -10727,9 +10727,8 @@ bool Sema::isAcceptableTagRedeclaration(const TagDecl *Previous, /// struct Y { friend struct /*N::*/ X; }; /// } /// } -static void addFriendTagNNSFixIt(Sema &SemaRef, Sema::SemaDiagnosticBuilder &D, - NamedDecl *ND, Scope *S, - SourceLocation NameLoc) { +static FixItHint createFriendTagNNSFixIt(Sema &SemaRef, NamedDecl *ND, Scope *S, + SourceLocation NameLoc) { // While the decl is in a namespace, do repeated lookup of that name and see // if we get the same namespace back. If we do not, continue until // translation unit scope, at which point we have a fully qualified NNS. @@ -10740,7 +10739,7 @@ static void addFriendTagNNSFixIt(Sema &SemaRef, Sema::SemaDiagnosticBuilder &D, // other namespaces. Bail if there's an anonymous namespace in the chain. NamespaceDecl *Namespace = dyn_cast(DC); if (!Namespace || Namespace->isAnonymousNamespace()) - return; + return FixItHint(); IdentifierInfo *II = Namespace->getIdentifier(); Namespaces.push_back(II); NamedDecl *Lookup = SemaRef.LookupSingleName( @@ -10759,7 +10758,7 @@ static void addFriendTagNNSFixIt(Sema &SemaRef, Sema::SemaDiagnosticBuilder &D, for (auto *II : Namespaces) OS << II->getName() << "::"; OS.flush(); - D << FixItHint::CreateInsertion(NameLoc, Insertion); + return FixItHint::CreateInsertion(NameLoc, Insertion); } /// ActOnTag - This is invoked when we see 'struct foo' or 'struct {'. In the @@ -10982,8 +10981,8 @@ Decl *Sema::ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK, // unambiguously found something outside the enclosing namespace. if (Previous.isSingleResult() && FriendSawTagOutsideEnclosingNamespace) { NamedDecl *ND = Previous.getFoundDecl(); - auto D = Diag(NameLoc, diag::ext_friend_tag_redecl_outside_namespace); - addFriendTagNNSFixIt(*this, D, ND, S, NameLoc); + Diag(NameLoc, diag::ext_friend_tag_redecl_outside_namespace) + << createFriendTagNNSFixIt(*this, ND, S, NameLoc); } } -- 2.40.0