aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/evaluatorscriptclass.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2017-12-15 11:14:54 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2017-12-15 11:14:54 +0100
commita9ac384513cc2c39b2005ee5651c34a49e801641 (patch)
tree830bf2b3bad36fec9b9fa0fa76f9dfa488f22da4 /src/lib/corelib/language/evaluatorscriptclass.cpp
parent126ce8cd2b2c0c10525e23c9900ec25b0bade601 (diff)
parent8815e0007006e996bc145a91970d71b9b4ae86d0 (diff)
Merge 1.10 into master
Diffstat (limited to 'src/lib/corelib/language/evaluatorscriptclass.cpp')
-rw-r--r--src/lib/corelib/language/evaluatorscriptclass.cpp17
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: