Quickfix: Add a typeOf helper to conveniently get the type of an expr.

Reviewed-by: Erik Verbruggen
This commit is contained in:
Christian Kamm
2009-12-23 12:55:35 +01:00
parent 77b59b02ac
commit 0daf22c7a0
2 changed files with 26 additions and 3 deletions

View File

@@ -841,7 +841,10 @@ Snapshot QuickFixOperation::snapshot() const
{ return _snapshot; }
void QuickFixOperation::setSnapshot(const CPlusPlus::Snapshot &snapshot)
{ _snapshot = snapshot; }
{
_snapshot = snapshot;
_typeOfExpression.setSnapshot(snapshot);
}
CPPEditor *QuickFixOperation::editor() const
{ return _editor; }
@@ -1032,7 +1035,7 @@ QString QuickFixOperation::textOf(int firstOffset, int lastOffset) const
return tc.selectedText();
}
QString QuickFixOperation::textOf(AST *ast) const
QString QuickFixOperation::textOf(const AST *ast) const
{
return textOf(startOf(ast), endOf(ast));
}
@@ -1054,6 +1057,22 @@ void QuickFixOperation::apply()
_textCursor.endEditBlock();
}
/**
* Returns a list of possible fully specified types associated with the
* given expression.
*
* NOTE: The fully specified types only stay valid until the next call to typeOf.
*/
const QList<LookupItem> QuickFixOperation::typeOf(const CPlusPlus::ExpressionAST *ast)
{
unsigned line, column;
document()->translationUnit()->getTokenStartPosition(ast->firstToken(), &line, &column);
Symbol *lastVisibleSymbol = document()->findSymbolAt(line, column);
return _typeOfExpression(textOf(ast), document(), lastVisibleSymbol,
TypeOfExpression::Preprocess);
}
CPPQuickFixCollector::CPPQuickFixCollector()
: _modelManager(CppTools::CppModelManagerInterface::instance()), _editor(0)
{ }