diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/cplusplus/LookupContext.cpp | 4 | ||||
-rw-r--r-- | src/plugins/cpptools/cppchecksymbols.cpp | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 95399bc067..b73c22b657 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -335,6 +335,10 @@ QList<LookupItem> LookupContext::lookup(const Name *name, Scope *scope) const if (ClassOrNamespace *binding = bindings()->lookupType(fun)) { candidates = binding->find(name); + // try find this name in parent class + while (candidates.isEmpty() && (binding = binding->parent())) + candidates = binding->find(name); + if (! candidates.isEmpty()) return candidates; } diff --git a/src/plugins/cpptools/cppchecksymbols.cpp b/src/plugins/cpptools/cppchecksymbols.cpp index 8d93045789..5f7b6f04d7 100644 --- a/src/plugins/cpptools/cppchecksymbols.cpp +++ b/src/plugins/cpptools/cppchecksymbols.cpp @@ -1164,6 +1164,7 @@ bool CheckSymbols::maybeAddTypeOrStatic(const QList<LookupItem> &candidates, Nam else if (c->isUsingNamespaceDirective()) // ... and using namespace directives. continue; else if (c->isTypedef() || c->isNamespace() || + c->isStatic() || //consider also static variable c->isClass() || c->isEnum() || isTemplateClass(c) || c->isForwardClassDeclaration() || c->isTypenameArgument() || c->enclosingEnum() != 0) { @@ -1174,6 +1175,9 @@ bool CheckSymbols::maybeAddTypeOrStatic(const QList<LookupItem> &candidates, Nam UseKind kind = SemanticInfo::TypeUse; if (c->enclosingEnum() != 0) kind = SemanticInfo::EnumerationUse; + else if (c->isStatic()) + // treat static variable as a field(highlighting) + kind = SemanticInfo::FieldUse; const Use use(line, column, length, kind); addUse(use); |