diff options
Diffstat (limited to 'src/qml/qml/qqmlcompiler.cpp')
-rw-r--r-- | src/qml/qml/qqmlcompiler.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/qml/qml/qqmlcompiler.cpp b/src/qml/qml/qqmlcompiler.cpp index 57114ebead..0462c0b61a 100644 --- a/src/qml/qml/qqmlcompiler.cpp +++ b/src/qml/qml/qqmlcompiler.cpp @@ -3654,7 +3654,21 @@ bool QQmlCompiler::completeComponentBuild() const QString &sourceCode = jsEngine->code(); AST::UiProgram *qmlRoot = parser.qmlRoot(); - const QVector<int> runtimeFunctionIndices = jsCodeGen.generateJSCodeForFunctionsAndBindings(unit->finalUrlString(), sourceCode, jsModule.data(), jsEngine, qmlRoot, compileState->functionsToCompile); + JSCodeGen::ObjectIdMapping idMapping; + if (compileState->ids.count() > 0) { + idMapping.reserve(compileState->ids.count()); + for (Object *o = compileState->ids.first(); o; o = compileState->ids.next(o)) { + JSCodeGen::IdMapping m; + m.name = o->id; + m.idIndex = o->idIndex; + idMapping << m; + } + } + + const QVector<int> runtimeFunctionIndices = jsCodeGen.generateJSCodeForFunctionsAndBindings(unit->finalUrlString(), sourceCode, jsModule.data(), jsEngine, + qmlRoot, compileState->root->astNode, + compileState->functionsToCompile, + idMapping); compileState->runtimeFunctionIndices = runtimeFunctionIndices; for (JSBindingReference *b = compileState->bindings.first(); b; b = b->nextReference) { |