forked from qt-creator/qt-creator
C++: Fix crash when typing illegal class names
Such as class ~A {} or class operator+ {}. Done by Roberto Raggi Change-Id: I4fdad6d27aaa997e651f2d08de36fe675fc78814 Reviewed-on: http://codereview.qt.nokia.com/2778 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
This commit is contained in:
committed by
Leandro T. C. Melo
parent
a9c0d4453e
commit
fb550c4ff1
15
src/libs/3rdparty/cplusplus/Bind.cpp
vendored
15
src/libs/3rdparty/cplusplus/Bind.cpp
vendored
@@ -2771,6 +2771,21 @@ bool Bind::visit(ClassSpecifierAST *ast)
|
||||
startScopeOffset = tokenAt(q->unqualified_name->lastToken() - 1).end(); // at the end of the unqualified name
|
||||
}
|
||||
}
|
||||
|
||||
// get the unqualified class name
|
||||
const QualifiedNameId *q = className->asQualifiedNameId();
|
||||
const Name *unqualifiedClassName = q ? q->name() : className;
|
||||
|
||||
if (! unqualifiedClassName) // paranoia check
|
||||
className = 0;
|
||||
else if (! (unqualifiedClassName->isNameId() || unqualifiedClassName->isTemplateNameId())) {
|
||||
translationUnit()->error(sourceLocation, "expected a class-name");
|
||||
|
||||
className = unqualifiedClassName->identifier();
|
||||
|
||||
if (q && className)
|
||||
className = control()->qualifiedNameId(q->base(), className);
|
||||
}
|
||||
}
|
||||
|
||||
Class *klass = control()->newClass(sourceLocation, className);
|
||||
|
Reference in New Issue
Block a user