Make QmlJS::Link private. Use Context::build to set up a context.

This commit is contained in:
Christian Kamm
2010-02-04 10:19:37 +01:00
parent 14f483c67b
commit 25e04d8ef1
6 changed files with 40 additions and 39 deletions

View File

@@ -653,12 +653,11 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
const QIcon symbolIcon = iconForColor(Qt::darkCyan);
Interpreter::Engine interp;
Interpreter::Context context(&interp);
// Set up the current scope chain.
Link link(document, snapshot, &interp);
AST::Node *declaringMember = semanticInfo.declaringMember(editor->position());
link.scopeChainAt(document, declaringMember);
context.build(declaringMember, document, snapshot);
// Search for the operator that triggered the completion.
QChar completionOperator;
@@ -668,7 +667,7 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
if (completionOperator.isSpace() || completionOperator.isNull() || isDelimiter(completionOperator) ||
(completionOperator == QLatin1Char('(') && m_startPosition != editor->position())) {
// It's a global completion.
EnumerateProperties enumerateProperties(link.context());
EnumerateProperties enumerateProperties(&context);
enumerateProperties.setGlobalCompletion(true);
QHashIterator<QString, const Interpreter::Value *> it(enumerateProperties());
while (it.hasNext()) {
@@ -691,14 +690,14 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
//qDebug() << "expression:" << expression;
if (expression != 0) {
Check evaluate(link.context());
Check evaluate(&context);
// Evaluate the expression under cursor.
const Interpreter::Value *value = interp.convertToObject(evaluate(expression));
//qDebug() << "type:" << interp.typeId(value);
if (value && completionOperator == QLatin1Char('.')) { // member completion
EnumerateProperties enumerateProperties(link.context());
EnumerateProperties enumerateProperties(&context);
QHashIterator<QString, const Interpreter::Value *> it(enumerateProperties(value));
while (it.hasNext()) {
it.next();

View File

@@ -172,14 +172,14 @@ void QmlHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in
AST::Node *declaringMember = semanticInfo.declaringMember(pos);
Interpreter::Engine interp;
Link link(qmlDocument, snapshot, &interp);
link.scopeChainAt(qmlDocument, declaringMember);
Interpreter::Context context(&interp);
context.build(declaringMember, qmlDocument, snapshot);
Check check(link.context());
Check check(&context);
const Interpreter::Value *value = check(node);
QStringList baseClasses;
m_toolTip = prettyPrint(value, link.context(), &baseClasses);
m_toolTip = prettyPrint(value, &context, &baseClasses);
foreach (const QString &baseClass, baseClasses) {
QString helpId = QLatin1String("QML.");