aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaAccess.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-12-17 23:40:46 +0000
committerReid Kleckner <reid@kleckner.net>2014-12-17 23:40:46 +0000
commitaf9bf59ba901e4a6367fb262454557d1edc27e93 (patch)
tree16e0ac6fd2c5174c01ba94a891b8fc4c5a70983a /clang/lib/Sema/SemaAccess.cpp
parent969902b43b0c028d49dba8ee0b443351fa0453cb (diff)
downloadllvm-af9bf59ba901e4a6367fb262454557d1edc27e93.zip
llvm-af9bf59ba901e4a6367fb262454557d1edc27e93.tar.gz
llvm-af9bf59ba901e4a6367fb262454557d1edc27e93.tar.bz2
Don't assume friended C++ method decls have qualifiers
There are a few cases where unqualified lookup can find C++ methods. Unfortunately, none of them seem to have illegal access paths, so I can't excercise the diagnostic source range code that I am changing here. Fixes PR21851, which was a crash on valid. llvm-svn: 224471
Diffstat (limited to 'clang/lib/Sema/SemaAccess.cpp')
-rw-r--r--clang/lib/Sema/SemaAccess.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaAccess.cpp b/clang/lib/Sema/SemaAccess.cpp
index ffdb0aa..37240c2 100644
--- a/clang/lib/Sema/SemaAccess.cpp
+++ b/clang/lib/Sema/SemaAccess.cpp
@@ -1749,14 +1749,14 @@ Sema::AccessResult Sema::CheckFriendAccess(NamedDecl *target) {
return AR_accessible;
CXXMethodDecl *method = cast<CXXMethodDecl>(target->getAsFunction());
- assert(method->getQualifier());
AccessTarget entity(Context, AccessTarget::Member,
cast<CXXRecordDecl>(target->getDeclContext()),
DeclAccessPair::make(target, access),
/*no instance context*/ QualType());
entity.setDiag(diag::err_access_friend_function)
- << method->getQualifierLoc().getSourceRange();
+ << (method->getQualifier() ? method->getQualifierLoc().getSourceRange()
+ : method->getNameInfo().getSourceRange());
// We need to bypass delayed-diagnostics because we might be called
// while the ParsingDeclarator is active.