aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2023-08-02 14:48:21 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2023-08-02 21:33:12 +0000
commit456d5c10e34c8f519b3fe049cd286fdf4a5776f1 (patch)
treeb5bdde231bc84f1cd5b5e2ad2dde2df682cb19ea
parent07f754f8a0a188584bc9784324e53b4aec26c255 (diff)
Loader: Fix two more cases of implicit Module item property evaluation
As of fb52fed84a1510a7de0172e643d6fd66a780e2e8, the prototype link from ModuleInstance to Module should not be used for property evaluation anymore. Change-Id: I01975ffe7d981d9927018d4f2d7d965da57ce18c Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
-rw-r--r--src/lib/corelib/language/evaluator.cpp3
-rw-r--r--src/lib/corelib/loader/productresolver.cpp5
2 files changed, 5 insertions, 3 deletions
diff --git a/src/lib/corelib/language/evaluator.cpp b/src/lib/corelib/language/evaluator.cpp
index 9a19828bb..8b887dd1f 100644
--- a/src/lib/corelib/language/evaluator.cpp
+++ b/src/lib/corelib/language/evaluator.cpp
@@ -856,7 +856,8 @@ static EvalResult getEvalProperty(ScriptEngine *engine, JSValue obj, const Item
const QString &name, const EvaluationData *data)
{
Evaluator * const evaluator = data->evaluator;
- const bool isModuleInstance = item->type() == ItemType::ModuleInstance;
+ const bool isModuleInstance = item->type() == ItemType::ModuleInstance
+ || item->type() == ItemType::ModuleInstancePlaceholder;
for (; item; item = item->prototype()) {
if (isModuleInstance
&& (item->type() == ItemType::Module || item->type() == ItemType::Export)) {
diff --git a/src/lib/corelib/loader/productresolver.cpp b/src/lib/corelib/loader/productresolver.cpp
index ec769ca8e..d7b82cab8 100644
--- a/src/lib/corelib/loader/productresolver.cpp
+++ b/src/lib/corelib/loader/productresolver.cpp
@@ -1460,8 +1460,9 @@ QVariantMap PropertiesEvaluator::evaluateProperties(
evaluateProperty(item, it.key(), it.value(), result, checkErrors);
}
return lookupPrototype && propertiesContainer->prototype()
- ? evaluateProperties(item, propertiesContainer->prototype(), result, true, checkErrors)
- : result;
+ && propertiesContainer->prototype()->type() != ItemType::Module
+ ? evaluateProperties(item, propertiesContainer->prototype(), result, true, checkErrors)
+ : result;
}
QVariantMap PropertiesEvaluator::evaluateProperties(Item *item, bool lookupPrototype,