summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2020-12-19 15:00:26 +0100
committerIvan Komissarov <abbapoh@gmail.com>2021-02-07 22:49:47 +0100
commitc76ff8526929091e20c89a4ad8af7f89237fadba (patch)
tree1f6b2addcfe71306b293d25349845304c70cfb95
parent70bc5beca051939f81dbdec3a5082241102065fa (diff)
Fix QRegExp usages
Change-Id: Ibebe73c32ceacf5964455918e3e0a2c641b8096e Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/script/api/qscriptengine.cpp29
-rw-r--r--src/script/api/qscriptengine_p.h8
-rw-r--r--src/script/bridge/qscriptqobject.cpp7
3 files changed, 25 insertions, 19 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 7265254..1a81a7e 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -3149,11 +3149,6 @@ JSC::JSValue QScriptEnginePrivate::create(JSC::ExecState *exec, int type, const
case QMetaType::QDate:
result = newDate(exec, QDateTime(*reinterpret_cast<const QDate *>(ptr)));
break;
-#ifndef QT_NO_REGEXP
- case QMetaType::QRegExp:
- result = newRegExp(exec, *reinterpret_cast<const QRegExp *>(ptr));
- break;
-#endif
#ifndef QT_NO_QOBJECT
case QMetaType::QObjectStar:
result = eng->newQObject(*reinterpret_cast<QObject* const *>(ptr));
@@ -3163,6 +3158,12 @@ JSC::JSValue QScriptEnginePrivate::create(JSC::ExecState *exec, int type, const
result = eng->newVariant(*reinterpret_cast<const QVariant*>(ptr));
break;
default:
+#ifndef QT_NO_REGEXP
+ if (type == qMetaTypeId<QRegExp>()) {
+ result = newRegExp(exec, *reinterpret_cast<const QRegExp *>(ptr));
+ break;
+ }
+#endif
if (QMetaType::typeFlags(type) & QMetaType::PointerToQObject) {
result = eng->newQObject(*reinterpret_cast<QObject* const *>(ptr));
break;
@@ -3279,13 +3280,6 @@ bool QScriptEnginePrivate::convertValue(JSC::ExecState *exec, JSC::JSValue value
*reinterpret_cast<QDate *>(ptr) = toDateTime(exec, value).date();
return true;
} break;
-#ifndef QT_NO_REGEXP
- case QMetaType::QRegExp:
- if (isRegExp(value)) {
- *reinterpret_cast<QRegExp *>(ptr) = toRegExp(exec, value);
- return true;
- } break;
-#endif
#ifndef QT_NO_QOBJECT
case QMetaType::QObjectStar:
if (isQObject(value) || value.isNull()) {
@@ -3312,7 +3306,16 @@ bool QScriptEnginePrivate::convertValue(JSC::ExecState *exec, JSC::JSValue value
*reinterpret_cast<QVariant*>(ptr) = toVariant(exec, value);
return true;
default:
- ;
+#ifndef QT_NO_REGEXP
+ if (type == qMetaTypeId<QRegExp>()) {
+ if (isRegExp(value)) {
+ *reinterpret_cast<QRegExp *>(ptr) = toRegExp(exec, value);
+ return true;
+ }
+ break;
+ }
+#endif
+ break;
}
QByteArray name = QMetaType::typeName(type);
diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h
index 73387e5..a793583 100644
--- a/src/script/api/qscriptengine_p.h
+++ b/src/script/api/qscriptengine_p.h
@@ -56,9 +56,15 @@
#include <QtCore/qdatetime.h>
#include <QtCore/qhash.h>
#include <QtCore/qnumeric.h>
-#include <QtCore/qregexp.h>
#include <QtCore/qset.h>
#include <QtCore/qstringlist.h>
+
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+#include <QtCore5Compat/qregexp.h>
+#else
+#include <QtCore/qregexp.h>
+#endif
+
#include "qscriptvalue_p.h"
#include "qscriptstring_p.h"
#include "bridge/qscriptclassobject_p.h"
diff --git a/src/script/bridge/qscriptqobject.cpp b/src/script/bridge/qscriptqobject.cpp
index 7ed9612..17e4524 100644
--- a/src/script/bridge/qscriptqobject.cpp
+++ b/src/script/bridge/qscriptqobject.cpp
@@ -702,13 +702,10 @@ static JSC::JSValue delegateQtMethod(JSC::ExecState *exec, QMetaMethod::MethodTy
break;
}
} else if (QScriptEnginePrivate::isRegExp(actual)) {
- switch (tid) {
- case QMetaType::QRegExp:
+ if (tid == qMetaTypeId<QRegExp>()) {
// perfect
- break;
- default:
+ } else {
matchDistance += 10;
- break;
}
} else if (QScriptEnginePrivate::isVariant(actual)) {
if (argType.isVariant()