diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2023-08-02 14:48:21 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2023-08-02 21:33:12 +0000 |
commit | 456d5c10e34c8f519b3fe049cd286fdf4a5776f1 (patch) | |
tree | b5bdde231bc84f1cd5b5e2ad2dde2df682cb19ea | |
parent | 07f754f8a0a188584bc9784324e53b4aec26c255 (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.cpp | 3 | ||||
-rw-r--r-- | src/lib/corelib/loader/productresolver.cpp | 5 |
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, |