diff -r ef0373b55136 -r 758a864f9613 src/declarative/qml/qdeclarativedom.cpp --- a/src/declarative/qml/qdeclarativedom.cpp Fri Sep 17 08:34:18 2010 +0300 +++ b/src/declarative/qml/qdeclarativedom.cpp Mon Oct 04 01:19:32 2010 +0300 @@ -42,7 +42,6 @@ #include "private/qdeclarativedom_p.h" #include "private/qdeclarativedom_p_p.h" -#include "private/qdeclarativecompositetypedata_p.h" #include "private/qdeclarativecompiler_p.h" #include "private/qdeclarativeengine_p.h" #include "private/qdeclarativescriptparser_p.h" @@ -145,37 +144,23 @@ d->errors.clear(); d->imports.clear(); - QDeclarativeCompiledData *component = new QDeclarativeCompiledData(engine); - QDeclarativeCompiler compiler; - - QDeclarativeCompositeTypeData *td = ((QDeclarativeEnginePrivate *)QDeclarativeEnginePrivate::get(engine))->typeManager.getImmediate(data, url); + QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(engine); + QDeclarativeTypeData *td = ep->typeLoader.get(data, url, QDeclarativeTypeLoader::PreserveParser); - if(td->status == QDeclarativeCompositeTypeData::Error) { - d->errors = td->errors; + if(td->isError()) { + d->errors = td->errors(); td->release(); - component->release(); return false; - } else if(td->status == QDeclarativeCompositeTypeData::Waiting || - td->status == QDeclarativeCompositeTypeData::WaitingResources) { + } else if(!td->isCompleteOrError()) { QDeclarativeError error; error.setDescription(QLatin1String("QDeclarativeDomDocument supports local types only")); d->errors << error; td->release(); - component->release(); return false; } - compiler.compile(engine, td, component); - - if (compiler.isError()) { - d->errors = compiler.errors(); - td->release(); - component->release(); - return false; - } - - for (int i = 0; i < td->data.imports().size(); ++i) { - QDeclarativeScriptParser::Import parserImport = td->data.imports().at(i); + for (int i = 0; i < td->parser().imports().size(); ++i) { + QDeclarativeScriptParser::Import parserImport = td->parser().imports().at(i); QDeclarativeDomImport domImport; domImport.d->type = static_cast(parserImport.type); domImport.d->uri = parserImport.uri; @@ -184,12 +169,12 @@ d->imports += domImport; } - if (td->data.tree()) { - d->root = td->data.tree(); + if (td->parser().tree()) { + d->root = td->parser().tree(); d->root->addref(); } - component->release(); + td->release(); return true; }