summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2012-02-07 15:59:08 +0100
committerErik Verbruggen <erik.verbruggen@nokia.com>2012-02-09 13:32:46 +0100
commitdb25f9a13671015b33f57e8c2338c10ddc7c7202 (patch)
treec9d0707c3ac29185e3d3be7aef4ee8aaadeac4f2 /src/plugins/cpptools
parenteb521323ca41766c6ea3c785db4fb7eeaf2b4df1 (diff)
downloadqt-creator-db25f9a13671015b33f57e8c2338c10ddc7c7202.tar.gz
C++: Added highlighting for labels.
Change-Id: I559a3112d2aa0a3c09554f8da8b7917f9aa27944 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r--src/plugins/cpptools/cppchecksymbols.cpp17
-rw-r--r--src/plugins/cpptools/cppchecksymbols.h3
-rw-r--r--src/plugins/cpptools/cppsemanticinfo.h6
3 files changed, 24 insertions, 2 deletions
diff --git a/src/plugins/cpptools/cppchecksymbols.cpp b/src/plugins/cpptools/cppchecksymbols.cpp
index 84e99548a1..82e72452c8 100644
--- a/src/plugins/cpptools/cppchecksymbols.cpp
+++ b/src/plugins/cpptools/cppchecksymbols.cpp
@@ -765,6 +765,23 @@ bool CheckSymbols::visit(MemInitializerAST *ast)
return false;
}
+bool CheckSymbols::visit(GotoStatementAST *ast)
+{
+ if (ast->identifier_token)
+ addUse(ast->identifier_token, SemanticInfo::LabelUse);
+
+ return false;
+}
+
+bool CheckSymbols::visit(LabeledStatementAST *ast)
+{
+ if (ast->label_token)
+ addUse(ast->label_token, SemanticInfo::LabelUse);
+
+ accept(ast->statement);
+ return false;
+}
+
bool CheckSymbols::visit(FunctionDefinitionAST *ast)
{
AST *thisFunction = _astStack.takeLast();
diff --git a/src/plugins/cpptools/cppchecksymbols.h b/src/plugins/cpptools/cppchecksymbols.h
index fb50fcfd52..d3b638ec70 100644
--- a/src/plugins/cpptools/cppchecksymbols.h
+++ b/src/plugins/cpptools/cppchecksymbols.h
@@ -154,6 +154,9 @@ protected:
virtual bool visit(MemInitializerAST *ast);
+ virtual bool visit(GotoStatementAST *ast);
+ virtual bool visit(LabeledStatementAST *ast);
+
NameAST *declaratorId(DeclaratorAST *ast) const;
void flush();
diff --git a/src/plugins/cpptools/cppsemanticinfo.h b/src/plugins/cpptools/cppsemanticinfo.h
index 915ffad1f5..af57130071 100644
--- a/src/plugins/cpptools/cppsemanticinfo.h
+++ b/src/plugins/cpptools/cppsemanticinfo.h
@@ -46,11 +46,13 @@ class CPPTOOLS_EXPORT SemanticInfo
{
public:
enum UseKind {
- TypeUse = 0,
+ Unknown = 0,
+ TypeUse,
LocalUse,
FieldUse,
StaticUse,
- VirtualMethodUse
+ VirtualMethodUse,
+ LabelUse
};
typedef TextEditor::SemanticHighlighter::Result Use;