src: updated SymbolKind enum

* removed SymbolKinds for Parameter and LocalSymbol, because these are not stored as symbols inside the database
* added Module symbol kind for Python
This commit is contained in:
mlangkabel
2018-12-10 16:26:38 +01:00
parent 6d5937d18f
commit 21d947ed6c
17 changed files with 90 additions and 58 deletions
@@ -349,6 +349,9 @@
<normal>#B05151</normal> <normal>#B05151</normal>
</hatching> </hatching>
</namespace> </namespace>
<module>
<like>namespace</like>
</module>
<package> <package>
<like>namespace</like> <like>namespace</like>
</package> </package>
+3
View File
@@ -338,6 +338,9 @@
<normal>#FFDEDE</normal> <normal>#FFDEDE</normal>
</hatching> </hatching>
</namespace> </namespace>
<module>
<like>namespace</like>
</module>
<package> <package>
<like>namespace</like> <like>namespace</like>
</package> </package>
+3
View File
@@ -341,6 +341,9 @@
<normal>#521B1F</normal> <normal>#521B1F</normal>
</hatching> </hatching>
</namespace> </namespace>
<module>
<like>namespace</like>
</module>
<package> <package>
<like>namespace</like> <like>namespace</like>
</package> </package>
@@ -11,18 +11,17 @@ public enum SymbolKind
FUNCTION(7), FUNCTION(7),
GLOBAL_VARIABLE(8), GLOBAL_VARIABLE(8),
INTERFACE(9), INTERFACE(9),
LOCAL_VARIABLE(10), MACRO(10),
MACRO(11), METHOD(11),
METHOD(12), MODULE(12),
NAMESPACE(13), NAMESPACE(13),
PACKAGE(14), PACKAGE(14),
PARAMETER(15), STRUCT(15),
STRUCT(16), TEMPLATE_PARAMETER(16),
TEMPLATE_PARAMETER(17), TYPEDEF(17),
TYPEDEF(18), TYPE_PARAMETER(18),
TYPE_PARAMETER(19), UNION(19),
UNION(20), TYPE_MAX(20);
TYPE_MAX(21);
private final int m_value; private final int m_value;
@@ -2377,6 +2377,8 @@ void GraphController::createLegendGraph()
addNode(NodeType::NODE_MACRO, L"Macro", Vec2i(x, y + dy * ++i)); addNode(NodeType::NODE_MACRO, L"Macro", Vec2i(x, y + dy * ++i));
addNode(NodeType::NODE_ANNOTATION, L"Annotation", Vec2i(x, y + dy * ++i)); addNode(NodeType::NODE_ANNOTATION, L"Annotation", Vec2i(x, y + dy * ++i));
addNode(NodeType::NODE_MODULE, L"module", Vec2i(x, y + dy * ++i));
y -= 15;
addNode(NodeType::NODE_NAMESPACE, L"namespace", Vec2i(x, y + dy * ++i)); addNode(NodeType::NODE_NAMESPACE, L"namespace", Vec2i(x, y + dy * ++i));
y -= 15; y -= 15;
addNode(NodeType::NODE_PACKAGE, L"package", Vec2i(x, y + dy * ++i)); addNode(NodeType::NODE_PACKAGE, L"package", Vec2i(x, y + dy * ++i));
+10
View File
@@ -9,6 +9,7 @@ std::vector<NodeType> NodeType::getOverviewBundleNodeTypesOrdered()
NodeType(NodeType::NODE_FILE), NodeType(NodeType::NODE_FILE),
NodeType(NodeType::NODE_MACRO), NodeType(NodeType::NODE_MACRO),
NodeType(NodeType::NODE_ANNOTATION), NodeType(NodeType::NODE_ANNOTATION),
NodeType(NodeType::NODE_MODULE),
NodeType(NodeType::NODE_NAMESPACE), NodeType(NodeType::NODE_NAMESPACE),
NodeType(NodeType::NODE_PACKAGE), NodeType(NodeType::NODE_PACKAGE),
NodeType(NodeType::NODE_CLASS), NodeType(NodeType::NODE_CLASS),
@@ -36,6 +37,8 @@ NodeType::Type NodeType::intToType(int value)
return NodeType::NODE_TYPE; return NodeType::NODE_TYPE;
case NodeType::NODE_BUILTIN_TYPE: case NodeType::NODE_BUILTIN_TYPE:
return NodeType::NODE_BUILTIN_TYPE; return NodeType::NODE_BUILTIN_TYPE;
case NodeType::NODE_MODULE:
return NodeType::NODE_MODULE;
case NodeType::NODE_NAMESPACE: case NodeType::NODE_NAMESPACE:
return NodeType::NODE_NAMESPACE; return NodeType::NODE_NAMESPACE;
case NodeType::NODE_PACKAGE: case NodeType::NODE_PACKAGE:
@@ -87,6 +90,8 @@ std::string NodeType::getReadableTypeString(NodeType::Type type)
return "built-in type"; return "built-in type";
case NodeType::NODE_TYPE: case NodeType::NODE_TYPE:
return "type"; return "type";
case NodeType::NODE_MODULE:
return "module";
case NodeType::NODE_NAMESPACE: case NodeType::NODE_NAMESPACE:
return "namespace"; return "namespace";
case NodeType::NODE_PACKAGE: case NodeType::NODE_PACKAGE:
@@ -211,6 +216,7 @@ bool NodeType::isInheritable() const
bool NodeType::isPackage() const bool NodeType::isPackage() const
{ {
const NodeType::TypeMask mask = const NodeType::TypeMask mask =
NodeType::NODE_MODULE |
NodeType::NODE_NAMESPACE | NodeType::NODE_NAMESPACE |
NodeType::NODE_PACKAGE; NodeType::NODE_PACKAGE;
return ((m_type & mask) > 0); return ((m_type & mask) > 0);
@@ -288,6 +294,7 @@ bool NodeType::hasSearchFilter() const
{ {
const NodeType::TypeMask mask = const NodeType::TypeMask mask =
NodeType::NODE_BUILTIN_TYPE | NodeType::NODE_BUILTIN_TYPE |
NodeType::NODE_MODULE |
NodeType::NODE_NAMESPACE | NodeType::NODE_NAMESPACE |
NodeType::NODE_PACKAGE | NodeType::NODE_PACKAGE |
NodeType::NODE_STRUCT | NodeType::NODE_STRUCT |
@@ -327,6 +334,8 @@ Tree<NodeType::BundleInfo> NodeType::getOverviewBundleTree() const
)); ));
return tree; return tree;
} }
case NodeType::NODE_MODULE:
return Tree<BundleInfo>(BundleInfo(L"Modules"));
case NodeType::NODE_PACKAGE: case NodeType::NODE_PACKAGE:
return Tree<BundleInfo>(BundleInfo(L"Packages")); return Tree<BundleInfo>(BundleInfo(L"Packages"));
case NodeType::NODE_CLASS: case NodeType::NODE_CLASS:
@@ -401,6 +410,7 @@ NodeType::StyleType NodeType::getNodeStyle() const
{ {
switch (m_type) switch (m_type)
{ {
case NodeType::NODE_MODULE:
case NodeType::NODE_NAMESPACE: case NodeType::NODE_NAMESPACE:
case NodeType::NODE_PACKAGE: case NodeType::NODE_PACKAGE:
return STYLE_PACKAGE; return STYLE_PACKAGE;
+19 -18
View File
@@ -21,25 +21,26 @@ public:
NODE_TYPE = 1 << 1, NODE_TYPE = 1 << 1,
NODE_BUILTIN_TYPE = 1 << 2, NODE_BUILTIN_TYPE = 1 << 2,
NODE_NAMESPACE = 1 << 3, NODE_MODULE = 1 << 3,
NODE_PACKAGE = 1 << 4, NODE_NAMESPACE = 1 << 4,
NODE_STRUCT = 1 << 5, NODE_PACKAGE = 1 << 5,
NODE_CLASS = 1 << 6, NODE_STRUCT = 1 << 6,
NODE_INTERFACE = 1 << 7, NODE_CLASS = 1 << 7,
NODE_ANNOTATION = 1 << 8, NODE_INTERFACE = 1 << 8,
NODE_GLOBAL_VARIABLE = 1 << 9, NODE_ANNOTATION = 1 << 9,
NODE_FIELD = 1 << 10, NODE_GLOBAL_VARIABLE = 1 << 10,
NODE_FUNCTION = 1 << 11, NODE_FIELD = 1 << 11,
NODE_METHOD = 1 << 12, NODE_FUNCTION = 1 << 12,
NODE_ENUM = 1 << 13, NODE_METHOD = 1 << 13,
NODE_ENUM_CONSTANT = 1 << 14, NODE_ENUM = 1 << 14,
NODE_TYPEDEF = 1 << 15, NODE_ENUM_CONSTANT = 1 << 15,
NODE_TEMPLATE_PARAMETER = 1 << 16, NODE_TYPEDEF = 1 << 16,
NODE_TYPE_PARAMETER = 1 << 17, NODE_TEMPLATE_PARAMETER = 1 << 17,
NODE_TYPE_PARAMETER = 1 << 18,
NODE_FILE = 1 << 18, NODE_FILE = 1 << 19,
NODE_MACRO = 1 << 19, NODE_MACRO = 1 << 20,
NODE_UNION = 1 << 20, NODE_UNION = 1 << 21,
NODE_MAX_VALUE = NODE_UNION NODE_MAX_VALUE = NODE_UNION
}; };
+1
View File
@@ -176,6 +176,7 @@ const std::vector<NodeType> NodeTypeSet::s_allNodeTypes = {
NodeType(NodeType::NODE_SYMBOL), NodeType(NodeType::NODE_SYMBOL),
NodeType(NodeType::NODE_TYPE), NodeType(NodeType::NODE_TYPE),
NodeType(NodeType::NODE_BUILTIN_TYPE), NodeType(NodeType::NODE_BUILTIN_TYPE),
NodeType(NodeType::NODE_MODULE),
NodeType(NodeType::NODE_NAMESPACE), NodeType(NodeType::NODE_NAMESPACE),
NodeType(NodeType::NODE_PACKAGE), NodeType(NodeType::NODE_PACKAGE),
NodeType(NodeType::NODE_STRUCT), NodeType(NodeType::NODE_STRUCT),
+2
View File
@@ -120,6 +120,8 @@ NodeType ParserClientImpl::symbolKindToNodeType(SymbolKind symbolKind) const
return NodeType::NODE_MACRO; return NodeType::NODE_MACRO;
case SYMBOL_METHOD: case SYMBOL_METHOD:
return NodeType::NODE_METHOD; return NodeType::NODE_METHOD;
case SYMBOL_MODULE:
return NodeType::NODE_MODULE;
case SYMBOL_NAMESPACE: case SYMBOL_NAMESPACE:
return NodeType::NODE_NAMESPACE; return NodeType::NODE_NAMESPACE;
case SYMBOL_PACKAGE: case SYMBOL_PACKAGE:
+2 -5
View File
@@ -22,18 +22,16 @@ SymbolKind intToSymbolKind(int v)
return SYMBOL_GLOBAL_VARIABLE; return SYMBOL_GLOBAL_VARIABLE;
case SYMBOL_INTERFACE: case SYMBOL_INTERFACE:
return SYMBOL_INTERFACE; return SYMBOL_INTERFACE;
case SYMBOL_LOCAL_VARIABLE:
return SYMBOL_LOCAL_VARIABLE;
case SYMBOL_MACRO: case SYMBOL_MACRO:
return SYMBOL_MACRO; return SYMBOL_MACRO;
case SYMBOL_METHOD: case SYMBOL_METHOD:
return SYMBOL_METHOD; return SYMBOL_METHOD;
case SYMBOL_MODULE:
return SYMBOL_MODULE;
case SYMBOL_NAMESPACE: case SYMBOL_NAMESPACE:
return SYMBOL_NAMESPACE; return SYMBOL_NAMESPACE;
case SYMBOL_PACKAGE: case SYMBOL_PACKAGE:
return SYMBOL_PACKAGE; return SYMBOL_PACKAGE;
case SYMBOL_PARAMETER:
return SYMBOL_PARAMETER;
case SYMBOL_STRUCT: case SYMBOL_STRUCT:
return SYMBOL_STRUCT; return SYMBOL_STRUCT;
case SYMBOL_TEMPLATE_PARAMETER: case SYMBOL_TEMPLATE_PARAMETER:
@@ -52,4 +50,3 @@ int symbolKindToInt(SymbolKind t)
{ {
return t; return t;
} }
+9 -10
View File
@@ -12,18 +12,17 @@ enum SymbolKind
SYMBOL_FUNCTION = 7, SYMBOL_FUNCTION = 7,
SYMBOL_GLOBAL_VARIABLE = 8, SYMBOL_GLOBAL_VARIABLE = 8,
SYMBOL_INTERFACE = 9, SYMBOL_INTERFACE = 9,
SYMBOL_LOCAL_VARIABLE = 10, SYMBOL_MACRO = 10,
SYMBOL_MACRO = 11, SYMBOL_METHOD = 11,
SYMBOL_METHOD = 12, SYMBOL_MODULE = 12,
SYMBOL_NAMESPACE = 13, SYMBOL_NAMESPACE = 13,
SYMBOL_PACKAGE = 14, SYMBOL_PACKAGE = 14,
SYMBOL_PARAMETER = 15, SYMBOL_STRUCT = 15,
SYMBOL_STRUCT = 16, SYMBOL_TEMPLATE_PARAMETER = 16,
SYMBOL_TEMPLATE_PARAMETER = 17, SYMBOL_TYPEDEF = 17,
SYMBOL_TYPEDEF = 18, SYMBOL_TYPE_PARAMETER = 18,
SYMBOL_TYPE_PARAMETER = 19, SYMBOL_UNION = 19,
SYMBOL_UNION = 20, SYMBOL_KIND_MAX = 20
SYMBOL_KIND_MAX = 21
}; };
SymbolKind intToSymbolKind(int v); SymbolKind intToSymbolKind(int v);
@@ -11,7 +11,7 @@
#include "SourceLocationFile.h" #include "SourceLocationFile.h"
#include "utilityString.h" #include "utilityString.h"
const size_t SqliteIndexStorage::s_storageVersion = 21; const size_t SqliteIndexStorage::s_storageVersion = 22;
namespace namespace
{ {
@@ -122,8 +122,7 @@ void CxxAstVisitorComponentIndexer::beginTraverseLambdaCapture(clang::LambdaExpr
if ((!lambdaExpr->isInitCapture(capture)) && (capture->capturesVariable())) if ((!lambdaExpr->isInitCapture(capture)) && (capture->capturesVariable()))
{ {
clang::VarDecl* d = capture->getCapturedVar(); clang::VarDecl* d = capture->getCapturedVar();
SymbolKind symbolKind = utility::getSymbolKind(d); if (utility::isLocalVariable(d) || utility::isParameter(d))
if (symbolKind == SYMBOL_LOCAL_VARIABLE || symbolKind == SYMBOL_PARAMETER)
{ {
if (!d->getNameAsString().empty()) // don't record anonymous parameters if (!d->getNameAsString().empty()) // don't record anonymous parameters
{ {
@@ -205,8 +204,7 @@ void CxxAstVisitorComponentIndexer::visitVarDecl(clang::VarDecl* d)
{ {
if (getAstVisitor()->shouldVisitDecl(d)) if (getAstVisitor()->shouldVisitDecl(d))
{ {
SymbolKind symbolKind = utility::getSymbolKind(d); if (utility::isLocalVariable(d) || utility::isParameter(d))
if (symbolKind == SYMBOL_LOCAL_VARIABLE || symbolKind == SYMBOL_PARAMETER)
{ {
if (!d->getNameAsString().empty()) // don't record anonymous parameters if (!d->getNameAsString().empty()) // don't record anonymous parameters
{ {
@@ -215,6 +213,7 @@ void CxxAstVisitorComponentIndexer::visitVarDecl(clang::VarDecl* d)
} }
else else
{ {
const SymbolKind symbolKind = utility::getSymbolKind(d);
const ParseLocation location = getParseLocation(d->getLocation()); const ParseLocation location = getParseLocation(d->getLocation());
Id symbolId = getOrCreateSymbolId(d); Id symbolId = getOrCreateSymbolId(d);
+15 -9
View File
@@ -85,15 +85,25 @@ SymbolKind utility::convertTagKind(const clang::TagTypeKind tagKind)
} }
} }
bool utility::isLocalVariable(const clang::VarDecl* d)
{
if (!llvm::isa<clang::ParmVarDecl>(d) && !(d->getParentFunctionOrMethod() == nullptr))
{
return true;
}
return false;
}
bool utility::isParameter(const clang::VarDecl* d)
{
return llvm::isa<clang::ParmVarDecl>(d);
}
SymbolKind utility::getSymbolKind(const clang::VarDecl* d) SymbolKind utility::getSymbolKind(const clang::VarDecl* d)
{ {
SymbolKind symbolKind = SYMBOL_KIND_MAX; SymbolKind symbolKind = SYMBOL_KIND_MAX;
if (llvm::isa<clang::ParmVarDecl>(d)) if (d->getParentFunctionOrMethod() == nullptr)
{
symbolKind = SYMBOL_PARAMETER;
}
else if (d->getParentFunctionOrMethod() == nullptr)
{ {
if (d->getAccess() == clang::AS_none) if (d->getAccess() == clang::AS_none)
{ {
@@ -104,10 +114,6 @@ SymbolKind utility::getSymbolKind(const clang::VarDecl* d)
symbolKind = SYMBOL_FIELD; symbolKind = SYMBOL_FIELD;
} }
} }
else
{
symbolKind = SYMBOL_LOCAL_VARIABLE;
}
return symbolKind; return symbolKind;
} }
@@ -24,6 +24,8 @@ namespace utility
bool isImplicit(const clang::Decl* d); bool isImplicit(const clang::Decl* d);
AccessKind convertAccessSpecifier(clang::AccessSpecifier access); AccessKind convertAccessSpecifier(clang::AccessSpecifier access);
SymbolKind convertTagKind(const clang::TagTypeKind tagKind); SymbolKind convertTagKind(const clang::TagTypeKind tagKind);
bool isLocalVariable(const clang::VarDecl* d);
bool isParameter(const clang::VarDecl* d);
SymbolKind getSymbolKind(const clang::VarDecl* d); SymbolKind getSymbolKind(const clang::VarDecl* d);
std::wstring getFileNameOfFileEntry(const clang::FileEntry* entry); std::wstring getFileNameOfFileEntry(const clang::FileEntry* entry);
+1 -1
View File
@@ -171,7 +171,7 @@ void QtGraphView::initView()
m_groupNamespaceButton->setObjectName("group_left_button"); m_groupNamespaceButton->setObjectName("group_left_button");
m_groupFileButton->setToolTip("group by file"); m_groupFileButton->setToolTip("group by file");
m_groupNamespaceButton->setToolTip("group by package/namespace"); m_groupNamespaceButton->setToolTip("group by package/namespace/module");
m_groupFileButton->setCheckable(true); m_groupFileButton->setCheckable(true);
m_groupNamespaceButton->setCheckable(true); m_groupNamespaceButton->setCheckable(true);
@@ -299,6 +299,7 @@ public:
std::vector<std::wstring> globalVariables; std::vector<std::wstring> globalVariables;
std::vector<std::wstring> methods; std::vector<std::wstring> methods;
std::vector<std::wstring> namespaces; std::vector<std::wstring> namespaces;
std::vector<std::wstring> modules;
std::vector<std::wstring> structs; std::vector<std::wstring> structs;
std::vector<std::wstring> macros; std::vector<std::wstring> macros;
std::vector<std::wstring> templateParameterTypes; std::vector<std::wstring> templateParameterTypes;
@@ -349,6 +350,8 @@ private:
return L"SYMBOL_MACRO"; return L"SYMBOL_MACRO";
case NodeType::NODE_METHOD: case NodeType::NODE_METHOD:
return L"SYMBOL_METHOD"; return L"SYMBOL_METHOD";
case NodeType::NODE_MODULE:
return L"SYMBOL_MODULE";
case NodeType::NODE_NAMESPACE: case NodeType::NODE_NAMESPACE:
return L"SYMBOL_NAMESPACE"; return L"SYMBOL_NAMESPACE";
case NodeType::NODE_PACKAGE: case NodeType::NODE_PACKAGE:
@@ -437,6 +440,8 @@ private:
return &globalVariables; return &globalVariables;
case NodeType::NODE_METHOD: case NodeType::NODE_METHOD:
return &methods; return &methods;
case NodeType::NODE_MODULE:
return &modules;
case NodeType::NODE_NAMESPACE: case NodeType::NODE_NAMESPACE:
return &namespaces; return &namespaces;
case NodeType::NODE_STRUCT: case NodeType::NODE_STRUCT: