aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-05-09 15:55:07 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-05-12 16:55:30 +0200
commit33f0e83c0cd2c2f149f2b03ac7cb4ba9dd22fb1a (patch)
tree20d071857dbd70bf226831420735afdb14a508a7 /src/lib/corelib/language
parent44fb1b39f48ba0c700e4ec90e84421eaf886c702 (diff)
make product.sourceDirectory available in Probe item
Task-number: QBS-393 Change-Id: I33c588fd0c00231db2ca4fa4f9b70a5b1f5bc18f Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/language')
-rw-r--r--src/lib/corelib/language/item.cpp8
-rw-r--r--src/lib/corelib/language/item.h1
-rw-r--r--src/lib/corelib/language/moduleloader.cpp3
-rw-r--r--src/lib/corelib/language/projectresolver.cpp5
4 files changed, 13 insertions, 4 deletions
diff --git a/src/lib/corelib/language/item.cpp b/src/lib/corelib/language/item.cpp
index 7b42df5e6..8b1dcb72a 100644
--- a/src/lib/corelib/language/item.cpp
+++ b/src/lib/corelib/language/item.cpp
@@ -122,6 +122,14 @@ JSSourceValuePtr Item::sourceProperty(const QString &name) const
return v.staticCast<JSSourceValue>();
}
+VariantValuePtr Item::variantProperty(const QString &name) const
+{
+ ValuePtr v = property(name);
+ if (!v || v->type() != Value::VariantValueType)
+ return VariantValuePtr();
+ return v.staticCast<VariantValue>();
+}
+
const PropertyDeclaration Item::propertyDeclaration(const QString &name) const
{
const PropertyDeclaration decl = m_propertyDeclarations.value(name);
diff --git a/src/lib/corelib/language/item.h b/src/lib/corelib/language/item.h
index 866927a0e..8859957b0 100644
--- a/src/lib/corelib/language/item.h
+++ b/src/lib/corelib/language/item.h
@@ -102,6 +102,7 @@ public:
ValuePtr property(const QString &name) const;
ItemValuePtr itemProperty(const QString &name, bool create = false);
JSSourceValuePtr sourceProperty(const QString &name) const;
+ VariantValuePtr variantProperty(const QString &name) const;
void setPropertyObserver(ItemObserver *observer) const;
void setProperty(const QString &name, const ValuePtr &value);
void setPropertyDeclaration(const QString &name, const PropertyDeclaration &declaration);
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index a709f7a57..beca9ee3d 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -288,6 +288,9 @@ void ModuleLoader::handleProduct(ProjectContext *projectContext, Item *item)
if (m_logger.traceEnabled())
m_logger.qbsTrace() << "[MODLDR] handleProduct " << item->file()->filePath();
+ item->setProperty(QLatin1String("sourceDirectory"),
+ VariantValue::create(QFileInfo(item->file()->filePath()).absolutePath()));
+
ProductContext productContext;
productContext.project = projectContext;
bool extraSearchPathsSet = false;
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index 7c532dee0..178e8e46d 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -274,9 +274,6 @@ void ProjectResolver::resolveProduct(Item *item, ProjectContext *projectContext)
ProductContext productContext;
m_productContext = &productContext;
productContext.item = item;
- const QString productSourceDirectory = QFileInfo(item->file()->filePath()).absolutePath();
- item->setProperty(QLatin1String("sourceDirectory"),
- VariantValue::create(productSourceDirectory));
item->setProperty(QLatin1String("buildDirectory"), VariantValue::create(projectContext
->project->topLevelProject()->buildDirectory));
ResolvedProductPtr product = ResolvedProduct::create();
@@ -314,7 +311,7 @@ void ProjectResolver::resolveProduct(Item *item, ProjectContext *projectContext)
product->fileTags = m_evaluator->fileTagsValue(item, QLatin1String("type"));
product->targetName = m_evaluator->stringValue(item, QLatin1String("targetName"));
- product->sourceDirectory = productSourceDirectory;
+ product->sourceDirectory = m_evaluator->stringValue(item, QLatin1String("sourceDirectory"));
product->destinationDirectory
= m_evaluator->stringValue(item, QLatin1String("destinationDirectory"));
product->location = item->location();