summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2017-06-23 14:10:07 +0000
committerAlex Lorenz <arphaman@gmail.com>2017-06-23 14:10:07 +0000
commit787d30fe18fd0a44692977fc617f8ca7febf6d3e (patch)
tree90d594f8e342390c76f39c25c6f2e9255ac0e124 /clang/lib/Sema/SemaDeclCXX.cpp
parent4c5192f3754a3f355217519e8c7b37dc329e7d44 (diff)
downloadbcm5719-llvm-787d30fe18fd0a44692977fc617f8ca7febf6d3e.tar.gz
bcm5719-llvm-787d30fe18fd0a44692977fc617f8ca7febf6d3e.zip
PR26195: Set correct NestedNameSpecifierLoc for the dependent initializer
This commit fixes incorrect source positions of dependent c'tor initializers like in the following code: template<typename MyBase> struct Derived: MyBase::InnerIterator { Derived() : MyBase::InnerIterator() {} /// This line is problematic: all positions point to InnerIterator and nothing points to MyBase }; Patch by Serge Preis! Differential Revision: https://reviews.llvm.org/D32439 llvm-svn: 306103
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 0b46e15bb0a..27b5221fb9f 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -3778,6 +3778,15 @@ Sema::BuildMemInitializer(Decl *ConstructorD,
if (BaseType.isNull())
return true;
+ TInfo = Context.CreateTypeSourceInfo(BaseType);
+ DependentNameTypeLoc TL =
+ TInfo->getTypeLoc().castAs<DependentNameTypeLoc>();
+ if (!TL.isNull()) {
+ TL.setNameLoc(IdLoc);
+ TL.setElaboratedKeywordLoc(SourceLocation());
+ TL.setQualifierLoc(SS.getWithLocInContext(Context));
+ }
+
R.clear();
R.setLookupName(MemberOrBase);
}
OpenPOWER on IntegriCloud