diff options
Diffstat (limited to 'src/qml/jsapi')
-rw-r--r-- | src/qml/jsapi/qjsengine.cpp | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/src/qml/jsapi/qjsengine.cpp b/src/qml/jsapi/qjsengine.cpp index b5eadf483a..69e1436c0a 100644 --- a/src/qml/jsapi/qjsengine.cpp +++ b/src/qml/jsapi/qjsengine.cpp @@ -469,6 +469,17 @@ void QJSEngine::installExtensions(QJSEngine::Extensions extensions, const QJSVal QV4::GlobalExtensions::init(obj, extensions); } +static QUrl urlForFileName(const QString &fileName) +{ + if (!fileName.startsWith(QLatin1Char(':'))) + return QUrl::fromLocalFile(fileName); + + QUrl url; + url.setPath(fileName.mid(1)); + url.setScheme(QLatin1String("qrc")); + return url; +} + /*! Evaluates \a program, using \a lineNumber as the base line number, and returns the result of the evaluation. @@ -503,7 +514,7 @@ QJSValue QJSEngine::evaluate(const QString& program, const QString& fileName, in QV4::Scope scope(v4); QV4::ScopedValue result(scope); - QV4::Script script(v4->rootContext(), QV4::Compiler::ContextType::Global, program, fileName, lineNumber); + QV4::Script script(v4->rootContext(), QV4::Compiler::ContextType::Global, program, urlForFileName(fileName).toString(), lineNumber); script.strictMode = false; if (v4->currentStackFrame) script.strictMode = v4->currentStackFrame->v4Function->isStrict(); @@ -521,19 +532,6 @@ QJSValue QJSEngine::evaluate(const QString& program, const QString& fileName, in return retval; } -static QUrl moduleUrlForFileName(const QString &fileName) -{ - QString absolutePath = QFileInfo(fileName).canonicalFilePath(); - if (!absolutePath.startsWith(QLatin1Char(':'))) - return QUrl::fromLocalFile(absolutePath); - - absolutePath.remove(0, 1); - QUrl url; - url.setPath(absolutePath); - url.setScheme(QLatin1String("qrc")); - return url; -} - /*! Imports the module located at \a fileName and returns a module namespace object that contains all exported variables, constants and functions as properties. @@ -556,7 +554,7 @@ static QUrl moduleUrlForFileName(const QString &fileName) */ QJSValue QJSEngine::importModule(const QString &fileName) { - const QUrl url = moduleUrlForFileName(fileName); + const QUrl url = urlForFileName(QFileInfo(fileName).canonicalFilePath()); auto moduleUnit = m_v4Engine->loadModule(url); if (m_v4Engine->hasException) return QJSValue(m_v4Engine, m_v4Engine->catchException()); |