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:
@@ -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;
|
||||
|
||||
+19
-18
@@ -18,26 +18,27 @@ public:
|
||||
typedef int EdgeTypeMask;
|
||||
enum EdgeType : EdgeTypeMask
|
||||
{
|
||||
EDGE_NONE = 0x0,
|
||||
EDGE_MEMBER = 0x1,
|
||||
EDGE_TYPE_OF = 0x2,
|
||||
EDGE_RETURN_TYPE_OF = 0x4, // unused: see Storage::addFunctionNode()
|
||||
EDGE_PARAMETER_TYPE_OF = 0x8, // unused: see Storage::addFunctionNode()
|
||||
EDGE_TYPE_USAGE = 0x10,
|
||||
EDGE_USAGE = 0x20,
|
||||
EDGE_CALL = 0x40,
|
||||
EDGE_INHERITANCE = 0x80,
|
||||
EDGE_OVERRIDE = 0x100,
|
||||
EDGE_TYPEDEF_OF = 0x200,
|
||||
EDGE_TEMPLATE_PARAMETER = 0x400,
|
||||
EDGE_TEMPLATE_ARGUMENT = 0x800,
|
||||
EDGE_TEMPLATE_DEFAULT_ARGUMENT = 0x1000,
|
||||
EDGE_TEMPLATE_SPECIALIZATION_OF = 0x2000,
|
||||
EDGE_NONE = 0x0,
|
||||
EDGE_MEMBER = 0x1,
|
||||
EDGE_TYPE_OF = 0x2,
|
||||
EDGE_RETURN_TYPE_OF = 0x4, // unused: see Storage::addFunctionNode()
|
||||
EDGE_PARAMETER_TYPE_OF = 0x8, // unused: see Storage::addFunctionNode()
|
||||
EDGE_TYPE_USAGE = 0x10,
|
||||
EDGE_USAGE = 0x20,
|
||||
EDGE_CALL = 0x40,
|
||||
EDGE_INHERITANCE = 0x80,
|
||||
EDGE_OVERRIDE = 0x100,
|
||||
EDGE_TYPEDEF_OF = 0x200,
|
||||
EDGE_TEMPLATE_PARAMETER = 0x400,
|
||||
EDGE_TEMPLATE_ARGUMENT = 0x800,
|
||||
EDGE_TEMPLATE_DEFAULT_ARGUMENT = 0x1000,
|
||||
EDGE_TEMPLATE_SPECIALIZATION_OF = 0x2000,
|
||||
EDGE_TEMPLATE_MEMBER_SPECIALIZATION_OF = 0x4000,
|
||||
|
||||
EDGE_INCLUDE = 0x4000,
|
||||
EDGE_INCLUDE = 0x8000,
|
||||
|
||||
EDGE_AGGREGATION = 0x8000,
|
||||
EDGE_MACRO_USAGE = 0x10000,
|
||||
EDGE_AGGREGATION = 0x10000,
|
||||
EDGE_MACRO_USAGE = 0x20000,
|
||||
};
|
||||
|
||||
static int typeToInt(EdgeType type);
|
||||
|
||||
Reference in New Issue
Block a user