aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-07-19 14:34:44 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-07-30 09:18:41 +0000
commitcffe2129465d7fa5dd86c7a7beabeb9cbbf0389c (patch)
tree350b181f8e421dbbb588c6138b5681a2da2f896c
parent77d3edc936af2f40fb16a3bf8c752967b6a93861 (diff)
Make sure product type and artifact file tags are sorted
... when accessed from JavaScript. Due to the FileTag class being based on Id, we sometimes get a different order of elements, leading to false positives in change tracking. Change-Id: Ie2f1a2e9a229fddcd479175323dded3a80bb02e5 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--src/lib/corelib/buildgraph/transformer.cpp3
-rw-r--r--src/lib/corelib/jsextensions/moduleproperties.cpp3
-rw-r--r--src/lib/corelib/language/projectresolver.cpp2
3 files changed, 5 insertions, 3 deletions
diff --git a/src/lib/corelib/buildgraph/transformer.cpp b/src/lib/corelib/buildgraph/transformer.cpp
index fab7431ab..009e8cde4 100644
--- a/src/lib/corelib/buildgraph/transformer.cpp
+++ b/src/lib/corelib/buildgraph/transformer.cpp
@@ -48,6 +48,7 @@
#include <tools/scripttools.h>
#include <tools/qbsassert.h>
#include <tools/stringconstants.h>
+#include <tools/stlutils.h>
#include <QtCore/qdir.h>
@@ -116,7 +117,7 @@ QScriptValue Transformer::translateFileConfig(ScriptEngine *scriptEngine, const
setArtifactProperty(obj, StringConstants::completeBaseNameProperty(), js_completeBaseName,
artifact);
setArtifactProperty(obj, QStringLiteral("baseDir"), js_baseDir, artifact);
- const QStringList fileTags = artifact->fileTags().toStringList();
+ const QStringList fileTags = sorted(artifact->fileTags().toStringList());
obj.setProperty(StringConstants::fileTagsProperty(), scriptEngine->toScriptValue(fileTags));
if (!defaultModuleName.isEmpty())
obj.setProperty(StringConstants::moduleNameProperty(), defaultModuleName);
diff --git a/src/lib/corelib/jsextensions/moduleproperties.cpp b/src/lib/corelib/jsextensions/moduleproperties.cpp
index d80a4bc5f..7607b3dc2 100644
--- a/src/lib/corelib/jsextensions/moduleproperties.cpp
+++ b/src/lib/corelib/jsextensions/moduleproperties.cpp
@@ -51,6 +51,7 @@
#include <tools/error.h>
#include <tools/qbsassert.h>
#include <tools/qttools.h>
+#include <tools/stlutils.h>
#include <tools/stringconstants.h>
#include <QtScript/qscriptclass.h>
@@ -249,7 +250,7 @@ void ModuleProperties::init(QScriptValue artifactObject, const Artifact *artifac
{StringConstants::nameProperty(), product->name},
{StringConstants::sourceDirectoryProperty(), product->sourceDirectory},
{StringConstants::targetNameProperty(), product->targetName},
- {StringConstants::typeProperty(), product->fileTags.toStringList()}
+ {StringConstants::typeProperty(), sorted(product->fileTags.toStringList())}
};
QScriptEngine * const engine = artifactObject.engine();
artifactObject.setProperty(StringConstants::productVar(),
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index d55049e5b..348858f2b 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -573,7 +573,7 @@ void ProjectResolver::gatherProductTypes(ResolvedProduct *product, Item *item)
}
}
item->setProperty(StringConstants::typeProperty(),
- VariantValue::create(product->fileTags.toStringList()));
+ VariantValue::create(sorted(product->fileTags.toStringList())));
}
SourceArtifactPtr ProjectResolver::createSourceArtifact(const ResolvedProductPtr &rproduct,