aboutsummaryrefslogtreecommitdiffstats
path: root/overloaddata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'overloaddata.cpp')
-rw-r--r--overloaddata.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/overloaddata.cpp b/overloaddata.cpp
index 11a2b6eaf..58d0dd065 100644
--- a/overloaddata.cpp
+++ b/overloaddata.cpp
@@ -68,6 +68,9 @@ void OverloadData::sortNextOverloads()
// Create the graph of type dependencies based on implicity conversions.
Graph graph(reverseMap.count());
+ bool haveInt = map.contains("int");
+ bool haveLong = map.contains("long");
+ bool haveBool = map.contains("bool");
foreach(OverloadData* ov, m_nextOverloadData) {
const AbstractMetaType* targetType = ov->argType();
@@ -106,10 +109,16 @@ void OverloadData::sortNextOverloads()
if (checkPyObject && !targetType->typeEntry()->name().contains("PyObject")) {
graph.addEdge(map[targetType->typeEntry()->name()], pyobjectIndex);
}
+ if (targetType->typeEntry()->isEnum() && haveInt)
+ graph.addEdge(map[targetType->typeEntry()->name()], map["int"]);
+ if (targetType->typeEntry()->isEnum() && haveLong)
+ graph.addEdge(map[targetType->typeEntry()->name()], map["long"]);
+ if (targetType->typeEntry()->isEnum() && haveBool)
+ graph.addEdge(map[targetType->typeEntry()->name()], map["bool"]);
}
// Special case for double(int i) (not tracked by m_generator->implicitConversions
- if (map.contains("int")) {
+ if (haveInt) {
if (map.contains("float"))
graph.addEdge(map["float"], map["int"]);
if (map.contains("double"))
@@ -118,7 +127,7 @@ void OverloadData::sortNextOverloads()
graph.addEdge(map["bool"], map["int"]);
}
- if (map.contains("long")) {
+ if (haveLong) {
if (map.contains("float"))
graph.addEdge(map["float"], map["long"]);
if (map.contains("double"))