Commit caff3437 authored by Thomas Hartmann's avatar Thomas Hartmann

QmlJS: Fixing warnings

Correcting ImportKey::compare(). The compare function was not stable
and QMap did not work properly.

Done with: Fawzi

Change-Id: I11790215cba6944bf9f04be0c3844b35ea54ea70
Reviewed-by: default avatarFawzi Mohamed <fawzi.mohamed@digia.com>
parent 574d7028
......@@ -314,7 +314,7 @@ int ImportKey::compare(const ImportKey &other) const
QString v2 = other.splitPath.at(i);
if (v1 < v2)
return -1;
if (v2 > v1)
if (v1 > v2)
return 1;
}
if (len1 < len2)
......@@ -626,7 +626,7 @@ void ImportDependencies::iterateOnCandidateImports(
break;
default:
{
QStringList imp = m_importCache.value(key.flatKey());
const QStringList imp = m_importCache.value(key.flatKey());
foreach (const QString &cImportName, imp) {
CoreImport cImport = coreImport(cImportName);
if (vContext.languageIsCompatible(cImport.language)) {
......@@ -928,4 +928,38 @@ QSet<ImportKey> ImportDependencies::subdirImports(
return res;
}
void ImportDependencies::checkConsistency() const
{
QMapIterator<ImportKey, QStringList> j(m_importCache);
while (j.hasNext()) {
j.next();
foreach (const QString &s, j.value()) {
bool found = false;
foreach (const Export &e, m_coreImports.value(s).possibleExports)
if (e.exportName == j.key())
found = true;
Q_ASSERT(found);
}
}
QMapIterator<QString,CoreImport> i(m_coreImports);
while (i.hasNext()) {
i.next();
foreach (const Export &e, i.value().possibleExports) {
if (!m_importCache.value(e.exportName).contains(i.key())) {
qDebug() << e.exportName.toString();
qDebug() << i.key();
QMapIterator<ImportKey, QStringList> j(m_importCache);
while (j.hasNext()) {
j.next();
qDebug() << j.key().toString() << j.value();
}
qDebug() << m_importCache.contains(e.exportName);
qDebug() << m_importCache.value(e.exportName);
}
Q_ASSERT(m_importCache.value(e.exportName).contains(i.key()));
}
}
}
} // namespace QmlJS
......@@ -223,6 +223,7 @@ public:
QSet<ImportKey> libraryImports(const ViewerContext &viewContext) const;
QSet<ImportKey> subdirImports(const ImportKey &baseKey, const ViewerContext &viewContext) const;
void checkConsistency() const;
private:
void removeImportCacheEntry(const ImportKey &importKey, const QString &importId);
......
......@@ -950,13 +950,13 @@ void ModelManager::importScan(QFutureInterface<void> &future,
int totalWork(progressRange), workDone(0);
future.setProgressRange(0, progressRange); // update max length while iterating?
const bool libOnly = true; // FIXME remove when tested more
const Snapshot snapshot = modelManager->snapshot();
while (!pathsToScan.isEmpty() && !future.isCanceled()) {
ScanItem toScan = pathsToScan.last();
pathsToScan.pop_back();
int pathBudget = (maxScanDepth + 2 - toScan.depth);
if (!scannedPaths.contains(toScan.path)) {
QStringList importedFiles;
const Snapshot snapshot = modelManager->snapshot();
if (!findNewQmlLibraryInPath(toScan.path, snapshot, modelManager, &importedFiles,
&scannedPaths, &newLibraries, true)
&& !libOnly && snapshot.documentsInDirectory(toScan.path).isEmpty())
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment