{
parsed = true;
- if (compilationUnit) {
- vmFunction = compilationUnit->linkToEngine(v4);
- Q_ASSERT(vmFunction);
+ vmFunction = compilationUnit ? compilationUnit->linkToEngine(v4) : 0;
+ if (vmFunction) {
Scope valueScope(v4);
ScopedObject holder(valueScope, v4->memoryManager->alloc<CompilationUnitHolder>(v4, compilationUnit));
compilationUnitHolder = holder.asReturnedValue();
- } else
- vmFunction = 0;
+ }
}
Script::~Script()
return m_scriptData;
}
+struct EmptyCompilationUnit : public QV4::CompiledData::CompilationUnit
+{
+ virtual void linkBackendToEngine(QV4::ExecutionEngine *) {}
+};
+
void QQmlScriptBlob::dataReceived(const Data &data)
{
QString source = QString::fromUtf8(data.data(), data.size());
setError(errors);
return;
}
+ if (!unit) {
+ unit.take(new EmptyCompilationUnit);
+ }
irUnit.javaScriptCompilationUnit = unit;
QmlIR::QmlUnitGenerator qmlGenerator;
--- /dev/null
+import org.qtproject.EmptyJsModule 1.0 as Empty
+import QtQuick 2.0
+
+Item {
+ property bool test: false
+
+ Component.onCompleted: {
+ test = typeof Empty == 'object'
+ }
+}
--- /dev/null
+EmptyAPI 1.0 Empty.js
<< "importJs.10.qml"
<< "importJs.10.errors.txt"
<< true;
+
+ QTest::newRow("emptyScript")
+ << "importJs.11.qml"
+ << "importJs.11.errors.txt"
+ << true;
}
void tst_qqmllanguage::importJs()