diff options
| author | Douglas Gregor <dgregor@apple.com> | 2011-01-04 00:32:56 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2011-01-04 00:32:56 +0000 |
| commit | 44e7df67d963de48125873d82eed90821c8a370d (patch) | |
| tree | 17d6e34b294f0c7d7fa2c2bca2e0ff4a443e7c11 /clang/lib/Serialization/ASTReader.cpp | |
| parent | bd9dfb2e297bb29f33d631566bcf0b6db6e3f61e (diff) | |
| download | bcm5719-llvm-44e7df67d963de48125873d82eed90821c8a370d.tar.gz bcm5719-llvm-44e7df67d963de48125873d82eed90821c8a370d.zip | |
Implement pack expansion of base initializers, so that we can
initialize those lovely mixins that come from pack expansions of base
specifiers.
llvm-svn: 122793
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
| -rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index dd8807fb004..f3320a04158 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -4325,7 +4325,7 @@ ASTReader::ReadCXXBaseOrMemberInitializers(PerFileData &F, else Member = cast<FieldDecl>(GetDecl(Record[Idx++])); } - SourceLocation MemberLoc = ReadSourceLocation(F, Record, Idx); + SourceLocation MemberOrEllipsisLoc = ReadSourceLocation(F, Record, Idx); Expr *Init = ReadExpr(F); SourceLocation LParenLoc = ReadSourceLocation(F, Record, Idx); SourceLocation RParenLoc = ReadSourceLocation(F, Record, Idx); @@ -4345,18 +4345,22 @@ ASTReader::ReadCXXBaseOrMemberInitializers(PerFileData &F, if (IsBaseInitializer) { BOMInit = new (C) CXXBaseOrMemberInitializer(C, BaseClassInfo, IsBaseVirtual, LParenLoc, - Init, RParenLoc); + Init, RParenLoc, + MemberOrEllipsisLoc); } else if (IsWritten) { if (Member) - BOMInit = new (C) CXXBaseOrMemberInitializer(C, Member, MemberLoc, + BOMInit = new (C) CXXBaseOrMemberInitializer(C, Member, + MemberOrEllipsisLoc, LParenLoc, Init, RParenLoc); else BOMInit = new (C) CXXBaseOrMemberInitializer(C, IndirectMember, - MemberLoc, LParenLoc, + MemberOrEllipsisLoc, + LParenLoc, Init, RParenLoc); } else { - BOMInit = CXXBaseOrMemberInitializer::Create(C, Member, MemberLoc, + BOMInit = CXXBaseOrMemberInitializer::Create(C, Member, + MemberOrEllipsisLoc, LParenLoc, Init, RParenLoc, Indices.data(), Indices.size()); |

