diff options
author | Joerg Bornemann <joerg.bornemann@theqtcompany.com> | 2015-05-22 10:01:04 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@theqtcompany.com> | 2015-05-22 09:36:27 +0000 |
commit | d02e67dd9a11599d44a4a95953877d5ca4b707fe (patch) | |
tree | 7cb51a1879f8f461762331ecaf5edca3e1bcfa9d | |
parent | 760dc4ef7571e780489adcd51ddb80beb000bd21 (diff) |
move definingItem to Value
This is were it belongs.
Change-Id: I5b1511ddc54598972fb0a219a62402df49e77e20
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
-rw-r--r-- | src/lib/corelib/language/modulemerger.cpp | 13 | ||||
-rw-r--r-- | src/lib/corelib/language/modulemerger.h | 3 | ||||
-rw-r--r-- | src/lib/corelib/language/value.cpp | 23 | ||||
-rw-r--r-- | src/lib/corelib/language/value.h | 6 |
4 files changed, 23 insertions, 22 deletions
diff --git a/src/lib/corelib/language/modulemerger.cpp b/src/lib/corelib/language/modulemerger.cpp index 43ecc286b..19c929c31 100644 --- a/src/lib/corelib/language/modulemerger.cpp +++ b/src/lib/corelib/language/modulemerger.cpp @@ -105,9 +105,9 @@ void ModuleMerger::pushScalarProperties(Item::PropertyMap *dst, Item *srcItem) ValuePtr &v = (*dst)[it.key()]; if (v) continue; - JSSourceValuePtr clonedVal = srcVal->clone().dynamicCast<JSSourceValue>(); + ValuePtr clonedVal = srcVal->clone(); m_decls[clonedVal] = srcDecl; - setDefiningItem(clonedVal, origSrcItem); + clonedVal->setDefiningItem(origSrcItem); v = clonedVal; } } @@ -170,7 +170,7 @@ void ModuleMerger::pullListProperties(Item::PropertyMap *dst, Item *instance) continue; JSSourceValuePtr clonedVal = srcVal->clone().dynamicCast<JSSourceValue>(); m_decls[clonedVal] = srcDecl; - setDefiningItem(clonedVal, origInstance); + clonedVal->setDefiningItem(origInstance); ValuePtr &v = (*dst)[it.key()]; if (v) { JSSourceValuePtr dstSrcVal = v.dynamicCast<JSSourceValue>(); @@ -184,12 +184,5 @@ void ModuleMerger::pullListProperties(Item::PropertyMap *dst, Item *instance) } while (instance && instance->isModuleInstance()); } -void ModuleMerger::setDefiningItem(const JSSourceValuePtr &v, Item *item) -{ - v->setDefiningItem(item); - foreach (const JSSourceValue::Alternative &a, v->alternatives()) - a.value->setDefiningItem(item); -} - } // namespace Internal } // namespace qbs diff --git a/src/lib/corelib/language/modulemerger.h b/src/lib/corelib/language/modulemerger.h index 813603f5f..03796b3ff 100644 --- a/src/lib/corelib/language/modulemerger.h +++ b/src/lib/corelib/language/modulemerger.h @@ -52,13 +52,12 @@ private: void pushScalarProperties(Item::PropertyMap *dst, Item *srcItem); void mergeOutProps(Item::PropertyMap *dst, const Item::PropertyMap &src); void pullListProperties(Item::PropertyMap *dst, Item *instance); - static void setDefiningItem(const JSSourceValuePtr &v, Item *item); const Logger &m_logger; Item * const m_rootItem; Item *m_mergedModuleItem; const QStringList m_moduleName; - QHash<JSSourceValuePtr, PropertyDeclaration> m_decls; + QHash<ValuePtr, PropertyDeclaration> m_decls; QSet<const Item *> m_seenInstancesTopDown; QSet<const Item *> m_seenInstancesBottomUp; }; diff --git a/src/lib/corelib/language/value.cpp b/src/lib/corelib/language/value.cpp index 62dbfed17..217af70aa 100644 --- a/src/lib/corelib/language/value.cpp +++ b/src/lib/corelib/language/value.cpp @@ -37,7 +37,7 @@ namespace qbs { namespace Internal { Value::Value(Type t) - : m_type(t) + : m_type(t), m_definingItem(0) { } @@ -45,9 +45,19 @@ Value::~Value() { } +Item *Value::definingItem() const +{ + return m_definingItem; +} + +void Value::setDefiningItem(Item *item) +{ + m_definingItem = item; +} + JSSourceValue::JSSourceValue() - : Value(JSSourceValueType), m_line(-1), m_column(-1), m_definingItem(0) + : Value(JSSourceValueType), m_line(-1), m_column(-1) { } @@ -95,14 +105,11 @@ void JSSourceValue::setHasFunctionForm(bool b) m_flags &= ~HasFunctionForm; } -Item *JSSourceValue::definingItem() const -{ - return m_definingItem; -} - void JSSourceValue::setDefiningItem(Item *item) { - m_definingItem = item; + Value::setDefiningItem(item); + foreach (const JSSourceValue::Alternative &a, m_alternatives) + a.value->setDefiningItem(item); } JSSourceValuePtr JSSourceValue::next() const diff --git a/src/lib/corelib/language/value.h b/src/lib/corelib/language/value.h index fb130276a..f79ee87e6 100644 --- a/src/lib/corelib/language/value.h +++ b/src/lib/corelib/language/value.h @@ -60,8 +60,12 @@ public: virtual ValuePtr clone() const = 0; virtual CodeLocation location() const { return CodeLocation(); } + Item *definingItem() const; + virtual void setDefiningItem(Item *item); + private: Type m_type; + Item *m_definingItem; }; class ValueHandler @@ -128,7 +132,6 @@ public: void setAlternatives(const QList<Alternative> &alternatives) { m_alternatives = alternatives; } void addAlternative(const Alternative &alternative) { m_alternatives.append(alternative); } - Item *definingItem() const; void setDefiningItem(Item *item); JSSourceValuePtr next() const; @@ -142,7 +145,6 @@ private: Flags m_flags; JSSourceValuePtr m_baseValue; QList<Alternative> m_alternatives; - Item *m_definingItem; JSSourceValuePtr m_next; }; |