aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmltypeloader.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2014-03-06 16:55:09 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-07 15:33:19 +0100
commit99efe4309379482fce5c231885883e359bf85290 (patch)
treedbb9333a547fa1939bd63bd64136611e9fe82968 /src/qml/qml/qqmltypeloader.cpp
parent9fc17c08e5635cf112c6194e6c24af2a9c7caf00 (diff)
Remove old compiler and VME
This removes the bulk of the code. A few smaller cleanups remain, to be done in smaller changes as they move code around. Additionally the "optimize" option of qqmlbundle was removed. It called QQmlScript::Parser::preparseData, which however was not implemented and always returned an empty QByteArray. Therefore "optimize" would not do anything and the class is gone now :) Change-Id: I0c265e756704cb53c5250be1f69e4a3e1b6e64d5 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/qml/qqmltypeloader.cpp')
-rw-r--r--src/qml/qml/qqmltypeloader.cpp113
1 files changed, 15 insertions, 98 deletions
diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp
index c1074e8a84..258c5c71b3 100644
--- a/src/qml/qml/qqmltypeloader.cpp
+++ b/src/qml/qml/qqmltypeloader.cpp
@@ -1966,15 +1966,12 @@ QQmlTypeData::QQmlTypeData(const QUrl &url, QQmlTypeLoader *manager)
: QQmlTypeLoader::Blob(url, QmlFile, manager),
m_typesResolved(false), m_compiledData(0), m_implicitImport(0), m_implicitImportLoaded(false)
{
- m_useNewCompiler = QQmlEnginePrivate::get(manager->engine())->useNewCompiler;
}
QQmlTypeData::~QQmlTypeData()
{
for (int ii = 0; ii < m_scripts.count(); ++ii)
m_scripts.at(ii).script->release();
- for (int ii = 0; ii < m_types.count(); ++ii)
- if (m_types.at(ii).typeData) m_types.at(ii).typeData->release();
for (QHash<int, TypeReference>::ConstIterator it = m_resolvedTypes.constBegin(), end = m_resolvedTypes.constEnd();
it != end; ++it) {
if (QQmlTypeData *tdata = it->typeData)
@@ -1986,16 +1983,6 @@ QQmlTypeData::~QQmlTypeData()
delete m_implicitImport;
}
-const QQmlScript::Parser &QQmlTypeData::parser() const
-{
- return scriptParser;
-}
-
-const QList<QQmlTypeData::TypeReference> &QQmlTypeData::resolvedTypes() const
-{
- return m_types;
-}
-
const QList<QQmlTypeData::ScriptReference> &QQmlTypeData::resolvedScripts() const
{
return m_scripts;
@@ -2048,24 +2035,6 @@ void QQmlTypeData::done()
}
// Check all type dependencies for errors
- // --- old compiler:
- for (int ii = 0; !isError() && ii < m_types.count(); ++ii) {
- const TypeReference &type = m_types.at(ii);
- Q_ASSERT(!type.typeData || type.typeData->isCompleteOrError());
- if (type.typeData && type.typeData->isError()) {
- QString typeName = scriptParser.referencedTypes().at(ii)->name;
-
- QList<QQmlError> errors = type.typeData->errors();
- QQmlError error;
- error.setUrl(finalUrl());
- error.setLine(type.location.line);
- error.setColumn(type.location.column);
- error.setDescription(QQmlTypeLoader::tr("Type %1 unavailable").arg(typeName));
- errors.prepend(error);
- setError(errors);
- }
- }
- // --- new compiler:
for (QHash<int, TypeReference>::ConstIterator it = m_resolvedTypes.constBegin(), end = m_resolvedTypes.constEnd();
!isError() && it != end; ++it) {
const TypeReference &type = *it;
@@ -2083,7 +2052,6 @@ void QQmlTypeData::done()
setError(errors);
}
}
- // ---
// Check all composite singleton type dependencies for errors
for (int ii = 0; !isError() && ii < m_compositeSingletons.count(); ++ii) {
@@ -2119,7 +2087,6 @@ void QQmlTypeData::done()
if (!isError())
compile();
- scriptParser.clear();
parsedQML.reset();
}
@@ -2160,19 +2127,12 @@ void QQmlTypeData::dataReceived(const Data &data)
if (data.isFile()) preparseData = data.asFile()->metaData(QLatin1String("qml:preparse"));
- if (m_useNewCompiler) {
- QQmlEngine *qmlEngine = typeLoader()->engine();
- parsedQML.reset(new QtQml::ParsedQML(QV8Engine::getV4(qmlEngine)->debugger != 0));
- QQmlCodeGenerator compiler(QV8Engine::get(qmlEngine)->illegalNames());
- if (!compiler.generateFromQml(code, finalUrl(), finalUrlString(), parsedQML.data())) {
- setError(compiler.errors);
- return;
- }
- } else {
- if (!scriptParser.parse(code, preparseData, finalUrl(), finalUrlString())) {
- setError(scriptParser.errors());
- return;
- }
+ QQmlEngine *qmlEngine = typeLoader()->engine();
+ parsedQML.reset(new QtQml::ParsedQML(QV8Engine::getV4(qmlEngine)->debugger != 0));
+ QQmlCodeGenerator compiler(QV8Engine::get(qmlEngine)->illegalNames());
+ if (!compiler.generateFromQml(code, finalUrl(), finalUrlString(), parsedQML.data())) {
+ setError(compiler.errors);
+ return;
}
m_imports.setBaseUrl(finalUrl(), finalUrlString());
@@ -2203,7 +2163,7 @@ void QQmlTypeData::dataReceived(const Data &data)
QList<QQmlError> errors;
// ### convert to use new data structure once old compiler is gone.
- if (m_useNewCompiler && m_newImports.isEmpty()) {
+ if (m_newImports.isEmpty()) {
m_newImports.reserve(parsedQML->imports.size());
foreach (QV4::CompiledData::Import *i, parsedQML->imports) {
QQmlScript::Import import;
@@ -2226,7 +2186,7 @@ void QQmlTypeData::dataReceived(const Data &data)
}
}
- foreach (const QQmlScript::Import &import, m_useNewCompiler ? m_newImports : scriptParser.imports()) {
+ foreach (const QQmlScript::Import &import, m_newImports) {
if (!addImport(import, &errors)) {
Q_ASSERT(errors.size());
QQmlError error(errors.takeFirst());
@@ -2240,7 +2200,7 @@ void QQmlTypeData::dataReceived(const Data &data)
}
// ### convert to use new data structure once old compiler is gone.
- if (m_useNewCompiler && m_newPragmas.isEmpty()) {
+ if (m_newPragmas.isEmpty()) {
m_newPragmas.reserve(parsedQML->pragmas.size());
foreach (QtQml::Pragma *p, parsedQML->pragmas) {
QQmlScript::Pragma pragma;
@@ -2256,7 +2216,7 @@ void QQmlTypeData::dataReceived(const Data &data)
}
}
- foreach (const QQmlScript::Pragma &pragma, m_useNewCompiler ? m_newPragmas : scriptParser.pragmas()) {
+ foreach (const QQmlScript::Pragma &pragma, m_newPragmas) {
if (!addPragma(pragma, &errors)) {
Q_ASSERT(errors.size());
setError(errors);
@@ -2312,20 +2272,11 @@ void QQmlTypeData::compile()
QQmlCompilingProfiler prof(QQmlEnginePrivate::get(typeLoader()->engine())->profiler, m_compiledData->name);
- if (m_useNewCompiler) {
- QQmlTypeCompiler compiler(QQmlEnginePrivate::get(typeLoader()->engine()), m_compiledData, this, parsedQML.data());
- if (!compiler.compile()) {
- setError(compiler.compilationErrors());
- m_compiledData->release();
- m_compiledData = 0;
- }
- } else {
- QQmlCompiler compiler(&scriptParser._pool);
- if (!compiler.compile(typeLoader()->engine(), this, m_compiledData)) {
- setError(compiler.errors());
- m_compiledData->release();
- m_compiledData = 0;
- }
+ QQmlTypeCompiler compiler(QQmlEnginePrivate::get(typeLoader()->engine()), m_compiledData, this, parsedQML.data());
+ if (!compiler.compile()) {
+ setError(compiler.compilationErrors());
+ m_compiledData->release();
+ m_compiledData = 0;
}
}
@@ -2357,9 +2308,6 @@ void QQmlTypeData::resolveTypes()
TypeReference ref;
QQmlScript::TypeReference parserRef;
parserRef.name = csRef.typeName;
- // we are basing our type on the information from qmldir and therefore
- // do not have a proper location.
- parserRef.firstUse = NULL;
if (!csRef.prefix.isEmpty()) {
parserRef.name.prepend(csRef.prefix + QLatin1Char('.'));
@@ -2382,31 +2330,6 @@ void QQmlTypeData::resolveTypes()
}
}
- // --- old compiler:
- foreach (QQmlScript::TypeReference *parserRef, scriptParser.referencedTypes()) {
- TypeReference ref;
-
- int majorVersion = -1;
- int minorVersion = -1;
-
- if (!resolveType(parserRef, majorVersion, minorVersion, ref))
- return;
-
- if (ref.type->isComposite()) {
- ref.typeData = typeLoader()->getType(ref.type->sourceUrl());
- addDependency(ref.typeData);
- }
-
- ref.majorVersion = majorVersion;
- ref.minorVersion = minorVersion;
-
- Q_ASSERT(parserRef->firstUse);
- ref.location = parserRef->firstUse->location.start;
-
- m_types << ref;
- }
-
- // --- new compiler:
QV4::CompiledData::TypeReferenceMap typeReferences;
QStringList names;
if (parsedQML) {
@@ -2523,12 +2446,6 @@ bool QQmlTypeData::resolveType(const QQmlScript::TypeReference *parserRef, int &
error.setDescription(QQmlTypeLoader::tr("%1 %2").arg(parserRef->name).arg(error.description()));
}
- if (parserRef->firstUse)
- {
- error.setLine(parserRef->firstUse->location.start.line);
- error.setColumn(parserRef->firstUse->location.start.column);
- }
-
errors.prepend(error);
setError(errors);
return false;