From 1eefd16383bd0e3adb167ccf4e80f6563096594f Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Mon, 13 Jul 2009 12:05:29 +0200 Subject: [PATCH] Fixed a few typos and bugs in the ObjC++ support. --- src/libs/cplusplus/SimpleLexer.cpp | 5 +++++ src/libs/cplusplus/SimpleLexer.h | 1 + src/plugins/cppeditor/cpphighlighter.cpp | 2 +- src/shared/cplusplus/Lexer.cpp | 2 +- src/shared/cplusplus/Token.cpp | 2 +- src/shared/cplusplus/Token.h | 6 +++--- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/libs/cplusplus/SimpleLexer.cpp b/src/libs/cplusplus/SimpleLexer.cpp index f131c9de98e..93b93ec73cd 100644 --- a/src/libs/cplusplus/SimpleLexer.cpp +++ b/src/libs/cplusplus/SimpleLexer.cpp @@ -55,6 +55,11 @@ bool SimpleToken::isComment() const return _kind == T_COMMENT || _kind == T_DOXY_COMMENT; } +bool SimpleToken::isObjCAtKeyword() const +{ + return _kind >= T_FIRST_LITERAL && _kind <= T_LAST_OBJC_AT_KEYWORD; +} + SimpleLexer::SimpleLexer() : _lastState(0), _skipComments(false), diff --git a/src/libs/cplusplus/SimpleLexer.h b/src/libs/cplusplus/SimpleLexer.h index 669b4c00453..872a236fd89 100644 --- a/src/libs/cplusplus/SimpleLexer.h +++ b/src/libs/cplusplus/SimpleLexer.h @@ -79,6 +79,7 @@ public: bool isOperator() const; bool isKeyword() const; bool isComment() const; + bool isObjCAtKeyword() const; public: int _kind; diff --git a/src/plugins/cppeditor/cpphighlighter.cpp b/src/plugins/cppeditor/cpphighlighter.cpp index 2f016c4d37d..20be805d546 100644 --- a/src/plugins/cppeditor/cpphighlighter.cpp +++ b/src/plugins/cppeditor/cpphighlighter.cpp @@ -157,7 +157,7 @@ void CppHighlighter::highlightBlock(const QString &text) initialState = 0; } - } else if (tk.isKeyword() || isQtKeyword(tk.text())) + } else if (tk.isKeyword() || isQtKeyword(tk.text()) || tk.isObjCAtKeyword()) setFormat(tk.position(), tk.length(), m_formats[CppKeywordFormat]); else if (tk.isOperator()) diff --git a/src/shared/cplusplus/Lexer.cpp b/src/shared/cplusplus/Lexer.cpp index 2229b470bd2..5f727ef4afd 100644 --- a/src/shared/cplusplus/Lexer.cpp +++ b/src/shared/cplusplus/Lexer.cpp @@ -598,7 +598,7 @@ void Lexer::scan_helper(Token *tok) do { yyinp(); - if (! isalnum(_yychar)) + if (! (isalnum(_yychar) || _yychar == '_')) break; } while (_yychar); diff --git a/src/shared/cplusplus/Token.cpp b/src/shared/cplusplus/Token.cpp index bda5ecc5839..828da8da318 100644 --- a/src/shared/cplusplus/Token.cpp +++ b/src/shared/cplusplus/Token.cpp @@ -56,7 +56,7 @@ static const char *token_names[] = { ("<comment>"), ("<doxy comment>"), - ("<identifier>"), ("<int literal>"), ("<float literal>"), ("<char literal>"), + ("<identifier>"), ("<numeric literal>"), ("<char literal>"), ("<wide char literal>"), ("<string literal>"), ("<wide char literal>"), ("<@string literal>"), ("<angle string literal>"), diff --git a/src/shared/cplusplus/Token.h b/src/shared/cplusplus/Token.h index 99b986c7abb..6809468a1a6 100644 --- a/src/shared/cplusplus/Token.h +++ b/src/shared/cplusplus/Token.h @@ -224,9 +224,9 @@ enum Kind { T_AT_THROW, T_AT_TRY, - T_LAST_OBJC_AT_KEYWORD, + T_LAST_OBJC_AT_KEYWORD = T_AT_TRY, - T_FIRST_QT_KEYWORD = T_LAST_OBJC_AT_KEYWORD, + T_FIRST_QT_KEYWORD, // Qt keywords T_SIGNAL = T_FIRST_QT_KEYWORD, @@ -300,7 +300,7 @@ public: { return kind == T_COMMENT || kind == T_DOXY_COMMENT; } inline bool isObjCAtKeyword() const - { return kind >= T_FIRST_OBJC_AT_KEYWORD && kind < T_LAST_OBJC_AT_KEYWORD; } + { return kind >= T_FIRST_OBJC_AT_KEYWORD && kind <= T_LAST_OBJC_AT_KEYWORD; } static const char *name(int kind); -- GitLab