data: Template Member Specialization Edge

* Added a new edge that connects a method of an implicitly specialized template class to its definition in the unspecialized template class.
* Added a test case for this.
* Made methods that have an invalid source location stored as undefined.
This commit is contained in:
malte_langkabel
2015-10-13 13:29:36 +02:00
parent 27bf5108ab
commit e61171cc85
8 changed files with 133 additions and 40 deletions
+7 -3
View File
@@ -46,10 +46,12 @@ Edge::EdgeType Edge::intToType(int value)
case 0x2000:
return EDGE_TEMPLATE_SPECIALIZATION_OF;
case 0x4000:
return EDGE_INCLUDE;
return EDGE_TEMPLATE_MEMBER_SPECIALIZATION_OF;
case 0x8000:
return EDGE_AGGREGATION;
return EDGE_INCLUDE;
case 0x10000:
return EDGE_AGGREGATION;
case 0x20000:
return EDGE_MACRO_USAGE;
}
@@ -194,6 +196,8 @@ std::string Edge::getTypeString(EdgeType type)
return "template_default_argument";
case EDGE_TEMPLATE_SPECIALIZATION_OF:
return "template_specialization";
case EDGE_TEMPLATE_MEMBER_SPECIALIZATION_OF:
return "template_member_specialization";
case EDGE_INCLUDE:
return "include";
case EDGE_AGGREGATION:
@@ -236,7 +240,7 @@ std::ostream& operator<<(std::ostream& ostream, const Edge& edge)
return ostream;
}
bool Edge::checkType() const
bool Edge::checkType() const // TODO: remove this function
{
Node::NodeTypeMask complexTypeMask = Node::NODE_CLASS | Node::NODE_STRUCT | Node:: NODE_TEMPLATE_PARAMETER_TYPE;
Node::NodeTypeMask typeMask = Node::NODE_ENUM | Node::NODE_TYPEDEF | complexTypeMask;