aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--abstractmetalang.cpp7
-rw-r--r--abstractmetalang.h6
2 files changed, 11 insertions, 2 deletions
diff --git a/abstractmetalang.cpp b/abstractmetalang.cpp
index 509a7c1d2..3b7adb167 100644
--- a/abstractmetalang.cpp
+++ b/abstractmetalang.cpp
@@ -709,6 +709,11 @@ QString AbstractMetaFunction::argumentName(int index, bool create, const Abstrac
return m_arguments[--index]->name();
}
+bool AbstractMetaFunction::isCallOperator() const
+{
+ return m_name == "operator()";
+}
+
bool AbstractMetaFunction::hasInjectedCode() const
{
foreach (const FunctionModification mod, modifications(ownerClass())) {
@@ -855,7 +860,7 @@ bool AbstractMetaFunction::isOtherOperator() const
int AbstractMetaFunction::arityOfOperator() const
{
- if (!isOperatorOverload())
+ if (!isOperatorOverload() || isCallOperator())
return -1;
int arity = m_arguments.size();
diff --git a/abstractmetalang.h b/abstractmetalang.h
index 4f1f25400..b58a00f24 100644
--- a/abstractmetalang.h
+++ b/abstractmetalang.h
@@ -804,7 +804,8 @@ public:
m_reverse(false),
m_userAdded(false),
m_explicit(false),
- m_pointerOperator(false)
+ m_pointerOperator(false),
+ m_isCallOperator(false)
{
}
@@ -1160,6 +1161,8 @@ public:
{
m_typeEntry = typeEntry;
}
+
+ bool isCallOperator() const;
private:
QString m_name;
QString m_originalName;
@@ -1182,6 +1185,7 @@ private:
uint m_userAdded : 1;
uint m_explicit : 1;
uint m_pointerOperator : 1;
+ uint m_isCallOperator : 1;
};