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
|
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);
|
Class *klass = control()->newClass(sourceLocation, className);
|
||||||
|
|||||||
Reference in New Issue
Block a user