summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/parser/javascriptast_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml/parser/javascriptast_p.h')
-rw-r--r--src/declarative/qml/parser/javascriptast_p.h241
1 files changed, 157 insertions, 84 deletions
diff --git a/src/declarative/qml/parser/javascriptast_p.h b/src/declarative/qml/parser/javascriptast_p.h
index dabc0e0..4aa89c9 100644
--- a/src/declarative/qml/parser/javascriptast_p.h
+++ b/src/declarative/qml/parser/javascriptast_p.h
@@ -128,6 +128,11 @@ public:
startLine(0), startColumn(0)
{ }
+ bool isValid() const { return length != 0; }
+
+ quint32 begin() const { return offset; }
+ quint32 end() const { return offset + length; }
+
// attributes
// ### encode
quint32 offset;
@@ -2175,6 +2180,40 @@ public:
UiObjectMemberList *members;
};
+class UiQualifiedId: public Node
+{
+public:
+ JAVASCRIPT_DECLARE_AST_NODE(UiQualifiedId)
+
+ UiQualifiedId(JavaScriptNameIdImpl *name)
+ : next(this), name(name)
+ { kind = K; }
+
+ UiQualifiedId(UiQualifiedId *previous, JavaScriptNameIdImpl *name)
+ : name(name)
+ {
+ kind = K;
+ next = previous->next;
+ previous->next = this;
+ }
+
+ virtual ~UiQualifiedId() {}
+
+ UiQualifiedId *finish()
+ {
+ UiQualifiedId *head = next;
+ next = 0;
+ return head;
+ }
+
+ virtual void accept0(Visitor *visitor);
+
+// attributes
+ UiQualifiedId *next;
+ JavaScriptNameIdImpl *name;
+ SourceLocation identifierToken;
+};
+
class UiImport: public Node
{
public:
@@ -2227,6 +2266,57 @@ public:
class UiObjectMember: public Node
{
+public:
+ virtual SourceLocation firstSourceLocation() const = 0;
+ virtual SourceLocation lastSourceLocation() const = 0;
+};
+
+class UiObjectMemberList: public Node
+{
+public:
+ JAVASCRIPT_DECLARE_AST_NODE(UiObjectMemberList)
+
+ UiObjectMemberList(UiObjectMember *member)
+ : next(this), member(member)
+ { kind = K; }
+
+ UiObjectMemberList(UiObjectMemberList *previous, UiObjectMember *member)
+ : member(member)
+ {
+ kind = K;
+ next = previous->next;
+ previous->next = this;
+ }
+
+ virtual void accept0(Visitor *visitor);
+
+ UiObjectMemberList *finish()
+ {
+ UiObjectMemberList *head = next;
+ next = 0;
+ return head;
+ }
+
+// attributes
+ UiObjectMemberList *next;
+ UiObjectMember *member;
+};
+
+class UiObjectInitializer: public Node
+{
+public:
+ JAVASCRIPT_DECLARE_AST_NODE(UiObjectInitializer)
+
+ UiObjectInitializer(UiObjectMemberList *members)
+ : members(members)
+ { kind = K; }
+
+ virtual void accept0(Visitor *visitor);
+
+// attributes
+ SourceLocation lbraceToken;
+ UiObjectMemberList *members;
+ SourceLocation rbraceToken;
};
class UiPublicMember: public UiObjectMember
@@ -2245,6 +2335,22 @@ public:
: memberType(memberType), name(name), expression(expression), isDefaultMember(false)
{ kind = K; }
+ virtual SourceLocation firstSourceLocation() const
+ { return publicToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ {
+ if (expression)
+ return expression->lastSourceLocation();
+ else if (colonToken.isValid())
+ return colonToken;
+ else if (identifierToken.isValid())
+ return identifierToken;
+ else if (attributeTypeToken.isValid())
+ return attributeTypeToken;
+ return publicToken;
+ }
+
virtual void accept0(Visitor *visitor);
// attributes
@@ -2268,29 +2374,23 @@ public:
: name(name), initializer(initializer)
{ kind = K; }
- virtual void accept0(Visitor *visitor);
-
-// attributes
- JavaScriptNameIdImpl *name;
- UiObjectInitializer *initializer;
- SourceLocation identifierToken;
-};
+ virtual SourceLocation firstSourceLocation() const
+ { return identifierToken; }
-class UiObjectInitializer: public Node
-{
-public:
- JAVASCRIPT_DECLARE_AST_NODE(UiObjectInitializer)
+ virtual SourceLocation lastSourceLocation() const
+ {
+ if (initializer)
+ return initializer->rbraceToken;
- UiObjectInitializer(UiObjectMemberList *members)
- : members(members)
- { kind = K; }
+ return identifierToken;
+ }
virtual void accept0(Visitor *visitor);
// attributes
- SourceLocation lbraceToken;
- UiObjectMemberList *members;
- SourceLocation rbraceToken;
+ JavaScriptNameIdImpl *name;
+ UiObjectInitializer *initializer;
+ SourceLocation identifierToken;
};
class UiSourceElement: public UiObjectMember
@@ -2302,6 +2402,27 @@ public:
: sourceElement(sourceElement)
{ kind = K; }
+ virtual SourceLocation firstSourceLocation() const
+ {
+ if (FunctionDeclaration *funDecl = cast<FunctionDeclaration *>(sourceElement))
+ return funDecl->firstSourceLocation();
+ else if (VariableStatement *varStmt = cast<VariableStatement *>(sourceElement))
+ return varStmt->firstSourceLocation();
+
+ return SourceLocation();
+ }
+
+ virtual SourceLocation lastSourceLocation() const
+ {
+ if (FunctionDeclaration *funDecl = cast<FunctionDeclaration *>(sourceElement))
+ return funDecl->lastSourceLocation();
+ else if (VariableStatement *varStmt = cast<VariableStatement *>(sourceElement))
+ return varStmt->lastSourceLocation();
+
+ return SourceLocation();
+ }
+
+
virtual void accept0(Visitor *visitor);
// attributes
@@ -2321,6 +2442,12 @@ public:
initializer(initializer)
{ kind = K; }
+ virtual SourceLocation firstSourceLocation() const
+ { return qualifiedId->identifierToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return initializer->rbraceToken; }
+
virtual void accept0(Visitor *visitor);
// attributes
@@ -2342,6 +2469,12 @@ public:
statement(statement)
{ kind = K; }
+ virtual SourceLocation firstSourceLocation() const
+ { return qualifiedId->identifierToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return statement->lastSourceLocation(); }
+
virtual void accept0(Visitor *visitor);
// attributes
@@ -2361,6 +2494,12 @@ public:
members(members)
{ kind = K; }
+ virtual SourceLocation firstSourceLocation() const
+ { return lbracketToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return rbracketToken; }
+
virtual void accept0(Visitor *visitor);
// attributes
@@ -2368,75 +2507,9 @@ public:
UiObjectMemberList *members;
SourceLocation colonToken;
SourceLocation lbracketToken;
- SourceLocation rbraceToken;
-};
-
-class UiObjectMemberList: public Node
-{
-public:
- JAVASCRIPT_DECLARE_AST_NODE(UiObjectMemberList)
-
- UiObjectMemberList(UiObjectMember *member)
- : next(this), member(member)
- { kind = K; }
-
- UiObjectMemberList(UiObjectMemberList *previous, UiObjectMember *member)
- : member(member)
- {
- kind = K;
- next = previous->next;
- previous->next = this;
- }
-
- virtual void accept0(Visitor *visitor);
-
- UiObjectMemberList *finish()
- {
- UiObjectMemberList *head = next;
- next = 0;
- return head;
- }
-
-// attributes
- UiObjectMemberList *next;
- UiObjectMember *member;
-};
-
-class UiQualifiedId: public Node
-{
-public:
- JAVASCRIPT_DECLARE_AST_NODE(UiQualifiedId)
-
- UiQualifiedId(JavaScriptNameIdImpl *name)
- : next(this), name(name)
- { kind = K; }
-
- UiQualifiedId(UiQualifiedId *previous, JavaScriptNameIdImpl *name)
- : name(name)
- {
- kind = K;
- next = previous->next;
- previous->next = this;
- }
-
- virtual ~UiQualifiedId() {}
-
- UiQualifiedId *finish()
- {
- UiQualifiedId *head = next;
- next = 0;
- return head;
- }
-
- virtual void accept0(Visitor *visitor);
-
-// attributes
- UiQualifiedId *next;
- JavaScriptNameIdImpl *name;
- SourceLocation identifierToken;
+ SourceLocation rbracketToken;
};
-
} } // namespace AST