summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libs/cplusplus/ASTParent.cpp4
-rw-r--r--src/libs/cplusplus/ASTParent.h2
-rw-r--r--src/libs/cplusplus/CheckUndefinedSymbols.cpp2
-rw-r--r--src/libs/cplusplus/CppDocument.cpp2
-rw-r--r--src/libs/cplusplus/FindUsages.cpp4
-rw-r--r--src/libs/cplusplus/ResolveExpression.cpp4
-rw-r--r--src/plugins/cppeditor/cppeditor.cpp18
-rw-r--r--src/plugins/cppeditor/cppquickfix.cpp4
-rw-r--r--src/shared/cplusplus/ASTVisitor.cpp16
-rw-r--r--src/shared/cplusplus/ASTVisitor.h7
-rw-r--r--src/shared/cplusplus/Semantic.cpp13
-rw-r--r--src/shared/cplusplus/Semantic.h3
-rw-r--r--src/shared/cplusplus/SemanticCheck.cpp2
13 files changed, 49 insertions, 32 deletions
diff --git a/src/libs/cplusplus/ASTParent.cpp b/src/libs/cplusplus/ASTParent.cpp
index e751d504f9..5e9d5f98b6 100644
--- a/src/libs/cplusplus/ASTParent.cpp
+++ b/src/libs/cplusplus/ASTParent.cpp
@@ -32,8 +32,8 @@
using namespace CPlusPlus;
-ASTParent::ASTParent(Control *control, AST *rootNode)
- : ASTVisitor(control)
+ASTParent::ASTParent(TranslationUnit *translationUnit, AST *rootNode)
+ : ASTVisitor(translationUnit)
{
accept(rootNode);
}
diff --git a/src/libs/cplusplus/ASTParent.h b/src/libs/cplusplus/ASTParent.h
index ec5ea563d0..a934f9c80d 100644
--- a/src/libs/cplusplus/ASTParent.h
+++ b/src/libs/cplusplus/ASTParent.h
@@ -39,7 +39,7 @@ namespace CPlusPlus {
class CPLUSPLUS_EXPORT ASTParent: protected ASTVisitor
{
public:
- ASTParent(Control *control, AST *rootNode);
+ ASTParent(TranslationUnit *transaltionUnit, AST *rootNode);
virtual ~ASTParent();
AST *operator()(AST *ast) const;
diff --git a/src/libs/cplusplus/CheckUndefinedSymbols.cpp b/src/libs/cplusplus/CheckUndefinedSymbols.cpp
index 6010e4283e..51d02a0dc4 100644
--- a/src/libs/cplusplus/CheckUndefinedSymbols.cpp
+++ b/src/libs/cplusplus/CheckUndefinedSymbols.cpp
@@ -41,7 +41,7 @@ using namespace CPlusPlus;
CheckUndefinedSymbols::CheckUndefinedSymbols(Document::Ptr doc)
- : ASTVisitor(doc->control()), _doc(doc)
+ : ASTVisitor(doc->translationUnit()), _doc(doc)
{ }
CheckUndefinedSymbols::~CheckUndefinedSymbols()
diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp
index bd86eecaae..24614c06e1 100644
--- a/src/libs/cplusplus/CppDocument.cpp
+++ b/src/libs/cplusplus/CppDocument.cpp
@@ -404,7 +404,7 @@ void Document::check(CheckMode mode)
if (! isParsed())
parse();
- Semantic semantic(_control);
+ Semantic semantic(_translationUnit);
if (mode == FastCheck)
semantic.setSkipFunctionBodies(true);
diff --git a/src/libs/cplusplus/FindUsages.cpp b/src/libs/cplusplus/FindUsages.cpp
index 5914322404..7374e034fb 100644
--- a/src/libs/cplusplus/FindUsages.cpp
+++ b/src/libs/cplusplus/FindUsages.cpp
@@ -41,12 +41,12 @@
using namespace CPlusPlus;
FindUsages::FindUsages(Document::Ptr doc, const Snapshot &snapshot, QFutureInterface<Usage> *future)
- : ASTVisitor(doc->control()),
+ : ASTVisitor(doc->translationUnit()),
_future(future),
_doc(doc),
_snapshot(snapshot),
_source(_doc->source()),
- _sem(doc->control()),
+ _sem(doc->translationUnit()),
_inSimpleDeclaration(0)
{
_snapshot.insert(_doc);
diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp
index ba6952e7bf..de26ea9c5d 100644
--- a/src/libs/cplusplus/ResolveExpression.cpp
+++ b/src/libs/cplusplus/ResolveExpression.cpp
@@ -72,9 +72,9 @@ static QList<_Tp> removeDuplicates(const QList<_Tp> &results)
// ResolveExpression
/////////////////////////////////////////////////////////////////////
ResolveExpression::ResolveExpression(const LookupContext &context)
- : ASTVisitor(context.expressionDocument()->control()),
+ : ASTVisitor(context.expressionDocument()->translationUnit()),
_context(context),
- sem(_context.control())
+ sem(context.expressionDocument()->translationUnit())
{ }
ResolveExpression::~ResolveExpression()
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index b9af8ad076..59d06a9039 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -191,8 +191,8 @@ class FindUses: protected ASTVisitor
FindScope findScope;
public:
- FindUses(Control *control)
- : ASTVisitor(control)
+ FindUses(TranslationUnit *translationUnit)
+ : ASTVisitor(translationUnit)
{ }
// local and external uses.
@@ -382,8 +382,8 @@ class FunctionDefinitionUnderCursor: protected ASTVisitor
FunctionDefinitionAST *_functionDefinition;
public:
- FunctionDefinitionUnderCursor(Control *control)
- : ASTVisitor(control),
+ FunctionDefinitionUnderCursor(TranslationUnit *translationUnit)
+ : ASTVisitor(translationUnit),
_line(0), _column(0)
{ }
@@ -427,8 +427,9 @@ class ProcessDeclarators: protected ASTVisitor
bool _visitFunctionDeclarator;
public:
- ProcessDeclarators(Control *control)
- : ASTVisitor(control), _visitFunctionDeclarator(true)
+ ProcessDeclarators(TranslationUnit *translationUnit)
+ : ASTVisitor(translationUnit),
+ _visitFunctionDeclarator(true)
{ }
QList<DeclaratorIdAST *> operator()(FunctionDefinitionAST *ast)
@@ -2030,14 +2031,13 @@ SemanticInfo SemanticHighlighter::semanticInfo(const Source &source)
doc->check();
}
- Control *control = doc->control();
TranslationUnit *translationUnit = doc->translationUnit();
AST *ast = translationUnit->ast();
- FunctionDefinitionUnderCursor functionDefinitionUnderCursor(control);
+ FunctionDefinitionUnderCursor functionDefinitionUnderCursor(translationUnit);
FunctionDefinitionAST *currentFunctionDefinition = functionDefinitionUnderCursor(ast, source.line, source.column);
- FindUses useTable(control);
+ FindUses useTable(translationUnit);
useTable(currentFunctionDefinition);
SemanticInfo semanticInfo;
diff --git a/src/plugins/cppeditor/cppquickfix.cpp b/src/plugins/cppeditor/cppquickfix.cpp
index db3a814254..11e9c221ae 100644
--- a/src/plugins/cppeditor/cppquickfix.cpp
+++ b/src/plugins/cppeditor/cppquickfix.cpp
@@ -54,7 +54,9 @@ class ASTPath: public ASTVisitor
public:
ASTPath(Document::Ptr doc)
- : ASTVisitor(doc->control()), _doc(doc), _line(0), _column(0) {}
+ : ASTVisitor(doc->translationUnit()),
+ _doc(doc), _line(0), _column(0)
+ {}
QList<AST *> operator()(const QTextCursor &cursor)
{
diff --git a/src/shared/cplusplus/ASTVisitor.cpp b/src/shared/cplusplus/ASTVisitor.cpp
index 6f331515a0..9281efdf2b 100644
--- a/src/shared/cplusplus/ASTVisitor.cpp
+++ b/src/shared/cplusplus/ASTVisitor.cpp
@@ -53,8 +53,8 @@
using namespace CPlusPlus;
-ASTVisitor::ASTVisitor(Control *control)
- : _control(control)
+ASTVisitor::ASTVisitor(TranslationUnit *translationUnit)
+ : _translationUnit(translationUnit)
{ }
ASTVisitor::~ASTVisitor()
@@ -64,10 +64,18 @@ void ASTVisitor::accept(AST *ast)
{ AST::accept(ast, this); }
Control *ASTVisitor::control() const
-{ return _control; }
+{
+ if (_translationUnit)
+ return _translationUnit->control();
+
+ return 0;
+}
TranslationUnit *ASTVisitor::translationUnit() const
-{ return _control->translationUnit(); }
+{ return _translationUnit; }
+
+void ASTVisitor::setTranslationUnit(TranslationUnit *translationUnit)
+{ _translationUnit = translationUnit; }
unsigned ASTVisitor::tokenCount() const
{ return translationUnit()->tokenCount(); }
diff --git a/src/shared/cplusplus/ASTVisitor.h b/src/shared/cplusplus/ASTVisitor.h
index e1429fa2f6..0a42b6f4d4 100644
--- a/src/shared/cplusplus/ASTVisitor.h
+++ b/src/shared/cplusplus/ASTVisitor.h
@@ -61,12 +61,13 @@ class CPLUSPLUS_EXPORT ASTVisitor
void operator =(const ASTVisitor &other);
public:
- ASTVisitor(Control *control);
+ ASTVisitor(TranslationUnit *unit);
virtual ~ASTVisitor();
- Control *control() const;
TranslationUnit *translationUnit() const;
+ void setTranslationUnit(TranslationUnit *translationUnit);
+ Control *control() const;
unsigned tokenCount() const;
const Token &tokenAt(unsigned index) const;
int tokenKind(unsigned index) const;
@@ -352,7 +353,7 @@ public:
virtual void endVisit(ObjCSynchronizedStatementAST *) { }
private:
- Control *_control;
+ TranslationUnit *_translationUnit;
};
} // end of namespace CPlusPlus
diff --git a/src/shared/cplusplus/Semantic.cpp b/src/shared/cplusplus/Semantic.cpp
index 8baf10d4b0..23e2fa2c95 100644
--- a/src/shared/cplusplus/Semantic.cpp
+++ b/src/shared/cplusplus/Semantic.cpp
@@ -64,9 +64,10 @@ using namespace CPlusPlus;
class Semantic::Data
{
public:
- Data(Semantic *semantic, Control *control)
+ Data(Semantic *semantic, TranslationUnit *translationUnit)
: semantic(semantic),
- control(control),
+ translationUnit(translationUnit),
+ control(translationUnit->control()),
skipFunctionBodies(false),
visibility(Symbol::Public),
ojbcVisibility(Symbol::Protected),
@@ -90,6 +91,7 @@ public:
}
Semantic *semantic;
+ TranslationUnit *translationUnit;
Control *control;
bool skipFunctionBodies;
int visibility;
@@ -103,9 +105,9 @@ public:
CheckName *checkName;
};
-Semantic::Semantic(Control *control)
+Semantic::Semantic(TranslationUnit *translationUnit)
{
- d = new Data(this, control);
+ d = new Data(this, translationUnit);
d->checkSpecifier = new CheckSpecifier(this);
d->checkDeclaration = new CheckDeclaration(this);
d->checkDeclarator = new CheckDeclarator(this);
@@ -117,6 +119,9 @@ Semantic::Semantic(Control *control)
Semantic::~Semantic()
{ delete d; }
+TranslationUnit *Semantic::translationUnit() const
+{ return d->translationUnit; }
+
Control *Semantic::control() const
{ return d->control; }
diff --git a/src/shared/cplusplus/Semantic.h b/src/shared/cplusplus/Semantic.h
index 391872d847..4a2ebfc2fb 100644
--- a/src/shared/cplusplus/Semantic.h
+++ b/src/shared/cplusplus/Semantic.h
@@ -61,9 +61,10 @@ class CPLUSPLUS_EXPORT Semantic
void operator =(const Semantic &other);
public:
- Semantic(Control *control);
+ Semantic(TranslationUnit *translationUnit);
virtual ~Semantic();
+ TranslationUnit *translationUnit() const;
Control *control() const;
FullySpecifiedType check(SpecifierListAST *specifier, Scope *scope);
diff --git a/src/shared/cplusplus/SemanticCheck.cpp b/src/shared/cplusplus/SemanticCheck.cpp
index 1feffd93aa..b28c01636b 100644
--- a/src/shared/cplusplus/SemanticCheck.cpp
+++ b/src/shared/cplusplus/SemanticCheck.cpp
@@ -52,7 +52,7 @@
using namespace CPlusPlus;
SemanticCheck::SemanticCheck(Semantic *semantic)
- : ASTVisitor(semantic->control()),
+ : ASTVisitor(semantic->translationUnit()),
_semantic(semantic)
{ }