forked from qt-creator/qt-creator
Clang: Highlight invalid declarations as text
...instead of the corresponding declaration color. Task-number: QTCREATORBUG-18686 Change-Id: Ice4d84816351af79efa286f49516c392bd80da86 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -41,4 +41,9 @@ enum class PreferredTranslationUnit
|
||||
# define IS_PRETTY_DECL_SUPPORTED
|
||||
#endif
|
||||
|
||||
// CLANG-UPGRADE-CHECK: Remove IS_INVALIDDECL_SUPPORTED once we require clang >= 7.0
|
||||
#if defined(CINDEX_VERSION_HAS_ISINVALIDECL_BACKPORTED) || CINDEX_VERSION_MINOR >= 46
|
||||
# define IS_INVALIDDECL_SUPPORTED
|
||||
#endif
|
||||
|
||||
} // namespace ClangBackEnd
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
#include "sourcelocation.h"
|
||||
#include "sourcerange.h"
|
||||
|
||||
#include "clangbackend_global.h"
|
||||
|
||||
#include <ostream>
|
||||
|
||||
namespace ClangBackEnd {
|
||||
@@ -103,6 +105,15 @@ bool Cursor::isDeclaration() const
|
||||
return clang_isDeclaration(kind());
|
||||
}
|
||||
|
||||
bool Cursor::isInvalidDeclaration() const
|
||||
{
|
||||
#ifdef IS_INVALIDDECL_SUPPORTED
|
||||
return clang_isInvalidDeclaration(cxCursor);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool Cursor::isLocalVariable() const
|
||||
{
|
||||
switch (semanticParent().kind()) {
|
||||
|
||||
@@ -61,6 +61,7 @@ public:
|
||||
bool isStaticMethod() const;
|
||||
bool isCompoundType() const;
|
||||
bool isDeclaration() const;
|
||||
bool isInvalidDeclaration() const;
|
||||
bool isLocalVariable() const;
|
||||
bool isReference() const;
|
||||
bool isExpression() const;
|
||||
|
||||
@@ -308,6 +308,9 @@ void TokenInfo::identifierKind(const Cursor &cursor, Recursion recursion)
|
||||
{
|
||||
m_isIdentifier = (cursor.kind() != CXCursor_PreprocessingDirective);
|
||||
|
||||
if (cursor.isInvalidDeclaration())
|
||||
return;
|
||||
|
||||
switch (cursor.kind()) {
|
||||
case CXCursor_Destructor:
|
||||
case CXCursor_Constructor:
|
||||
|
||||
Reference in New Issue
Block a user