diff --git a/src/shared/cplusplus/Symbol.cpp b/src/shared/cplusplus/Symbol.cpp index 6c506c1700cb36087e63c60e38ca349511b9a70f..93725ee22465845d5e86f0fa28ea557a7ec82d4b 100644 --- a/src/shared/cplusplus/Symbol.cpp +++ b/src/shared/cplusplus/Symbol.cpp @@ -161,7 +161,7 @@ private: }; Symbol::Symbol(TranslationUnit *translationUnit, unsigned sourceLocation, const Name *name) - : _translationUnit(translationUnit), + : _control(translationUnit->control()), _sourceLocation(sourceLocation), _sourceOffset(0), _startOffset(0), @@ -183,15 +183,10 @@ Symbol::~Symbol() { } Control *Symbol::control() const -{ - if (_translationUnit) - return _translationUnit->control(); - - return 0; -} +{ return _control; } TranslationUnit *Symbol::translationUnit() const -{ return _translationUnit; } +{ return _control->translationUnit(); } void Symbol::visitSymbol(SymbolVisitor *visitor) { diff --git a/src/shared/cplusplus/Symbol.h b/src/shared/cplusplus/Symbol.h index f45ce88c0c4e93cdccdc935358a23e89862efd8e..628261b4b9a63c7485d679d8cd7cbe44976cce5c 100644 --- a/src/shared/cplusplus/Symbol.h +++ b/src/shared/cplusplus/Symbol.h @@ -87,9 +87,6 @@ public: /// Destroy this Symbol. virtual ~Symbol(); - /// Returns this Symbol's Control object. - Control *control() const; - /// Returns this Symbol's source location. unsigned sourceLocation() const; @@ -323,10 +320,14 @@ public: protected: virtual void visitSymbol0(SymbolVisitor *visitor) = 0; + /// Returns this Symbol's Control object. + Control *control() const; + + /// Returns this Symbol's TranslationUnit. TranslationUnit *translationUnit() const; private: - TranslationUnit *_translationUnit; + Control *_control; unsigned _sourceLocation; unsigned _sourceOffset; unsigned _startOffset;