diff --git a/src/lib/component/controller/GraphController.cpp b/src/lib/component/controller/GraphController.cpp index a81e3a49..e11a0e80 100644 --- a/src/lib/component/controller/GraphController.cpp +++ b/src/lib/component/controller/GraphController.cpp @@ -2541,13 +2541,7 @@ void GraphController::createLegendGraph() y += 10; i += 1; - Node* templateNode = addNode(NodeType::NODE_TYPE, L"TemplateType", Vec2i(x, y + dy * ++i)); - Node* templateParameterNode = addNode(NodeType::NODE_TEMPLATE_PARAMETER, L"ParameterType", Vec2i()); - addMember(templateNode, templateParameterNode, ACCESS_TEMPLATE_PARAMETER); - y += 5; - i += 2; - - Node* genericNode = addNode(NodeType::NODE_TYPE, L"GenericType", Vec2i(x, y + dy * ++i)); + Node* genericNode = addNode(NodeType::NODE_TYPE, L"JavaGenericType", Vec2i(x, y + dy * ++i)); Node* genericParameterNode = addNode(NodeType::NODE_TYPE_PARAMETER, L"ParameterType", Vec2i()); addMember(genericNode, genericParameterNode, ACCESS_TYPE_PARAMETER); i += 2; diff --git a/src/lib/data/NodeType.cpp b/src/lib/data/NodeType.cpp index 7d3fbca4..07787d71 100644 --- a/src/lib/data/NodeType.cpp +++ b/src/lib/data/NodeType.cpp @@ -65,8 +65,6 @@ NodeType::Type NodeType::intToType(int value) return NodeType::NODE_ENUM_CONSTANT; case NodeType::NODE_TYPEDEF: return NodeType::NODE_TYPEDEF; - case NodeType::NODE_TEMPLATE_PARAMETER: - return NodeType::NODE_TEMPLATE_PARAMETER; case NodeType::NODE_TYPE_PARAMETER: return NodeType::NODE_TYPE_PARAMETER; case NodeType::NODE_FILE: @@ -118,8 +116,6 @@ std::string NodeType::getReadableTypeString(NodeType::Type type) return "enum constant"; case NodeType::NODE_TYPEDEF: return "typedef"; - case NodeType::NODE_TEMPLATE_PARAMETER: - return "template parameter"; case NodeType::NODE_TYPE_PARAMETER: return "type parameter"; case NodeType::NODE_FILE: @@ -424,7 +420,6 @@ NodeType::StyleType NodeType::getNodeStyle() const case NodeType::NODE_ANNOTATION: case NodeType::NODE_ENUM: case NodeType::NODE_TYPEDEF: - case NodeType::NODE_TEMPLATE_PARAMETER: case NodeType::NODE_TYPE_PARAMETER: case NodeType::NODE_FILE: case NodeType::NODE_MACRO: diff --git a/src/lib/data/NodeType.h b/src/lib/data/NodeType.h index aede7291..c48dadcb 100644 --- a/src/lib/data/NodeType.h +++ b/src/lib/data/NodeType.h @@ -35,7 +35,6 @@ public: NODE_ENUM = 1 << 14, NODE_ENUM_CONSTANT = 1 << 15, NODE_TYPEDEF = 1 << 16, - NODE_TEMPLATE_PARAMETER = 1 << 17, NODE_TYPE_PARAMETER = 1 << 18, NODE_FILE = 1 << 19, diff --git a/src/lib/data/NodeTypeSet.cpp b/src/lib/data/NodeTypeSet.cpp index 4e7d06ee..2028d4f9 100644 --- a/src/lib/data/NodeTypeSet.cpp +++ b/src/lib/data/NodeTypeSet.cpp @@ -188,7 +188,6 @@ const std::vector NodeTypeSet::s_allNodeTypes = { NodeType(NodeType::NODE_ENUM), NodeType(NodeType::NODE_ENUM_CONSTANT), NodeType(NodeType::NODE_TYPEDEF), - NodeType(NodeType::NODE_TEMPLATE_PARAMETER), NodeType(NodeType::NODE_TYPE_PARAMETER), NodeType(NodeType::NODE_FILE), NodeType(NodeType::NODE_MACRO), diff --git a/src/lib/data/parser/ParserClientImpl.cpp b/src/lib/data/parser/ParserClientImpl.cpp index 372762ec..97167bd0 100644 --- a/src/lib/data/parser/ParserClientImpl.cpp +++ b/src/lib/data/parser/ParserClientImpl.cpp @@ -141,8 +141,6 @@ NodeType ParserClientImpl::symbolKindToNodeType(SymbolKind symbolKind) const return NodeType::NODE_PACKAGE; case SYMBOL_STRUCT: return NodeType::NODE_STRUCT; - case SYMBOL_TEMPLATE_PARAMETER: - return NodeType::NODE_TEMPLATE_PARAMETER; case SYMBOL_TYPEDEF: return NodeType::NODE_TYPEDEF; case SYMBOL_TYPE_PARAMETER: diff --git a/src/lib/data/parser/SymbolKind.cpp b/src/lib/data/parser/SymbolKind.cpp index 3615902a..27f4e040 100644 --- a/src/lib/data/parser/SymbolKind.cpp +++ b/src/lib/data/parser/SymbolKind.cpp @@ -34,8 +34,6 @@ SymbolKind intToSymbolKind(int v) return SYMBOL_PACKAGE; case SYMBOL_STRUCT: return SYMBOL_STRUCT; - case SYMBOL_TEMPLATE_PARAMETER: - return SYMBOL_TEMPLATE_PARAMETER; case SYMBOL_TYPEDEF: return SYMBOL_TYPEDEF; case SYMBOL_TYPE_PARAMETER: diff --git a/src/lib/data/parser/SymbolKind.h b/src/lib/data/parser/SymbolKind.h index 17e51702..289d4240 100644 --- a/src/lib/data/parser/SymbolKind.h +++ b/src/lib/data/parser/SymbolKind.h @@ -18,7 +18,6 @@ enum SymbolKind SYMBOL_NAMESPACE = 13, SYMBOL_PACKAGE = 14, SYMBOL_STRUCT = 15, - SYMBOL_TEMPLATE_PARAMETER = 16, SYMBOL_TYPEDEF = 17, SYMBOL_TYPE_PARAMETER = 18, SYMBOL_UNION = 19, diff --git a/src/lib_cxx/data/parser/cxx/name_resolver/CxxDeclNameResolver.h b/src/lib_cxx/data/parser/cxx/name_resolver/CxxDeclNameResolver.h index b7dcb45d..e6e7cb3f 100644 --- a/src/lib_cxx/data/parser/cxx/name_resolver/CxxDeclNameResolver.h +++ b/src/lib_cxx/data/parser/cxx/name_resolver/CxxDeclNameResolver.h @@ -42,9 +42,10 @@ std::vector CxxDeclNameResolver::getTemplateParameterStringsOfPart for (int i = 0; i < templateArgumentList.size(); i++) { const clang::TemplateArgument& templateArgument = templateArgumentList.get(i); + const clang::TemplateArgument::ArgKind argKind = templateArgument.getKind(); if (templateArgument.isDependent()) { - if (templateArgument.getKind() == clang::TemplateArgument::Type && !templateArgument.getAsType().isNull()) + if (argKind == clang::TemplateArgument::Type && !templateArgument.getAsType().isNull()) { const clang::Type* argumentType = templateArgument.getAsType().getTypePtr(); if (const clang::TemplateTypeParmType* ttpt = clang::dyn_cast(argumentType)) @@ -64,7 +65,7 @@ std::vector CxxDeclNameResolver::getTemplateParameterStringsOfPart templateParameterNames.push_back(std::move(CxxTypeName::makeUnsolvedIfNull(CxxTypeNameResolver(this).getName(argumentType))->toString())); } } - else if (templateArgument.getKind() == clang::TemplateArgument::Template && !templateArgument.getAsTemplate().isNull()) + else if (argKind == clang::TemplateArgument::Template && !templateArgument.getAsTemplate().isNull()) { const clang::TemplateTemplateParmDecl* decl = clang::dyn_cast(templateArgument.getAsTemplate().getAsTemplateDecl()); if (decl) diff --git a/src/lib_gui/qt/view/QtCustomTrailView.cpp b/src/lib_gui/qt/view/QtCustomTrailView.cpp index d0879e8e..3fac284c 100644 --- a/src/lib_gui/qt/view/QtCustomTrailView.cpp +++ b/src/lib_gui/qt/view/QtCustomTrailView.cpp @@ -202,7 +202,6 @@ QtCustomTrailView::QtCustomTrailView(ViewLayout* viewLayout) NodeType::NODE_UNION, NodeType::NODE_INTERFACE, NodeType::NODE_TYPEDEF, - NodeType::NODE_TEMPLATE_PARAMETER, NodeType::NODE_TYPE_PARAMETER, NodeType::NODE_ENUM, NodeType::NODE_ENUM_CONSTANT, diff --git a/src/test/CxxParserTestSuite.h b/src/test/CxxParserTestSuite.h index 25fa32f6..e227ad1c 100644 --- a/src/test/CxxParserTestSuite.h +++ b/src/test/CxxParserTestSuite.h @@ -1079,6 +1079,26 @@ public: )); } + //void _test_foofoo() + //{ + // std::shared_ptr client = parseCode( + // "template \n" + // "class vector { };\n" + // "\n" + // "template\n" + // "struct Alloc { };\n" + // "\n" + // "template\n" + // "using Vec = vector>;\n" + // "\n" + // "Vec v;\n" + // ); + + // TS_ASSERT(utility::containsElement( + // client->typeUses, // TODO: record edge between vector> and Alloc (this is an issue because we dont have any typeloc for this edge -.- + // )); + //} + void test_cxx_parser_finds_template_template_parameter_of_template_class() { std::shared_ptr client = parseCode( @@ -1163,11 +1183,11 @@ public: std::shared_ptr client = parseCode( "template \n" "class A\n" - "{\n" - "};\n" + "{\n" // local symbol for brace + "};\n" // local symbol for brace ); - TS_ASSERT_EQUALS(client->templateParameterTypes.size(), 0); + TS_ASSERT_EQUALS(client->localSymbols.size(), 2); TS_ASSERT(utility::containsElement( client->classes, L"A <1:1 <2:7 2:7> 4:1>" )); @@ -2924,7 +2944,7 @@ public: TS_ASSERT(utility::containsElement( client->localSymbols, L"input.cc<1:20> <1:20 1:20>" )); - TS_ASSERT(utility::containsElement( // FIXME: fix FAIL because usage in name qualifier is not recorded + TS_ASSERT(utility::containsElement( // TODO: fix FAIL because usage in name qualifier is not recorded client->localSymbols, L"input.cc<5:20> <5:20 5:20>" )); } @@ -3684,7 +3704,7 @@ public: ); TS_ASSERT(utility::containsElement( - client->typeUses, L"A<&g_p, q> -> P g_p <8:10 8:12>" //FIXME this is completely wrong? should be a normal usage + client->typeUses, L"A<&g_p, q> -> P g_p <8:10 8:12>" // TODO: this is completely wrong? should be a normal usage )); TS_ASSERT(utility::containsElement( client->localSymbols, L"input.cc<7:14> <8:15 8:15>" diff --git a/src/test/helper/TestIntermediateStorage.h b/src/test/helper/TestIntermediateStorage.h index 9128c6f8..717223bd 100644 --- a/src/test/helper/TestIntermediateStorage.h +++ b/src/test/helper/TestIntermediateStorage.h @@ -302,7 +302,6 @@ public: std::vector modules; std::vector structs; std::vector macros; - std::vector templateParameterTypes; std::vector typeParameters; std::vector localSymbols; std::set files; @@ -356,8 +355,6 @@ private: return L"SYMBOL_PACKAGE"; case NodeType::NODE_STRUCT: return L"SYMBOL_STRUCT"; - case NodeType::NODE_TEMPLATE_PARAMETER: - return L"SYMBOL_TEMPLATE_PARAMETER"; case NodeType::NODE_TYPEDEF: return L"SYMBOL_TYPEDEF"; case NodeType::NODE_TYPE_PARAMETER: @@ -442,8 +439,6 @@ private: return &structs; case NodeType::NODE_MACRO: return ¯os; - case NodeType::NODE_TEMPLATE_PARAMETER: - return &templateParameterTypes; case NodeType::NODE_TYPE_PARAMETER: return &typeParameters; default: