diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2020-12-19 15:00:26 +0100 |
---|---|---|
committer | Ivan Komissarov <abbapoh@gmail.com> | 2021-02-07 22:49:47 +0100 |
commit | c76ff8526929091e20c89a4ad8af7f89237fadba (patch) | |
tree | 1f6b2addcfe71306b293d25349845304c70cfb95 | |
parent | 70bc5beca051939f81dbdec3a5082241102065fa (diff) |
Fix QRegExp usages
Change-Id: Ibebe73c32ceacf5964455918e3e0a2c641b8096e
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | src/script/api/qscriptengine.cpp | 29 | ||||
-rw-r--r-- | src/script/api/qscriptengine_p.h | 8 | ||||
-rw-r--r-- | src/script/bridge/qscriptqobject.cpp | 7 |
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() |