Commit a9662aef authored by Christian Kamm's avatar Christian Kamm
Browse files

Add files missing from 02b7eacf

parent f0680840
#include "qmljsscopeastpath.h"
#include "parser/qmljsast_p.h"
using namespace QmlJS;
using namespace AST;
ScopeAstPath::ScopeAstPath(Document::Ptr doc)
: _doc(doc)
QList<Node *> ScopeAstPath::operator()(quint32 offset)
_offset = offset;
if (_doc)
Node::accept(_doc->ast(), this);
return _result;
void ScopeAstPath::accept(Node *node)
{ Node::acceptChild(node, this); }
bool ScopeAstPath::preVisit(Node *node)
if (Statement *stmt = node->statementCast()) {
return containsOffset(stmt->firstSourceLocation(), stmt->lastSourceLocation());
} else if (ExpressionNode *exp = node->expressionCast()) {
return containsOffset(exp->firstSourceLocation(), exp->lastSourceLocation());
} else if (UiObjectMember *ui = node->uiObjectMemberCast()) {
return containsOffset(ui->firstSourceLocation(), ui->lastSourceLocation());
return true;
bool ScopeAstPath::visit(UiObjectDefinition *node)
Node::accept(node->initializer, this);
return false;
bool ScopeAstPath::visit(UiObjectBinding *node)
Node::accept(node->initializer, this);
return false;
bool ScopeAstPath::visit(FunctionDeclaration *node)
return visit(static_cast<FunctionExpression *>(node));
bool ScopeAstPath::visit(FunctionExpression *node)
Node::accept(node->formals, this);
Node::accept(node->body, this);
return false;
bool ScopeAstPath::containsOffset(SourceLocation start, SourceLocation end)
return _offset >= start.begin() && _offset <= end.end();
#include "qmljs_global.h"
#include "parser/qmljsastvisitor_p.h"
#include "qmljsdocument.h"
namespace QmlJS {
class QMLJS_EXPORT ScopeAstPath: protected AST::Visitor
ScopeAstPath(Document::Ptr doc);
QList<AST::Node *> operator()(quint32 offset);
void accept(AST::Node *node);
using Visitor::visit;
virtual bool preVisit(AST::Node *node);
virtual bool visit(AST::UiObjectDefinition *node);
virtual bool visit(AST::UiObjectBinding *node);
virtual bool visit(AST::FunctionDeclaration *node);
virtual bool visit(AST::FunctionExpression *node);
bool containsOffset(AST::SourceLocation start, AST::SourceLocation end);
QList<AST::Node *> _result;
Document::Ptr _doc;
quint32 _offset;
} // namespace QmlJS
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment