aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2012-01-18 13:23:16 +0100
committerQt by Nokia <qt-info@nokia.com>2012-01-20 23:35:18 +0100
commitdfad4902b7227540baa2a15f894fe8937c3c6e15 (patch)
tree4df0ba8edd593afddc310fa20e1388f3f11ab52b
parent846b66d46a1e0f4f0baf9bed387c588f6faf8e0c (diff)
Add QJSValue::isCallable() function
This replaces the isFunction() function. isFunction() will be removed. It's possible that objects are callable even if they aren't Function instances. Also, "isCallable" is consistent with call(). Task-number: QTBUG-23604 Change-Id: I42e0ab2ad9dc84e7793199254bbd89d5c9466e6a Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
-rw-r--r--src/declarative/qml/v8/qjsvalue.cpp18
-rw-r--r--src/declarative/qml/v8/qjsvalue.h1
-rw-r--r--tests/auto/declarative/qjsengine/tst_qjsengine.cpp170
-rw-r--r--tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp42
4 files changed, 122 insertions, 109 deletions
diff --git a/src/declarative/qml/v8/qjsvalue.cpp b/src/declarative/qml/v8/qjsvalue.cpp
index 482216ac49..a43dd33f14 100644
--- a/src/declarative/qml/v8/qjsvalue.cpp
+++ b/src/declarative/qml/v8/qjsvalue.cpp
@@ -71,7 +71,7 @@
Object values have an internal \c{prototype} property, which can be
accessed with prototype() and setPrototype().
- Function objects (objects for which isFunction() returns true) can
+ Function objects (objects for which isCallable()) returns true) can
be invoked by calling call(). Constructor functions can be used to
construct new objects by calling construct().
@@ -461,11 +461,23 @@ bool QJSValue::isObject() const
}
/*!
- Returns true if this QJSValue is a function; otherwise returns
- false.
+ Returns true if this QJSValue can be called a function, otherwise
+ returns false.
\sa call()
*/
+bool QJSValue::isCallable() const
+{
+ Q_D(const QJSValue);
+ QScriptIsolate api(d->engine());
+ return d->isCallable();
+}
+
+/*!
+ \obsolete
+
+ Use isCallable() instead.
+*/
bool QJSValue::isFunction() const
{
Q_D(const QJSValue);
diff --git a/src/declarative/qml/v8/qjsvalue.h b/src/declarative/qml/v8/qjsvalue.h
index 4467cef354..8a15c4e0f2 100644
--- a/src/declarative/qml/v8/qjsvalue.h
+++ b/src/declarative/qml/v8/qjsvalue.h
@@ -140,6 +140,7 @@ public:
QJSValue::PropertyFlags propertyFlags(const QString &name) const;
+ bool isCallable() const;
QJSValue call(const QJSValue &thisObject = QJSValue(),
const QJSValueList &args = QJSValueList());
QJSValue construct(const QJSValueList &args = QJSValueList());
diff --git a/tests/auto/declarative/qjsengine/tst_qjsengine.cpp b/tests/auto/declarative/qjsengine/tst_qjsengine.cpp
index b6c7f4fbba..7aa5bbcbd9 100644
--- a/tests/auto/declarative/qjsengine/tst_qjsengine.cpp
+++ b/tests/auto/declarative/qjsengine/tst_qjsengine.cpp
@@ -436,7 +436,7 @@ void tst_QJSEngine::newFunction()
{
QScriptValue fun = eng.newFunction(myFunction);
QCOMPARE(fun.isValid(), true);
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
QCOMPARE(fun.isObject(), true);
QCOMPARE(fun.scriptClass(), (QScriptClass*)0);
// a prototype property is automatically constructed
@@ -449,7 +449,7 @@ void tst_QJSEngine::newFunction()
}
// prototype should be Function.prototype
QCOMPARE(fun.prototype().isValid(), true);
- QCOMPARE(fun.prototype().isFunction(), true);
+ QCOMPARE(fun.prototype().isCallable(), true);
QCOMPARE(fun.prototype().strictlyEquals(eng.evaluate("Function.prototype")), true);
QCOMPARE(fun.call().isNull(), true);
@@ -462,7 +462,7 @@ void tst_QJSEngine::newFunctionWithArg()
QScriptEngine eng;
{
QScriptValue fun = eng.newFunction(myFunctionWithVoidArg, (void*)this);
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
QCOMPARE(fun.scriptClass(), (QScriptClass*)0);
// a prototype property is automatically constructed
{
@@ -474,7 +474,7 @@ void tst_QJSEngine::newFunctionWithArg()
}
// prototype should be Function.prototype
QCOMPARE(fun.prototype().isValid(), true);
- QCOMPARE(fun.prototype().isFunction(), true);
+ QCOMPARE(fun.prototype().isCallable(), true);
QCOMPARE(fun.prototype().strictlyEquals(eng.evaluate("Function.prototype")), true);
QCOMPARE(fun.call().isNull(), true);
@@ -489,11 +489,11 @@ void tst_QJSEngine::newFunctionWithProto()
QScriptValue proto = eng.newObject();
QScriptValue fun = eng.newFunction(myFunction, proto);
QCOMPARE(fun.isValid(), true);
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
QCOMPARE(fun.isObject(), true);
// internal prototype should be Function.prototype
QCOMPARE(fun.prototype().isValid(), true);
- QCOMPARE(fun.prototype().isFunction(), true);
+ QCOMPARE(fun.prototype().isCallable(), true);
QCOMPARE(fun.prototype().strictlyEquals(eng.evaluate("Function.prototype")), true);
// public prototype should be the one we passed
QCOMPARE(fun.property("prototype").strictlyEquals(proto), true);
@@ -508,7 +508,7 @@ void tst_QJSEngine::newFunctionWithProto()
{
QScriptValue fun = eng.newFunction(myFunctionThatReturns);
QCOMPARE(fun.isValid(), true);
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
QCOMPARE(fun.isObject(), true);
QScriptValue result = fun.call();
@@ -519,7 +519,7 @@ void tst_QJSEngine::newFunctionWithProto()
{
QScriptValue fun = eng.newFunction(myFunctionThatReturnsWithoutEngine);
QCOMPARE(fun.isValid(), true);
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
QCOMPARE(fun.isObject(), true);
QScriptValue result = fun.call();
@@ -533,7 +533,7 @@ void tst_QJSEngine::newFunctionWithProto()
QScriptValue fun = eng.newFunction(myFunctionThatReturnsWrongEngine, reinterpret_cast<void *>(&wrongEngine));
QCOMPARE(fun.isValid(), true);
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
QCOMPARE(fun.isObject(), true);
QTest::ignoreMessage(QtWarningMsg, "QScriptValue::call(): Value from different engine returned from native function, returning undefined value instead.");
@@ -547,7 +547,7 @@ void tst_QJSEngine::newFunctionWithProto()
QScriptValue fun = eng.newFunction(sumFunction);
QCOMPARE(fun.isValid(), true);
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
QCOMPARE(fun.isObject(), true);
QScriptValue result = fun.call();
@@ -575,7 +575,7 @@ void tst_QJSEngine::newObject()
QJSValue object = eng.newObject();
QCOMPARE(object.isValid(), true);
QCOMPARE(object.isObject(), true);
- QCOMPARE(object.isFunction(), false);
+ QCOMPARE(object.isCallable(), false);
// ###FIXME: No QScriptClass QCOMPARE(object.scriptClass(), (QScriptClass*)0);
// prototype should be Object.prototype
QCOMPARE(object.prototype().isValid(), true);
@@ -590,7 +590,7 @@ void tst_QJSEngine::newArray()
QCOMPARE(array.isValid(), true);
QCOMPARE(array.isArray(), true);
QCOMPARE(array.isObject(), true);
- QVERIFY(!array.isFunction());
+ QVERIFY(!array.isCallable());
// ###FIXME: No QScriptClass QCOMPARE(array.scriptClass(), (QScriptClass*)0);
// prototype should be Array.prototype
QCOMPARE(array.prototype().isValid(), true);
@@ -658,7 +658,7 @@ void tst_QJSEngine::newVariant()
QJSValue opaque = eng.newVariant(QVariant());
QCOMPARE(opaque.isValid(), true);
QCOMPARE(opaque.isVariant(), true);
- QVERIFY(!opaque.isFunction());
+ QVERIFY(!opaque.isCallable());
QCOMPARE(opaque.isObject(), true);
QCOMPARE(opaque.prototype().isValid(), true);
QEXPECT_FAIL("", "FIXME: newly created QObject's prototype is an JS Object", Continue);
@@ -802,7 +802,7 @@ void tst_QJSEngine::newRegExp()
QCOMPARE(rexp.isValid(), true);
QCOMPARE(rexp.isRegExp(), true);
QCOMPARE(rexp.isObject(), true);
- QVERIFY(rexp.isFunction()); // in JSC, RegExp objects are callable
+ QVERIFY(rexp.isCallable()); // in JSC, RegExp objects are callable
// prototype should be RegExp.prototype
QCOMPARE(rexp.prototype().isValid(), true);
QCOMPARE(rexp.prototype().isObject(), true);
@@ -887,7 +887,7 @@ void tst_QJSEngine::newDate()
QCOMPARE(date.isValid(), true);
QCOMPARE(date.isDate(), true);
QCOMPARE(date.isObject(), true);
- QVERIFY(!date.isFunction());
+ QVERIFY(!date.isCallable());
// prototype should be Date.prototype
QCOMPARE(date.prototype().isValid(), true);
QCOMPARE(date.prototype().isDate(), true);
@@ -951,7 +951,7 @@ void tst_QJSEngine::newQObject()
QCOMPARE(qobject.isQObject(), true);
QCOMPARE(qobject.isObject(), true);
QCOMPARE(qobject.toQObject(), (QObject *)this);
- QVERIFY(!qobject.isFunction());
+ QVERIFY(!qobject.isCallable());
// prototype should be QObject.prototype
QCOMPARE(qobject.prototype().isValid(), true);
QEXPECT_FAIL("", "FIXME: newly created QObject's prototype is an JS Object", Continue);
@@ -1195,13 +1195,13 @@ void tst_QJSEngine::newQMetaObject()
QCOMPARE(qclass.isValid(), true);
QCOMPARE(qclass.isQMetaObject(), true);
QCOMPARE(qclass.toQMetaObject(), &QObject::staticMetaObject);
- QCOMPARE(qclass.isFunction(), true);
+ QCOMPARE(qclass.isCallable(), true);
QVERIFY(qclass.property("prototype").isObject());
QCOMPARE(qclass2.isValid(), true);
QCOMPARE(qclass2.isQMetaObject(), true);
QCOMPARE(qclass2.toQMetaObject(), &QWidget::staticMetaObject);
- QCOMPARE(qclass2.isFunction(), true);
+ QCOMPARE(qclass2.isCallable(), true);
QVERIFY(qclass2.property("prototype").isObject());
// prototype should be QMetaObject.prototype
@@ -1322,7 +1322,7 @@ void tst_QJSEngine::newActivationObject()
QCOMPARE(act.isValid(), true);
QEXPECT_FAIL("", "", Continue);
QCOMPARE(act.isObject(), true);
- QVERIFY(!act.isFunction());
+ QVERIFY(!act.isCallable());
QScriptValue v(&eng, 123);
act.setProperty("prop", v);
QEXPECT_FAIL("", "", Continue);
@@ -1357,7 +1357,7 @@ void tst_QJSEngine::getSetGlobalObject()
glob = eng.globalObject();
QCOMPARE(glob.isValid(), true);
QCOMPARE(glob.isObject(), true);
- QVERIFY(!glob.isFunction());
+ QVERIFY(!glob.isCallable());
QVERIFY(eng.currentContext()->thisObject().strictlyEquals(glob));
QVERIFY(eng.currentContext()->activationObject().strictlyEquals(glob));
QEXPECT_FAIL("", "FIXME: Do we really want to enforce this? ECMA standard says that it is implementation dependent, skipping for now", Continue);
@@ -1437,8 +1437,8 @@ void tst_QJSEngine::getSetGlobalObject()
//the custom global object have an interceptor
QVERIFY(eng.evaluate("this.__defineGetter__('oof', function() { return this.bar; })").isUndefined());
QVERIFY(eng.evaluate("this.__defineSetter__('oof', function(v) { this.bar = v; })").isUndefined());
- QVERIFY(eng.evaluate("this.__lookupGetter__('oof')").isFunction());
- QVERIFY(eng.evaluate("this.__lookupSetter__('oof')").isFunction());
+ QVERIFY(eng.evaluate("this.__lookupGetter__('oof')").isCallable());
+ QVERIFY(eng.evaluate("this.__lookupSetter__('oof')").isCallable());
eng.evaluate("oof = 123");
QVERIFY(eng.evaluate("oof").equals(obj.property("bar")));
@@ -1478,65 +1478,65 @@ void tst_QJSEngine::globalObjectProperties()
QVERIFY(global.property("undefined").isUndefined());
QCOMPARE(global.propertyFlags("undefined"), QJSValue::SkipInEnumeration | QJSValue::Undeletable);
- QVERIFY(global.property("eval").isFunction());
+ QVERIFY(global.property("eval").isCallable());
QCOMPARE(global.propertyFlags("eval"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("parseInt").isFunction());
+ QVERIFY(global.property("parseInt").isCallable());
QCOMPARE(global.propertyFlags("parseInt"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("parseFloat").isFunction());
+ QVERIFY(global.property("parseFloat").isCallable());
QCOMPARE(global.propertyFlags("parseFloat"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("isNaN").isFunction());
+ QVERIFY(global.property("isNaN").isCallable());
QCOMPARE(global.propertyFlags("isNaN"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("isFinite").isFunction());
+ QVERIFY(global.property("isFinite").isCallable());
QCOMPARE(global.propertyFlags("isFinite"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("decodeURI").isFunction());
+ QVERIFY(global.property("decodeURI").isCallable());
QCOMPARE(global.propertyFlags("decodeURI"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("decodeURIComponent").isFunction());
+ QVERIFY(global.property("decodeURIComponent").isCallable());
QCOMPARE(global.propertyFlags("decodeURIComponent"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("encodeURI").isFunction());
+ QVERIFY(global.property("encodeURI").isCallable());
QCOMPARE(global.propertyFlags("encodeURI"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("encodeURIComponent").isFunction());
+ QVERIFY(global.property("encodeURIComponent").isCallable());
QCOMPARE(global.propertyFlags("encodeURIComponent"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("Object").isFunction());
+ QVERIFY(global.property("Object").isCallable());
QCOMPARE(global.propertyFlags("Object"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("Function").isFunction());
+ QVERIFY(global.property("Function").isCallable());
QCOMPARE(global.propertyFlags("Function"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("Array").isFunction());
+ QVERIFY(global.property("Array").isCallable());
QCOMPARE(global.propertyFlags("Array"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("String").isFunction());
+ QVERIFY(global.property("String").isCallable());
QCOMPARE(global.propertyFlags("String"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("Boolean").isFunction());
+ QVERIFY(global.property("Boolean").isCallable());
QCOMPARE(global.propertyFlags("Boolean"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("Number").isFunction());
+ QVERIFY(global.property("Number").isCallable());
QCOMPARE(global.propertyFlags("Number"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("Date").isFunction());
+ QVERIFY(global.property("Date").isCallable());
QCOMPARE(global.propertyFlags("Date"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("RegExp").isFunction());
+ QVERIFY(global.property("RegExp").isCallable());
QCOMPARE(global.propertyFlags("RegExp"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("Error").isFunction());
+ QVERIFY(global.property("Error").isCallable());
QCOMPARE(global.propertyFlags("Error"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("EvalError").isFunction());
+ QVERIFY(global.property("EvalError").isCallable());
QCOMPARE(global.propertyFlags("EvalError"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("RangeError").isFunction());
+ QVERIFY(global.property("RangeError").isCallable());
QCOMPARE(global.propertyFlags("RangeError"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("ReferenceError").isFunction());
+ QVERIFY(global.property("ReferenceError").isCallable());
QCOMPARE(global.propertyFlags("ReferenceError"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("SyntaxError").isFunction());
+ QVERIFY(global.property("SyntaxError").isCallable());
QCOMPARE(global.propertyFlags("SyntaxError"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("TypeError").isFunction());
+ QVERIFY(global.property("TypeError").isCallable());
QCOMPARE(global.propertyFlags("TypeError"), QJSValue::SkipInEnumeration);
- QVERIFY(global.property("URIError").isFunction());
+ QVERIFY(global.property("URIError").isCallable());
QCOMPARE(global.propertyFlags("URIError"), QJSValue::SkipInEnumeration);
QVERIFY(global.property("Math").isObject());
- QVERIFY(!global.property("Math").isFunction());
+ QVERIFY(!global.property("Math").isCallable());
QCOMPARE(global.propertyFlags("Math"), QJSValue::SkipInEnumeration);
}
@@ -1684,12 +1684,12 @@ void tst_QJSEngine::customGlobalObjectWithPrototype()
}
{
QScriptValue ret = engine.evaluate("print");
- QVERIFY(ret.isFunction());
+ QVERIFY(ret.isCallable());
QVERIFY(ret.strictlyEquals(wrap.property("print")));
}
{
QScriptValue ret = engine.evaluate("this.print");
- QVERIFY(ret.isFunction());
+ QVERIFY(ret.isCallable());
QVERIFY(ret.strictlyEquals(wrap.property("print")));
}
{
@@ -1710,7 +1710,7 @@ void tst_QJSEngine::customGlobalObjectWithPrototype()
global.setPrototype(anotherProto);
{
QScriptValue ret = engine.evaluate("print");
- QVERIFY(ret.isFunction());
+ QVERIFY(ret.isCallable());
QVERIFY(ret.strictlyEquals(wrap.property("print")));
}
{
@@ -1746,7 +1746,7 @@ void tst_QJSEngine::customGlobalObjectWithPrototype()
}
{
QScriptValue ret = engine.evaluate("print");
- QVERIFY(ret.isFunction());
+ QVERIFY(ret.isCallable());
QVERIFY(ret.strictlyEquals(global.property("print")));
}
QVERIFY(!anotherProto.property("print").isValid());
@@ -2977,7 +2977,7 @@ void tst_QJSEngine::castWithPrototypeChain()
Zoo zoo;
QScriptValue scriptZoo = eng.newQObject(&zoo);
QScriptValue toBaz = scriptZoo.property("toBaz");
- QVERIFY(toBaz.isFunction());
+ QVERIFY(toBaz.isCallable());
// no relation between Bar and Baz's proto --> casting fails
{
@@ -3953,7 +3953,7 @@ void tst_QJSEngine::printFunctionWithCustomHandler()
// This behavior is not documented.
QJSEngine eng;
QtMsgHandler oldHandler = qInstallMsgHandler(myMsgHandler);
- QVERIFY(eng.globalObject().property("print").isFunction());
+ QVERIFY(eng.globalObject().property("print").isCallable());
theMessageType = QtSystemMsg;
QVERIFY(theMessage.isEmpty());
@@ -4135,7 +4135,7 @@ void tst_QJSEngine::jsNumberClass()
QCOMPARE(ret.toNumber(), qreal(456));
}
- QVERIFY(proto.property("toString").isFunction());
+ QVERIFY(proto.property("toString").isCallable());
{
QJSValue ret = eng.evaluate("new Number(123).toString()");
QVERIFY(ret.isString());
@@ -4151,31 +4151,31 @@ void tst_QJSEngine::jsNumberClass()
QVERIFY(ret.isString());
QCOMPARE(ret.toString(), QString::fromLatin1("7b"));
}
- QVERIFY(proto.property("toLocaleString").isFunction());
+ QVERIFY(proto.property("toLocaleString").isCallable());
{
QJSValue ret = eng.evaluate("new Number(123).toLocaleString()");
QVERIFY(ret.isString());
QCOMPARE(ret.toString(), QString::fromLatin1("123"));
}
- QVERIFY(proto.property("valueOf").isFunction());
+ QVERIFY(proto.property("valueOf").isCallable());
{
QJSValue ret = eng.evaluate("new Number(123).valueOf()");
QVERIFY(ret.isNumber());
QCOMPARE(ret.toNumber(), qreal(123));
}
- QVERIFY(proto.property("toExponential").isFunction());
+ QVERIFY(proto.property("toExponential").isCallable());
{
QJSValue ret = eng.evaluate("new Number(123).toExponential()");
QVERIFY(ret.isString());
QCOMPARE(ret.toString(), QString::fromLatin1("1.23e+2"));
}
- QVERIFY(proto.property("toFixed").isFunction());
+ QVERIFY(proto.property("toFixed").isCallable());
{
QJSValue ret = eng.evaluate("new Number(123).toFixed()");
QVERIFY(ret.isString());
QCOMPARE(ret.toString(), QString::fromLatin1("123"));
}
- QVERIFY(proto.property("toPrecision").isFunction());
+ QVERIFY(proto.property("toPrecision").isCallable());
{
QJSValue ret = eng.evaluate("new Number(123).toPrecision()");
QVERIFY(ret.isString());
@@ -4339,10 +4339,10 @@ void tst_QJSEngine::jsFunctionDeclarationAsStatement()
"}");
QVERIFY(!eng.globalObject().property("bar").isValid());
QVERIFY(!eng.globalObject().property("baz").isValid());
- QVERIFY(eng.evaluate("foo").isFunction());
+ QVERIFY(eng.evaluate("foo").isCallable());
{
QJSValue ret = eng.evaluate("foo('bar')");
- QVERIFY(ret.isFunction());
+ QVERIFY(ret.isCallable());
QJSValue ret2 = ret.call(QJSValue());
QCOMPARE(ret2.toString(), QString::fromLatin1("bar"));
QVERIFY(!eng.globalObject().property("bar").isValid());
@@ -4350,7 +4350,7 @@ void tst_QJSEngine::jsFunctionDeclarationAsStatement()
}
{
QJSValue ret = eng.evaluate("foo('baz')");
- QVERIFY(ret.isFunction());
+ QVERIFY(ret.isCallable());
QJSValue ret2 = ret.call(QJSValue());
QCOMPARE(ret2.toString(), QString::fromLatin1("baz"));
QVERIFY(!eng.globalObject().property("bar").isValid());
@@ -5215,13 +5215,13 @@ void tst_QJSEngine::installTranslatorFunctions()
QVERIFY(!global.property("String").property("prototype").property("arg").isValid());
eng.installTranslatorFunctions();
- QVERIFY(global.property("qsTranslate").isFunction());
- QVERIFY(global.property("QT_TRANSLATE_NOOP").isFunction());
- QVERIFY(global.property("qsTr").isFunction());
- QVERIFY(global.property("QT_TR_NOOP").isFunction());
- QVERIFY(global.property("qsTrId").isFunction());
- QVERIFY(global.property("QT_TRID_NOOP").isFunction());
- QVERIFY(global.property("String").property("prototype").property("arg").isFunction());
+ QVERIFY(global.property("qsTranslate").isCallable());
+ QVERIFY(global.property("QT_TRANSLATE_NOOP").isCallable());
+ QVERIFY(global.property("qsTr").isCallable());
+ QVERIFY(global.property("QT_TR_NOOP").isCallable());
+ QVERIFY(global.property("qsTrId").isCallable());
+ QVERIFY(global.property("QT_TRID_NOOP").isCallable());
+ QVERIFY(global.property("String").property("prototype").property("arg").isCallable());
{
QScriptValue ret = eng.evaluate("qsTr('foo')");
@@ -5689,7 +5689,7 @@ void tst_QJSEngine::functionScopes()
{
// top-level functions have only the global object in their scope
QScriptValue fun = eng.evaluate("(function() {})");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
QEXPECT_FAIL("", "QScriptValue::scope() is internal, not implemented", Abort);
QVERIFY(fun.scope().isObject());
QVERIFY(fun.scope().strictlyEquals(eng.globalObject()));
@@ -5697,14 +5697,14 @@ void tst_QJSEngine::functionScopes()
}
{
QScriptValue fun = eng.globalObject().property("Object");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
// native built-in functions don't have scope
QVERIFY(!fun.scope().isValid());
}
{
// closure
QScriptValue fun = eng.evaluate("(function(arg) { var foo = arg; return function() { return foo; }; })(123)");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
{
QScriptValue ret = fun.call();
QVERIFY(ret.isNumber());
@@ -5770,7 +5770,7 @@ void tst_QJSEngine::nativeFunctionScopes()
{
QScriptValue fun = eng.newFunction(counter);
QScriptValue cnt = fun.call(QScriptValue(), QScriptValueList() << 123);
- QVERIFY(cnt.isFunction());
+ QVERIFY(cnt.isCallable());
{
QScriptValue ret = cnt.call();
QVERIFY(ret.isNumber());
@@ -5781,7 +5781,7 @@ void tst_QJSEngine::nativeFunctionScopes()
{
QScriptValue fun = eng.newFunction(counter_hybrid);
QScriptValue cnt = fun.call(QScriptValue(), QScriptValueList() << 123);
- QVERIFY(cnt.isFunction());
+ QVERIFY(cnt.isCallable());
{
QScriptValue ret = cnt.call();
QVERIFY(ret.isNumber());
@@ -5917,15 +5917,15 @@ void tst_QJSEngine::evaluateProgram_closure()
QScriptProgram program("(function() { var count = 0; return function() { return count++; }; })");
QVERIFY(!program.isNull());
QScriptValue createCounter = eng.evaluate(program);
- QVERIFY(createCounter.isFunction());
+ QVERIFY(createCounter.isCallable());
QScriptValue counter = createCounter.call();
- QVERIFY(counter.isFunction());
+ QVERIFY(counter.isCallable());
{
QScriptValue ret = counter.call();
QVERIFY(ret.isNumber());
}
QScriptValue counter2 = createCounter.call();
- QVERIFY(counter2.isFunction());
+ QVERIFY(counter2.isCallable());
QVERIFY(!counter2.equals(counter));
{
QScriptValue ret = counter2.call();
@@ -6039,7 +6039,7 @@ void tst_QJSEngine::promoteThisObjectToQObjectInConstructor()
QVERIFY(object.isQObject());
QVERIFY(object.toQObject() != 0);
QVERIFY(object.property("objectName").isString());
- QVERIFY(object.property("deleteLater").isFunction());
+ QVERIFY(object.property("deleteLater").isCallable());
}
#endif
@@ -6089,7 +6089,7 @@ void tst_QJSEngine::qRegExpInport()
QCOMPARE(rexp.isValid(), true);
QCOMPARE(rexp.isRegExp(), true);
- QVERIFY(rexp.isFunction());
+ QVERIFY(rexp.isCallable());
QJSValue func = eng.evaluate("(function(string, regexp) { return string.match(regexp); })");
QJSValue result = func.call(QJSValue(), QJSValueList() << string << rexp);
@@ -6331,7 +6331,7 @@ void tst_QJSEngine::newFixedStaticScopeObject()
}
QScriptValue fun = eng.evaluate("(function() { return foo; })");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
eng.popContext();
// Function's scope chain persists after popContext().
QVERIFY(fun.call().equals(scope.property("foo")));
@@ -6423,7 +6423,7 @@ void tst_QJSEngine::newGrowingStaticScopeObject()
// Function declarations will create properties on the scope.
eng.evaluate("function fun() { return baz; }");
- QVERIFY(scope.property("fun").isFunction());
+ QVERIFY(scope.property("fun").isCallable());
QVERIFY(scope.property("fun").call().equals(scope.property("baz")));
// Demonstrate the limitation of a growable static scope: Once a function that
@@ -6431,7 +6431,7 @@ void tst_QJSEngine::newGrowingStaticScopeObject()
// to the scope later.
{
QScriptValue fun = eng.evaluate("(function() { return futureProperty; })");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
QVERIFY(fun.call().toString().contains(QString::fromLatin1("ReferenceError")));
scope.setProperty("futureProperty", "added after the function was compiled");
// If scope were dynamic, this would return the new property.
@@ -6476,10 +6476,10 @@ void tst_QJSEngine::functionPrototypeExtensions()
// QJS adds connect and disconnect properties to Function.prototype.
QJSEngine eng;
QJSValue funProto = eng.globalObject().property("Function").property("prototype");
- QVERIFY(funProto.isFunction());
- QVERIFY(funProto.property("connect").isFunction());
+ QVERIFY(funProto.isCallable());
+ QVERIFY(funProto.property("connect").isCallable());
QCOMPARE(funProto.propertyFlags("connect"), QJSValue::SkipInEnumeration);
- QVERIFY(funProto.property("disconnect").isFunction());
+ QVERIFY(funProto.property("disconnect").isCallable());
QCOMPARE(funProto.propertyFlags("disconnect"), QJSValue::SkipInEnumeration);
// No properties should appear in for-in statements.
diff --git a/tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp b/tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp
index 7b19a2d85e..7fd2eaac45 100644
--- a/tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp
+++ b/tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp
@@ -1698,7 +1698,7 @@ void tst_QJSValue::isError_propertiesOfGlobalObject()
QJSEngine eng;
for (int i = 0; i < errors.size(); ++i) {
QJSValue ctor = eng.globalObject().property(errors.at(i));
- QVERIFY(ctor.isFunction());
+ QVERIFY(ctor.isCallable());
QVERIFY(ctor.property("prototype").isError());
}
}
@@ -2816,7 +2816,7 @@ void tst_QJSValue::call_function()
{
QJSEngine eng;
QJSValue fun = eng.evaluate("(function() { return 1; })");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
QJSValue result = fun.call();
QVERIFY(result.isNumber());
QCOMPARE(result.toInt(), 1);
@@ -2826,7 +2826,7 @@ void tst_QJSValue::call_object()
{
QJSEngine eng;
QJSValue Object = eng.evaluate("Object");
- QCOMPARE(Object.isFunction(), true);
+ QCOMPARE(Object.isCallable(), true);
QJSValue result = Object.call(Object);
QCOMPARE(result.isObject(), true);
}
@@ -2837,7 +2837,7 @@ void tst_QJSValue::call_newObjects()
// test that call() doesn't construct new objects
QJSValue Number = eng.evaluate("Number");
QJSValue Object = eng.evaluate("Object");
- QCOMPARE(Object.isFunction(), true);
+ QCOMPARE(Object.isCallable(), true);
QJSValueList args;
args << QJSValue(&eng, 123);
QJSValue result = Number.call(Object, args);
@@ -2849,7 +2849,7 @@ void tst_QJSValue::call_this()
QJSEngine eng;
// test that correct "this" object is used
QJSValue fun = eng.evaluate("(function() { return this; })");
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
QJSValue numberObject = QJSValue(&eng, 123.0).toObject();
QJSValue result = fun.call(numberObject);
@@ -2863,7 +2863,7 @@ void tst_QJSValue::call_arguments()
// test that correct arguments are passed
QJSValue fun = eng.evaluate("(function() { return arguments[0]; })");
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
{
QJSValue result = fun.call(eng.undefinedValue());
QCOMPARE(result.isUndefined(), true);
@@ -2899,7 +2899,7 @@ void tst_QJSValue::call()
QJSEngine eng;
{
QJSValue fun = eng.evaluate("(function() { return arguments[1]; })");
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
{
QJSValueList args;
@@ -2921,7 +2921,7 @@ void tst_QJSValue::call()
}
{
QJSValue fun = eng.evaluate("(function() { throw new Error('foo'); })");
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
QVERIFY(!eng.hasUncaughtException());
{
@@ -3035,7 +3035,7 @@ void tst_QJSValue::call_twoEngines()
QJSValue object = eng.evaluate("Object");
QJSEngine otherEngine;
QJSValue fun = otherEngine.evaluate("(function() { return 1; })");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
QTest::ignoreMessage(QtWarningMsg, "JSValue can't be rassigned to an another engine.");
QTest::ignoreMessage(QtWarningMsg, "QJSValue::call() failed: "
"cannot call function with thisObject created in "
@@ -3047,7 +3047,7 @@ void tst_QJSValue::call_twoEngines()
QCOMPARE(fun.call(QJSValue(), QJSValueList() << QJSValue(&eng, 123)).isValid(), false);
{
QJSValue fun = eng.evaluate("Object");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
QJSEngine eng2;
QJSValue objectInDifferentEngine = eng2.newObject();
QJSValueList args;
@@ -3062,7 +3062,7 @@ void tst_QJSValue::call_array()
#if 0 // FIXME: The feature of interpreting an array as argument list has been removed from the API
QScriptEngine eng;
QJSValue fun = eng.evaluate("(function() { return arguments; })");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
QJSValue array = eng.newArray(3);
array.setProperty(0, QJSValue(&eng, 123.0));
array.setProperty(1, QJSValue(&eng, 456.0));
@@ -3171,7 +3171,7 @@ void tst_QJSValue::construct_simple()
{
QJSEngine eng;
QJSValue fun = eng.evaluate("(function () { this.foo = 123; })");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
QJSValue ret = fun.construct();
QVERIFY(ret.isObject());
QVERIFY(ret.instanceOf(fun));
@@ -3183,7 +3183,7 @@ void tst_QJSValue::construct_newObjectJS()
QJSEngine eng;
// returning a different object overrides the default-constructed one
QJSValue fun = eng.evaluate("(function () { return { bar: 456 }; })");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
QJSValue ret = fun.construct();
QVERIFY(ret.isObject());
QVERIFY(!ret.instanceOf(fun));
@@ -3216,7 +3216,7 @@ void tst_QJSValue::construct_arg()
{
QJSEngine eng;
QJSValue Number = eng.evaluate("Number");
- QCOMPARE(Number.isFunction(), true);
+ QCOMPARE(Number.isCallable(), true);
QJSValueList args;
args << QJSValue(&eng, 123);
QJSValue ret = Number.construct(args);
@@ -3229,7 +3229,7 @@ void tst_QJSValue::construct_proto()
QJSEngine eng;
// test that internal prototype is set correctly
QJSValue fun = eng.evaluate("(function() { return this.__proto__; })");
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
QCOMPARE(fun.property("prototype").isObject(), true);
QJSValue ret = fun.construct();
QCOMPARE(fun.property("prototype").strictlyEquals(ret), true);
@@ -3240,7 +3240,7 @@ void tst_QJSValue::construct_returnInt()
QJSEngine eng;
// test that we return the new object even if a non-object value is returned from the function
QJSValue fun = eng.evaluate("(function() { return 123; })");
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
QJSValue ret = fun.construct();
QCOMPARE(ret.isObject(), true);
}
@@ -3249,7 +3249,7 @@ void tst_QJSValue::construct_throw()
{
QJSEngine eng;
QJSValue fun = eng.evaluate("(function() { throw new Error('foo'); })");
- QCOMPARE(fun.isFunction(), true);
+ QCOMPARE(fun.isCallable(), true);
QJSValue ret = fun.construct();
QCOMPARE(ret.isError(), true);
QCOMPARE(eng.hasUncaughtException(), true);
@@ -3261,7 +3261,7 @@ void tst_QJSValue::construct()
{
QScriptEngine eng;
QJSValue fun = eng.evaluate("(function() { return arguments; })");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
QJSValue array = eng.newArray(3);
array.setProperty(0, QJSValue(&eng, 123.0));
array.setProperty(1, QJSValue(&eng, 456.0));
@@ -3315,7 +3315,7 @@ void tst_QJSValue::construct_constructorThrowsPrimitive()
{
QJSEngine eng;
QJSValue fun = eng.evaluate("(function() { throw 123; })");
- QVERIFY(fun.isFunction());
+ QVERIFY(fun.isCallable());
// construct(QJSValueList)
{
QJSValue ret = fun.construct();
@@ -3538,7 +3538,7 @@ void tst_QJSValue::equals()
QVERIFY(!qobj2.equals(obj2)); // compares the QObject pointers
QJSValue compareFun = eng.evaluate("(function(a, b) { return a == b; })");
- QVERIFY(compareFun.isFunction());
+ QVERIFY(compareFun.isCallable());
{
QJSValue ret = compareFun.call(QJSValue(), QJSValueList() << qobj1 << qobj2);
QVERIFY(ret.isBool());
@@ -3992,7 +3992,7 @@ void tst_QJSValue::prettyPrinter()
QFETCH(QString, expected);
QJSEngine eng;
QJSValue val = eng.evaluate("(" + function + ")");
- QVERIFY(val.isFunction());
+ QVERIFY(val.isCallable());
QString actual = val.toString();
int count = qMin(actual.size(), expected.size());
// qDebug() << actual << expected;