aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/projectresolver.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2018-06-05 12:31:00 +0200
committerJoerg Bornemann <joerg.bornemann@qt.io>2018-06-06 08:02:04 +0000
commitfadb41e330d92c03633c9a596eeb9ff125227426 (patch)
tree64b16c951cba82a185a9534289de2f034ea6d44b /src/lib/corelib/language/projectresolver.cpp
parent0af8d1b7870d44e4a024669cae28593173687de1 (diff)
Fix property values that are pure assignments of imports
Those were broken, because QScriptValue::toVariant() doesn't take QScriptValue::prototype() into account, which we set for imports. Change-Id: I571f7a4b63df08b1768f61bcc1d622f3730c2a73 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/language/projectresolver.cpp')
-rw-r--r--src/lib/corelib/language/projectresolver.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index 8b129c98b..4af79a5ce 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -1670,7 +1670,21 @@ void ProjectResolver::evaluateProperty(const Item *item, const QString &propName
// NOTE: Loses type information if scriptValue.isUndefined == true,
// as such QScriptValues become invalid QVariants.
- QVariant v = scriptValue.isFunction() ? scriptValue.toString() : scriptValue.toVariant();
+ QVariant v;
+ if (scriptValue.isFunction()) {
+ v = scriptValue.toString();
+ } else {
+ v = scriptValue.toVariant();
+ QVariantMap m = v.toMap();
+ if (m.contains(StringConstants::importScopeNamePropertyInternal())) {
+ QVariantMap tmp = m;
+ m = scriptValue.prototype().toVariant().toMap();
+ for (auto it = tmp.begin(); it != tmp.end(); ++it)
+ m.insert(it.key(), it.value());
+ v = m;
+ }
+ }
+
if (pd.type() == PropertyDeclaration::Path && v.isValid()) {
v = v.toString();
} else if (pd.type() == PropertyDeclaration::PathList