QmlJS: Make follow symbol work with member properties.

A full evaluate() call resolves the property and continues to the
underlying type. If we use Evaluate::reference() instead, we only the
first step is done and we can get at the source location if a
ASTPropertyReference is returned.

Reviewed-by: Erik Verbruggen
This commit is contained in:
Christian Kamm
2010-11-16 14:39:54 +01:00
parent 7dfb2bd577
commit 5f196cf5b8

View File

@@ -40,6 +40,7 @@
#include "qmljsautocompleter.h" #include "qmljsautocompleter.h"
#include <qmljs/qmljsbind.h> #include <qmljs/qmljsbind.h>
#include <qmljs/qmljsevaluate.h>
#include <qmljs/qmljsdocument.h> #include <qmljs/qmljsdocument.h>
#include <qmljs/qmljsicontextpane.h> #include <qmljs/qmljsicontextpane.h>
#include <qmljs/qmljslookupcontext.h> #include <qmljs/qmljslookupcontext.h>
@@ -1310,7 +1311,8 @@ TextEditor::BaseTextEditor::Link QmlJSTextEditor::findLinkAt(const QTextCursor &
} }
LookupContext::Ptr lookupContext = semanticInfo.lookupContext(semanticInfo.astPath(cursorPosition)); LookupContext::Ptr lookupContext = semanticInfo.lookupContext(semanticInfo.astPath(cursorPosition));
const Interpreter::Value *value = lookupContext->evaluate(node); Evaluate evaluator(lookupContext->context());
const Interpreter::Value *value = evaluator.reference(node);
QString fileName; QString fileName;
int line = 0, column = 0; int line = 0, column = 0;