[CodeCompletion] Don't crash on member inits of templated constructors.

Also fixes a crash (on invalid) member functions with a colon
initializer. PR23948.

llvm-svn: 241811
This commit is contained in:
Benjamin Kramer
2015-07-09 15:31:10 +00:00
parent 2ba806c702
commit a4f8df0b5e
2 changed files with 23 additions and 3 deletions

View File

@@ -4409,9 +4409,12 @@ void Sema::CodeCompleteOperatorName(Scope *S) {
void Sema::CodeCompleteConstructorInitializer(
Decl *ConstructorD,
ArrayRef <CXXCtorInitializer *> Initializers) {
PrintingPolicy Policy = getCompletionPrintingPolicy(*this);
CXXConstructorDecl *Constructor
= static_cast<CXXConstructorDecl *>(ConstructorD);
if (!ConstructorD)
return;
AdjustDeclIfTemplate(ConstructorD);
CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(ConstructorD);
if (!Constructor)
return;
@@ -4435,6 +4438,7 @@ void Sema::CodeCompleteConstructorInitializer(
// Add completions for base classes.
CodeCompletionBuilder Builder(Results.getAllocator(),
Results.getCodeCompletionTUInfo());
PrintingPolicy Policy = getCompletionPrintingPolicy(*this);
bool SawLastInitializer = Initializers.empty();
CXXRecordDecl *ClassDecl = Constructor->getParent();
for (const auto &Base : ClassDecl->bases()) {