diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2017-12-15 11:14:54 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2017-12-15 11:14:54 +0100 |
commit | a9ac384513cc2c39b2005ee5651c34a49e801641 (patch) | |
tree | 830bf2b3bad36fec9b9fa0fa76f9dfa488f22da4 /src/lib/corelib/language/evaluatorscriptclass.cpp | |
parent | 126ce8cd2b2c0c10525e23c9900ec25b0bade601 (diff) | |
parent | 8815e0007006e996bc145a91970d71b9b4ae86d0 (diff) |
Merge 1.10 into master
Change-Id: Iab942ed25d06038cf8c172eb70dcd8e9a720e1c8
Diffstat (limited to 'src/lib/corelib/language/evaluatorscriptclass.cpp')
-rw-r--r-- | src/lib/corelib/language/evaluatorscriptclass.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/lib/corelib/language/evaluatorscriptclass.cpp b/src/lib/corelib/language/evaluatorscriptclass.cpp index fbe06f389..0a3f4d4c5 100644 --- a/src/lib/corelib/language/evaluatorscriptclass.cpp +++ b/src/lib/corelib/language/evaluatorscriptclass.cpp @@ -178,6 +178,13 @@ private: const Item *item = itemOfProperty; while (item->type() == ItemType::ModuleInstance) item = item->prototype(); + if (item->type() != ItemType::Module && item->type() != ItemType::Export) { + const QString errorMessage = Tr::tr("The special value 'original' can only " + "be used with module properties."); + extraScope = engine->currentContext()->throwError(errorMessage); + result.second = false; + return result; + } SVConverter converter(scriptClass, object, item->property(*propertyName), item, propertyName, data, &originalValue); converter.start(); @@ -470,6 +477,12 @@ static void convertToPropertyType_impl(const QString &pathPropertiesBaseDir, con if (v.isUndefined() || v.isError()) return; QString srcDir; + QString actualBaseDir; + if (item && !pathPropertiesBaseDir.isEmpty()) { + const VariantValueConstPtr itemSourceDir + = item->variantProperty(QLatin1String("sourceDirectory")); + actualBaseDir = itemSourceDir ? itemSourceDir->value().toString() : pathPropertiesBaseDir; + } switch (decl.type()) { case PropertyDeclaration::UnknownType: case PropertyDeclaration::Variant: @@ -488,7 +501,7 @@ static void convertToPropertyType_impl(const QString &pathPropertiesBaseDir, con makeTypeError(decl, location, v); break; } - const QString srcDir = item ? overriddenSourceDirectory(item, pathPropertiesBaseDir) + const QString srcDir = item ? overriddenSourceDirectory(item, actualBaseDir) : pathPropertiesBaseDir; if (!srcDir.isEmpty()) v = v.engine()->toScriptValue(QDir::cleanPath( @@ -500,7 +513,7 @@ static void convertToPropertyType_impl(const QString &pathPropertiesBaseDir, con makeTypeError(decl, location, v); break; case PropertyDeclaration::PathList: - srcDir = item ? overriddenSourceDirectory(item, pathPropertiesBaseDir) + srcDir = item ? overriddenSourceDirectory(item, actualBaseDir) : pathPropertiesBaseDir; // Fall-through. case PropertyDeclaration::StringList: |