summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2010-02-02 16:36:14 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2010-02-02 16:36:14 +0100
commit14ffb1e465c3122f9bce86a99fa31f7a8a6fe7ef (patch)
treee4286b872c8ded065fa445042d82c9eb80307b89 /src/plugins
parent03fa188b41e46d9b0f6ad4d4e6e97f2d3711568c (diff)
downloadqt-creator-14ffb1e465c3122f9bce86a99fa31f7a8a6fe7ef.tar.gz
Some refactoring needed to create ranges for JavaScript functions.
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/qmljseditor/qmlcodecompletion.cpp10
-rw-r--r--src/plugins/qmljseditor/qmlhoverhandler.cpp2
-rw-r--r--src/plugins/qmljseditor/qmljseditor.cpp33
-rw-r--r--src/plugins/qmljseditor/qmljseditor.h4
4 files changed, 39 insertions, 10 deletions
diff --git a/src/plugins/qmljseditor/qmlcodecompletion.cpp b/src/plugins/qmljseditor/qmlcodecompletion.cpp
index 043bdd28fa..097b659189 100644
--- a/src/plugins/qmljseditor/qmlcodecompletion.cpp
+++ b/src/plugins/qmljseditor/qmlcodecompletion.cpp
@@ -618,7 +618,7 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
const SemanticInfo semanticInfo = edit->semanticInfo();
const QmlJS::Snapshot snapshot = semanticInfo.snapshot;
- const Document::Ptr qmlDocument = semanticInfo.document;
+ const Document::Ptr document = semanticInfo.document;
const QFileInfo currentFileInfo(fileName);
@@ -632,11 +632,11 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
// Set up the current scope chain.
Interpreter::ObjectValue *scope = interp.globalObject();
- Link link(qmlDocument, snapshot, &interp);
+ Link link(document, snapshot, &interp);
- if (isQmlFile && qmlDocument) {
- AST::UiObjectMember *declaringMember = semanticInfo.declaringMember(editor->position());
- scope = link.scopeChainAt(qmlDocument, declaringMember);
+ if (document) {
+ AST::Node *declaringMember = semanticInfo.declaringMember(editor->position());
+ scope = link.scopeChainAt(document, declaringMember);
}
// Search for the operator that triggered the completion.
diff --git a/src/plugins/qmljseditor/qmlhoverhandler.cpp b/src/plugins/qmljseditor/qmlhoverhandler.cpp
index fc2dd793d1..979d8ea490 100644
--- a/src/plugins/qmljseditor/qmlhoverhandler.cpp
+++ b/src/plugins/qmljseditor/qmlhoverhandler.cpp
@@ -169,7 +169,7 @@ void QmlHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in
if (m_helpId.isEmpty()) {
AST::Node *node = semanticInfo.nodeUnderCursor(pos);
if (node && !(AST::cast<AST::StringLiteral *>(node) != 0 || AST::cast<AST::NumericLiteral *>(node) != 0)) {
- AST::UiObjectMember *declaringMember = semanticInfo.declaringMember(pos);
+ AST::Node *declaringMember = semanticInfo.declaringMember(pos);
Interpreter::Engine interp;
Link link(qmlDocument, snapshot, &interp);
diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index 56c8790b5b..19c3d441dd 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -409,6 +409,20 @@ protected:
return true;
}
+#if 0 // ### create ranges for function declarations.
+ virtual bool visit(AST::FunctionExpression *ast)
+ {
+ _ranges.append(createRange(ast));
+ return true;
+ }
+
+ virtual bool visit(AST::FunctionDeclaration *ast)
+ {
+ _ranges.append(createRange(ast));
+ return true;
+ }
+#endif
+
Range createRange(AST::UiObjectMember *member, AST::UiObjectInitializer *ast)
{
Range range;
@@ -422,6 +436,21 @@ protected:
range.end.setPosition(ast->rbraceToken.end());
return range;
}
+
+ Range createRange(AST::FunctionExpression *ast)
+ {
+ Range range;
+
+ range.ast = ast;
+
+ range.begin = QTextCursor(_textDocument);
+ range.begin.setPosition(ast->lbraceToken.begin());
+
+ range.end = QTextCursor(_textDocument);
+ range.end.setPosition(ast->rbraceToken.end());
+ return range;
+ }
+
};
@@ -463,9 +492,9 @@ protected:
} // end of anonymous namespace
-AST::UiObjectMember *SemanticInfo::declaringMember(int cursorPosition) const
+AST::Node *SemanticInfo::declaringMember(int cursorPosition) const
{
- AST::UiObjectMember *declaringMember = 0;
+ AST::Node *declaringMember = 0;
for (int i = ranges.size() - 1; i != -1; --i) {
const Range &range = ranges.at(i);
diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h
index 28e50bb890..c332cc66d6 100644
--- a/src/plugins/qmljseditor/qmljseditor.h
+++ b/src/plugins/qmljseditor/qmljseditor.h
@@ -93,7 +93,7 @@ public:
Range(): ast(0) {}
public: // attributes
- QmlJS::AST::UiObjectMember *ast;
+ QmlJS::AST::Node *ast;
QTextCursor begin;
QTextCursor end;
};
@@ -106,7 +106,7 @@ public:
int revision() const;
// Returns the declaring member
- QmlJS::AST::UiObjectMember *declaringMember(int cursorPosition) const;
+ QmlJS::AST::Node *declaringMember(int cursorPosition) const;
// Returns the AST node under cursor
QmlJS::AST::Node *nodeUnderCursor(int cursorPosition) const;