summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Smith <msmith@trolltech.com>2009-05-11 09:36:57 (GMT)
committerMartin Smith <msmith@trolltech.com>2009-05-11 09:36:57 (GMT)
commitb7d067c3ec3b6b4f1b709b2e618b7fe77c8a0fe4 (patch)
tree4cb29a904246688012c0adfeda0bfc976bc1113a /src
parent936b9b898830c9d5e05be5da584a20b28db78e11 (diff)
parentfcc776acb3bb19189391bf804077e7dda51f291f (diff)
downloadQt-b7d067c3ec3b6b4f1b709b2e618b7fe77c8a0fe4.zip
Qt-b7d067c3ec3b6b4f1b709b2e618b7fe77c8a0fe4.tar.gz
Qt-b7d067c3ec3b6b4f1b709b2e618b7fe77c8a0fe4.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'src')
-rw-r--r--src/declarative/canvas/qsimplecanvas_graphicsview.cpp1
-rw-r--r--src/declarative/canvas/qsimplecanvasitem.cpp33
-rw-r--r--src/declarative/fx/qfxanchors.cpp344
-rw-r--r--src/declarative/fx/qfxanchors.h30
-rw-r--r--src/declarative/fx/qfxanchors_p.h4
-rw-r--r--src/declarative/fx/qfxpainteditem.cpp8
-rw-r--r--src/declarative/fx/qfxtextedit.cpp30
-rw-r--r--src/declarative/fx/qfxtextedit.h4
-rw-r--r--src/declarative/fx/qfxtextedit_p.h1
-rw-r--r--src/declarative/qml/parser/javascript.g11
-rw-r--r--src/declarative/qml/parser/javascriptgrammar.cpp1279
-rw-r--r--src/declarative/qml/parser/javascriptgrammar_p.h14
-rw-r--r--src/declarative/qml/parser/javascriptparser.cpp418
-rw-r--r--src/declarative/qml/parser/javascriptparser_p.h4
-rw-r--r--src/declarative/qml/qmlcontext.cpp64
-rw-r--r--src/declarative/qml/qmlcontext_p.h6
-rw-r--r--src/declarative/qml/qmldom.cpp72
-rw-r--r--src/declarative/qml/qmldom.h9
-rw-r--r--src/declarative/qml/qmlengine.cpp89
-rw-r--r--src/declarative/qml/qmlengine_p.h13
-rw-r--r--src/declarative/qml/qmlparser_p.h8
-rw-r--r--src/declarative/qml/qmlscriptparser.cpp2
-rw-r--r--src/declarative/qml/script/qmlbasicscript.cpp19
-rw-r--r--src/declarative/qml/script/qmlbasicscript_p.h8
-rw-r--r--src/declarative/util/qmlscript.cpp21
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp4
26 files changed, 1390 insertions, 1106 deletions
diff --git a/src/declarative/canvas/qsimplecanvas_graphicsview.cpp b/src/declarative/canvas/qsimplecanvas_graphicsview.cpp
index 5c6f2f5..dd4012b 100644
--- a/src/declarative/canvas/qsimplecanvas_graphicsview.cpp
+++ b/src/declarative/canvas/qsimplecanvas_graphicsview.cpp
@@ -110,6 +110,7 @@ void QSimpleGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
p = p->parent();
}
owner->mouseReleaseEvent(event);
+ ungrabMouse();
}
void QSimpleGraphicsItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
diff --git a/src/declarative/canvas/qsimplecanvasitem.cpp b/src/declarative/canvas/qsimplecanvasitem.cpp
index 90ee688..12c725c 100644
--- a/src/declarative/canvas/qsimplecanvasitem.cpp
+++ b/src/declarative/canvas/qsimplecanvasitem.cpp
@@ -104,48 +104,58 @@ bool QSimpleCanvasItem::mouseFilter(QGraphicsSceneMouseEvent *)
return false;
}
-void QSimpleCanvasItem::mousePressEvent(QGraphicsSceneMouseEvent *)
+void QSimpleCanvasItem::mousePressEvent(QGraphicsSceneMouseEvent *e)
{
+ e->ignore();
}
-void QSimpleCanvasItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *)
+void QSimpleCanvasItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *e)
{
+ e->ignore();
}
-void QSimpleCanvasItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *)
+void QSimpleCanvasItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *e)
{
+ e->ignore();
}
-void QSimpleCanvasItem::mouseMoveEvent(QGraphicsSceneMouseEvent *)
+void QSimpleCanvasItem::mouseMoveEvent(QGraphicsSceneMouseEvent *e)
{
+ e->ignore();
}
-void QSimpleCanvasItem::hoverEnterEvent(QGraphicsSceneHoverEvent *)
+void QSimpleCanvasItem::hoverEnterEvent(QGraphicsSceneHoverEvent *e)
{
+ e->ignore();
}
-void QSimpleCanvasItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *)
+void QSimpleCanvasItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *e)
{
+ e->ignore();
}
void QSimpleCanvasItem::mouseUngrabEvent()
{
}
-void QSimpleCanvasItem::keyPressEvent(QKeyEvent *)
+void QSimpleCanvasItem::keyPressEvent(QKeyEvent *e)
{
+ e->ignore();
}
-void QSimpleCanvasItem::keyReleaseEvent(QKeyEvent *)
+void QSimpleCanvasItem::keyReleaseEvent(QKeyEvent *e)
{
+ e->ignore();
}
-void QSimpleCanvasItem::focusOutEvent(QFocusEvent *)
+void QSimpleCanvasItem::focusOutEvent(QFocusEvent *e)
{
+ e->ignore();
}
-void QSimpleCanvasItem::focusInEvent(QFocusEvent *)
+void QSimpleCanvasItem::focusInEvent(QFocusEvent *e)
{
+ e->ignore();
}
void QSimpleCanvasItem::activePanelInEvent()
@@ -156,8 +166,9 @@ void QSimpleCanvasItem::activePanelOutEvent()
{
}
-void QSimpleCanvasItem::inputMethodEvent(QInputMethodEvent *)
+void QSimpleCanvasItem::inputMethodEvent(QInputMethodEvent *e)
{
+ e->ignore();
}
QVariant QSimpleCanvasItem::inputMethodQuery(Qt::InputMethodQuery) const
diff --git a/src/declarative/fx/qfxanchors.cpp b/src/declarative/fx/qfxanchors.cpp
index f570663..53d0187 100644
--- a/src/declarative/fx/qfxanchors.cpp
+++ b/src/declarative/fx/qfxanchors.cpp
@@ -43,9 +43,10 @@
#include "qfxitem.h"
#include <QDebug>
#include <QtDeclarative/qmlinfo.h>
-
+#include <QtDeclarative/qmlbindablevalue.h>
QT_BEGIN_NAMESPACE
+
QML_DEFINE_TYPE(QFxAnchors,Anchors);
//TODO: should we cache relationships, so we don't have to check each time (parent-child or sibling)?
@@ -227,7 +228,7 @@ void QFxAnchors::setCenteredIn(QFxItem* c)
setVerticalCenter(c->verticalCenter());
}
-void QFxAnchorsPrivate::connectVHelper(const QFxAnchorLine &edge, const char *slotString)
+void QFxAnchorsPrivate::connectVHelper(const QFxAnchorLine &edge)
{
//### should we do disconnects first? (will it be called more than once?)
Q_Q(QFxAnchors);
@@ -235,7 +236,7 @@ void QFxAnchorsPrivate::connectVHelper(const QFxAnchorLine &edge, const char *sl
switch(edge.anchorLine) {
case QFxAnchorLine::Bottom:
case QFxAnchorLine::VCenter:
- QObject::connect(edge.item, SIGNAL(heightChanged()), q, slotString);
+ QObject::connect(edge.item, SIGNAL(heightChanged()), q, SLOT(updateVerticalAnchors()));
break;
case QFxAnchorLine::Top: //no connection needed
default:
@@ -244,13 +245,13 @@ void QFxAnchorsPrivate::connectVHelper(const QFxAnchorLine &edge, const char *sl
} else if (edge.item->itemParent() == item->itemParent()) { //siblings
switch(edge.anchorLine) {
case QFxAnchorLine::Top:
- QObject::connect(edge.item, SIGNAL(topChanged()), q, slotString);
+ QObject::connect(edge.item, SIGNAL(topChanged()), q, SLOT(updateVerticalAnchors()));
break;
case QFxAnchorLine::Bottom:
- QObject::connect(edge.item, SIGNAL(bottomChanged()), q, slotString);
+ QObject::connect(edge.item, SIGNAL(bottomChanged()), q, SLOT(updateVerticalAnchors()));
break;
case QFxAnchorLine::VCenter:
- QObject::connect(edge.item, SIGNAL(vcenterChanged()), q, slotString);
+ QObject::connect(edge.item, SIGNAL(vcenterChanged()), q, SLOT(updateVerticalAnchors()));
break;
default:
break;
@@ -267,49 +268,44 @@ void QFxAnchors::connectVAnchors()
return;
if (d->usedAnchors & HasTopAnchor) {
- const char *slotStr = SLOT(updateTopAnchor());
-
//Handle stretching connections (if we have multiple horizontal anchors)
QFxAnchorLine *edge = 0;
if (d->usedAnchors & HasBottomAnchor) {
edge = &d->bottom;
- connect(this, SIGNAL(bottomMarginChanged()), this, slotStr);
+ connect(this, SIGNAL(bottomMarginChanged()), this, SLOT(updateVerticalAnchors()));
} else if (d->usedAnchors & HasVCenterAnchor) {
edge = &d->vCenter;
- connect(this, SIGNAL(verticalCenterOffsetChanged()), this, slotStr);
+ connect(this, SIGNAL(verticalCenterOffsetChanged()), this, SLOT(updateVerticalAnchors()));
}
if (edge) {
//we need to stretch
- d->connectVHelper(*edge, slotStr);
+ d->connectVHelper(*edge);
}
//Handle top
- d->connectVHelper(d->top, slotStr);
- connect(this, SIGNAL(topMarginChanged()), this, slotStr);
- updateTopAnchor();
+ d->connectVHelper(d->top);
+ connect(this, SIGNAL(topMarginChanged()), this, SLOT(updateVerticalAnchors()));
+ updateVerticalAnchors();
} else if (d->usedAnchors & HasBottomAnchor) {
- const char *slotStr = SLOT(updateBottomAnchor());
-
//Handle stretching connections (if we have multiple horizontal anchors)
if (d->usedAnchors & HasVCenterAnchor) {
- d->connectVHelper(d->vCenter, slotStr);
- connect(this, SIGNAL(verticalCenterOffsetChanged()), this, slotStr);
+ d->connectVHelper(d->vCenter);
+ connect(this, SIGNAL(verticalCenterOffsetChanged()), this, SLOT(updateVerticalAnchors()));
}
//Handle bottom
- d->connectVHelper(d->bottom, slotStr);
- connect(this, SIGNAL(bottomMarginChanged()), this, slotStr);
- updateBottomAnchor();
+ d->connectVHelper(d->bottom);
+ connect(this, SIGNAL(bottomMarginChanged()), this, SLOT(updateVerticalAnchors()));
+ updateVerticalAnchors();
} else if (d->usedAnchors & HasVCenterAnchor) {
//Handle vCenter
- const char *slotStr = SLOT(updateVCenterAnchor());
- d->connectVHelper(d->vCenter, slotStr);
- connect(this, SIGNAL(verticalCenterOffsetChanged()), this, slotStr);
- updateVCenterAnchor();
+ d->connectVHelper(d->vCenter);
+ connect(this, SIGNAL(verticalCenterOffsetChanged()), this, SLOT(updateVerticalAnchors()));
+ updateVerticalAnchors();
}
}
-void QFxAnchorsPrivate::connectHHelper(const QFxAnchorLine &edge, const char *slotString)
+void QFxAnchorsPrivate::connectHHelper(const QFxAnchorLine &edge)
{
//### should we do disconnects first? (will it be called more than once?)
Q_Q(QFxAnchors);
@@ -317,7 +313,7 @@ void QFxAnchorsPrivate::connectHHelper(const QFxAnchorLine &edge, const char *sl
switch(edge.anchorLine) {
case QFxAnchorLine::Right:
case QFxAnchorLine::HCenter:
- QObject::connect(edge.item, SIGNAL(widthChanged()), q, slotString);
+ QObject::connect(edge.item, SIGNAL(widthChanged()), q, SLOT(updateHorizontalAnchors()));
break;
case QFxAnchorLine::Left: //no connection needed
default:
@@ -326,13 +322,13 @@ void QFxAnchorsPrivate::connectHHelper(const QFxAnchorLine &edge, const char *sl
} else if (edge.item->itemParent() == item->itemParent()) { //siblings
switch(edge.anchorLine) {
case QFxAnchorLine::Left:
- QObject::connect(edge.item, SIGNAL(leftChanged()), q, slotString);
+ QObject::connect(edge.item, SIGNAL(leftChanged()), q, SLOT(updateHorizontalAnchors()));
break;
case QFxAnchorLine::Right:
- QObject::connect(edge.item, SIGNAL(rightChanged()), q, slotString);
+ QObject::connect(edge.item, SIGNAL(rightChanged()), q, SLOT(updateHorizontalAnchors()));
break;
case QFxAnchorLine::HCenter:
- QObject::connect(edge.item, SIGNAL(hcenterChanged()), q, slotString);
+ QObject::connect(edge.item, SIGNAL(hcenterChanged()), q, SLOT(updateHorizontalAnchors()));
break;
default:
break;
@@ -349,45 +345,40 @@ void QFxAnchors::connectHAnchors()
return;
if (d->usedAnchors & HasLeftAnchor) {
- const char *slotStr = SLOT(updateLeftAnchor());
-
//Handle stretching connections (if we have multiple horizontal anchors)
QFxAnchorLine *edge = 0;
if (d->usedAnchors & HasRightAnchor) {
edge = &d->right;
- connect(this, SIGNAL(rightMarginChanged()), this, slotStr);
+ connect(this, SIGNAL(rightMarginChanged()), this, SLOT(updateHorizontalAnchors()));
} else if (d->usedAnchors & HasHCenterAnchor) {
edge = &d->hCenter;
- connect(this, SIGNAL(horizontalCenterOffsetChanged()), this, slotStr);
+ connect(this, SIGNAL(horizontalCenterOffsetChanged()), this, SLOT(updateHorizontalAnchors()));
}
if (edge) {
//we need to stretch
- d->connectHHelper(*edge, slotStr);
+ d->connectHHelper(*edge);
}
//Handle left
- d->connectHHelper(d->left, slotStr);
- connect(this, SIGNAL(leftMarginChanged()), this, slotStr);
- updateLeftAnchor();
+ d->connectHHelper(d->left);
+ connect(this, SIGNAL(leftMarginChanged()), this, SLOT(updateHorizontalAnchors()));
+ updateHorizontalAnchors();
} else if (d->usedAnchors & HasRightAnchor) {
- const char *slotStr = SLOT(updateRightAnchor());
-
//Handle stretching connections (if we have multiple horizontal anchors)
if (d->usedAnchors & HasHCenterAnchor) {
- d->connectHHelper(d->hCenter, slotStr);
- connect(this, SIGNAL(horizontalCenterOffsetChanged()), this, slotStr);
+ d->connectHHelper(d->hCenter);
+ connect(this, SIGNAL(horizontalCenterOffsetChanged()), this, SLOT(updateHorizontalAnchors()));
}
//Handle right
- d->connectHHelper(d->right, slotStr);
- connect(this, SIGNAL(rightMarginChanged()), this, slotStr);
- updateRightAnchor();
+ d->connectHHelper(d->right);
+ connect(this, SIGNAL(rightMarginChanged()), this, SLOT(updateHorizontalAnchors()));
+ updateHorizontalAnchors();
} else if (d->usedAnchors & HasHCenterAnchor) {
//Handle hCenter
- const char *slotStr = SLOT(updateHCenterAnchor());
- d->connectHHelper(d->hCenter, slotStr);
- connect(this, SIGNAL(horizontalCenterOffsetChanged()), this, slotStr);
- updateHCenterAnchor();
+ d->connectHHelper(d->hCenter);
+ connect(this, SIGNAL(horizontalCenterOffsetChanged()), this, SLOT(updateHorizontalAnchors()));
+ updateHorizontalAnchors();
}
}
@@ -420,13 +411,12 @@ bool QFxAnchorsPrivate::calcStretch(const QFxAnchorLine &edge1,
return invalid;
}
-void QFxAnchors::updateTopAnchor()
+void QFxAnchors::updateVerticalAnchors()
{
Q_D(QFxAnchors);
- if (d->usedAnchors & HasTopAnchor) {
- if (!d->updatingVerticalAnchor) {
- d->updatingVerticalAnchor = true;
-
+ if (!d->updatingVerticalAnchor) {
+ d->updatingVerticalAnchor = true;
+ if (d->usedAnchors & HasTopAnchor) {
//Handle stretching
bool invalid = true;
int height = 0;
@@ -445,22 +435,8 @@ void QFxAnchors::updateTopAnchor()
} else if (d->top.item->itemParent() == d->item->itemParent()) {
d->item->setY(position(d->top.item, d->top.anchorLine) + d->topMargin);
}
-
- d->updatingVerticalAnchor = false;
- } else {
- qmlInfo(d->item) << "Anchor loop detected on vertical anchor.";
- }
- }
-}
-
-void QFxAnchors::updateBottomAnchor()
-{
- Q_D(QFxAnchors);
- if (d->usedAnchors & HasBottomAnchor) {
- if (!d->updatingVerticalAnchor) {
- d->updatingVerticalAnchor = true;
-
- //Handle stretching (top + bottom case is handled in updateLeftAnchor)
+ } else if (d->usedAnchors & HasBottomAnchor) {
+ //Handle stretching (top + bottom case is handled above)
if (d->usedAnchors & HasVCenterAnchor) {
int height = 0;
bool invalid = d->calcStretch(d->vCenter, d->bottom, d->vCenterOffset, -d->bottomMargin,
@@ -476,21 +452,9 @@ void QFxAnchors::updateBottomAnchor()
d->item->setY(position(d->bottom.item, d->bottom.anchorLine) - d->item->height() - d->bottomMargin);
}
- d->updatingVerticalAnchor = false;
- } else {
- qmlInfo(d->item) << "Anchor loop detected on vertical anchor.";
- }
- }
-}
-void QFxAnchors::updateVCenterAnchor()
-{
- Q_D(QFxAnchors);
- if (d->usedAnchors & HasVCenterAnchor) {
- if (!d->updatingVerticalAnchor) {
- d->updatingVerticalAnchor = true;
-
- //(stetching handled in other update functions)
+ } else if (d->usedAnchors & HasVCenterAnchor) {
+ //(stetching handled above)
//Handle vCenter
if (d->vCenter.item == d->item->itemParent()) {
@@ -499,21 +463,70 @@ void QFxAnchors::updateVCenterAnchor()
} else if (d->vCenter.item->itemParent() == d->item->itemParent()) {
d->item->setY(position(d->vCenter.item, d->vCenter.anchorLine) - d->item->height()/2 + d->vCenterOffset);
}
-
- d->updatingVerticalAnchor = false;
- } else {
- qmlInfo(d->item) << "Anchor loop detected on vertical anchor.";
}
+ d->updatingVerticalAnchor = false;
+ } else {
+ qmlInfo(d->item) << "Anchor loop detected on vertical anchor.";
}
}
-void QFxAnchors::updateLeftAnchor()
+void QFxAnchors::updateHorizontalAnchors()
{
Q_D(QFxAnchors);
- if (d->usedAnchors & HasLeftAnchor) {
- if (!d->updatingHorizontalAnchor) {
- d->updatingHorizontalAnchor = true;
+ if (!d->updatingHorizontalAnchor) {
+ d->updatingHorizontalAnchor = true;
+ //alternate implementation (needs performance testing)
+ /*switch(d->usedAnchors & QFxAnchors::Horizontal_Mask) {
+ case 0x03: //(HasLeftAnchor | HasRightAnchor)
+ {
+ int width = 0;
+ if (!d->calcStretch(d->left, d->right, d->leftMargin, -d->rightMargin, QFxAnchorLine::Left, width))
+ d->item->setWidth(width);
+ //fall though
+ }
+ case 0x11: //(HasLeftAnchor | HasHCenterAnchor)
+ {
+ if (d->usedAnchors & HasHCenterAnchor) {
+ int width = 0;
+ if (!d->calcStretch(d->left, d->hCenter, d->leftMargin, d->hCenterOffset, QFxAnchorLine::Left, width))
+ d->item->setWidth(width*2);
+ }
+ //fall though
+ }
+ case HasLeftAnchor:
+ if (d->left.item == d->item->itemParent()) {
+ d->item->setX(adjustedPosition(d->left.item, d->left.anchorLine) + d->leftMargin);
+ } else if (d->left.item->itemParent() == d->item->itemParent()) {
+ d->item->setX(position(d->left.item, d->left.anchorLine) + d->leftMargin);
+ }
+ break;
+ case 0x12: //(HasRightAnchor | HasHCenterAnchor)
+ {
+ int width = 0;
+ if (!d->calcStretch(d->hCenter, d->right, d->hCenterOffset, -d->rightMargin, QFxAnchorLine::Left, width))
+ d->item->setWidth(width*2);
+ //fall though
+ }
+ case HasRightAnchor:
+ if (d->right.item == d->item->itemParent()) {
+ d->item->setX(adjustedPosition(d->right.item, d->right.anchorLine) - d->item->width() - d->rightMargin);
+ } else if (d->right.item->itemParent() == d->item->itemParent()) {
+ d->item->setX(position(d->right.item, d->right.anchorLine) - d->item->width() - d->rightMargin);
+ }
+ break;
+ case HasHCenterAnchor:
+ if (d->hCenter.item == d->item->itemParent()) {
+ d->item->setX(adjustedPosition(d->hCenter.item, d->hCenter.anchorLine) - d->item->width()/2 + d->hCenterOffset);
+ } else if (d->hCenter.item->itemParent() == d->item->itemParent()) {
+ d->item->setX(position(d->hCenter.item, d->hCenter.anchorLine) - d->item->width()/2 + d->hCenterOffset);
+ }
+ break;
+ default:
+ break;
+ }*/
+
+ if (d->usedAnchors & HasLeftAnchor) {
//Handle stretching
bool invalid = true;
int width = 0;
@@ -532,21 +545,7 @@ void QFxAnchors::updateLeftAnchor()
} else if (d->left.item->itemParent() == d->item->itemParent()) {
d->item->setX(position(d->left.item, d->left.anchorLine) + d->leftMargin);
}
-
- d->updatingHorizontalAnchor = false;
- } else {
- qmlInfo(d->item) << "Anchor loop detected on horizontal anchor.";
- }
- }
-}
-
-void QFxAnchors::updateRightAnchor()
-{
- Q_D(QFxAnchors);
- if (d->usedAnchors & HasRightAnchor) {
- if (!d->updatingHorizontalAnchor) {
- d->updatingHorizontalAnchor = true;
-
+ } else if (d->usedAnchors & HasRightAnchor) {
//Handle stretching (left + right case is handled in updateLeftAnchor)
if (d->usedAnchors & HasHCenterAnchor) {
int width = 0;
@@ -562,32 +561,18 @@ void QFxAnchors::updateRightAnchor()
} else if (d->right.item->itemParent() == d->item->itemParent()) {
d->item->setX(position(d->right.item, d->right.anchorLine) - d->item->width() - d->rightMargin);
}
-
- d->updatingHorizontalAnchor = false;
- } else {
- qmlInfo(d->item) << "Anchor loop detected on horizontal anchor.";
- }
- }
-}
-
-void QFxAnchors::updateHCenterAnchor()
-{
- Q_D(QFxAnchors);
- if (d->usedAnchors & HasHCenterAnchor) {
- if (!d->updatingHorizontalAnchor) {
- d->updatingHorizontalAnchor = true;
-
+ } else if (d->usedAnchors & HasHCenterAnchor) {
//Handle hCenter
if (d->hCenter.item == d->item->itemParent()) {
d->item->setX(adjustedPosition(d->hCenter.item, d->hCenter.anchorLine) - d->item->width()/2 + d->hCenterOffset);
} else if (d->hCenter.item->itemParent() == d->item->itemParent()) {
d->item->setX(position(d->hCenter.item, d->hCenter.anchorLine) - d->item->width()/2 + d->hCenterOffset);
}
-
- d->updatingHorizontalAnchor = false;
- } else {
- qmlInfo(d->item) << "Anchor loop detected on horizontal anchor.";
}
+
+ d->updatingHorizontalAnchor = false;
+ } else {
+ qmlInfo(d->item) << "Anchor loop detected on horizontal anchor.";
}
}
@@ -610,6 +595,24 @@ void QFxAnchors::setTop(const QFxAnchorLine &edge)
d->top = edge;
}
+void QFxAnchors::resetTop()
+{
+ Q_D(QFxAnchors);
+
+ //update flags
+ d->usedAnchors &= ~HasTopAnchor;
+
+ //clear binding
+ QmlMetaProperty prop(this, "top");
+ prop.binding()->clearExpression();
+
+ //disconnect signal/slot connections as needed
+ disconnect(this, SIGNAL(topMarginChanged()), this, SLOT(updateVerticalAnchors()));
+ disconnect(d->top.item, 0, this, 0);
+
+ updateVerticalAnchors();
+}
+
QFxAnchorLine QFxAnchors::bottom() const
{
Q_D(const QFxAnchors);
@@ -627,7 +630,24 @@ void QFxAnchors::setBottom(const QFxAnchorLine &edge)
d->checkVValid();
d->bottom = edge;
+}
+
+void QFxAnchors::resetBottom()
+{
+ Q_D(QFxAnchors);
+
+ //update flags
+ d->usedAnchors &= ~HasBottomAnchor;
+
+ //clear binding
+ QmlMetaProperty prop(this, "bottom");
+ prop.binding()->clearExpression();
+
+ //disconnect signal/slot connections as needed
+ disconnect(this, SIGNAL(bottomMarginChanged()), this, SLOT(updateVerticalAnchors()));
+ disconnect(d->bottom.item, 0, this, 0);
+ updateVerticalAnchors();
}
QFxAnchorLine QFxAnchors::verticalCenter() const
@@ -649,6 +669,24 @@ void QFxAnchors::setVerticalCenter(const QFxAnchorLine &edge)
d->vCenter = edge;
}
+void QFxAnchors::resetVerticalCenter()
+{
+ Q_D(QFxAnchors);
+
+ //update flags
+ d->usedAnchors &= ~HasVCenterAnchor;
+
+ //clear binding
+ QmlMetaProperty prop(this, "verticalCenter");
+ prop.binding()->clearExpression();
+
+ //disconnect signal/slot connections as needed
+ disconnect(this, SIGNAL(verticalCenterOffsetChanged()), this, SLOT(updateVerticalAnchors()));
+ disconnect(d->vCenter.item, 0, this, 0);
+
+ updateVerticalAnchors();
+}
+
QFxAnchorLine QFxAnchors::left() const
{
Q_D(const QFxAnchors);
@@ -668,6 +706,24 @@ void QFxAnchors::setLeft(const QFxAnchorLine &edge)
d->left = edge;
}
+void QFxAnchors::resetLeft()
+{
+ Q_D(QFxAnchors);
+
+ //update flags
+ d->usedAnchors &= ~HasLeftAnchor;
+
+ //clear binding
+ QmlMetaProperty prop(this, "left");
+ prop.binding()->clearExpression();
+
+ //disconnect signal/slot connections as needed
+ disconnect(this, SIGNAL(leftMarginChanged()), this, SLOT(updateHorizontalAnchors()));
+ disconnect(d->left.item, 0, this, 0);
+
+ updateHorizontalAnchors();
+}
+
QFxAnchorLine QFxAnchors::right() const
{
Q_D(const QFxAnchors);
@@ -685,7 +741,24 @@ void QFxAnchors::setRight(const QFxAnchorLine &edge)
d->checkHValid();
d->right = edge;
+}
+
+void QFxAnchors::resetRight()
+{
+ Q_D(QFxAnchors);
+ //update flags
+ d->usedAnchors &= ~HasRightAnchor;
+
+ //clear binding
+ QmlMetaProperty prop(this, "right");
+ prop.binding()->clearExpression();
+
+ //disconnect signal/slot connections as needed
+ disconnect(this, SIGNAL(rightMarginChanged()), this, SLOT(updateHorizontalAnchors()));
+ disconnect(d->right.item, 0, this, 0);
+
+ updateHorizontalAnchors();
}
QFxAnchorLine QFxAnchors::horizontalCenter() const
@@ -707,6 +780,24 @@ void QFxAnchors::setHorizontalCenter(const QFxAnchorLine &edge)
d->hCenter = edge;
}
+void QFxAnchors::resetHorizontalCenter()
+{
+ Q_D(QFxAnchors);
+
+ //update flags
+ d->usedAnchors &= ~HasHCenterAnchor;
+
+ //clear binding
+ QmlMetaProperty prop(this, "horizontalCenter");
+ prop.binding()->clearExpression();
+
+ //disconnect signal/slot connections as needed
+ disconnect(this, SIGNAL(horizontalCenterOffsetChanged()), this, SLOT(updateHorizontalAnchors()));
+ disconnect(d->hCenter.item, 0, this, 0);
+
+ updateHorizontalAnchors();
+}
+
int QFxAnchors::leftMargin() const
{
Q_D(const QFxAnchors);
@@ -902,4 +993,5 @@ bool QFxAnchorsPrivate::checkVAnchorValid(QFxAnchorLine anchor) const
return true;
}
+
QT_END_NAMESPACE
diff --git a/src/declarative/fx/qfxanchors.h b/src/declarative/fx/qfxanchors.h
index 3a250b9..5a8cc1a 100644
--- a/src/declarative/fx/qfxanchors.h
+++ b/src/declarative/fx/qfxanchors.h
@@ -84,12 +84,12 @@ class Q_DECLARATIVE_EXPORT QFxAnchors : public QObject
{
Q_OBJECT
- Q_PROPERTY(QFxAnchorLine left READ left WRITE setLeft);
- Q_PROPERTY(QFxAnchorLine right READ right WRITE setRight);
- Q_PROPERTY(QFxAnchorLine horizontalCenter READ horizontalCenter WRITE setHorizontalCenter);
- Q_PROPERTY(QFxAnchorLine top READ top WRITE setTop);
- Q_PROPERTY(QFxAnchorLine bottom READ bottom WRITE setBottom);
- Q_PROPERTY(QFxAnchorLine verticalCenter READ verticalCenter WRITE setVerticalCenter);
+ Q_PROPERTY(QFxAnchorLine left READ left WRITE setLeft RESET resetLeft);
+ Q_PROPERTY(QFxAnchorLine right READ right WRITE setRight RESET resetRight);
+ Q_PROPERTY(QFxAnchorLine horizontalCenter READ horizontalCenter WRITE setHorizontalCenter RESET resetHorizontalCenter);
+ Q_PROPERTY(QFxAnchorLine top READ top WRITE setTop RESET resetTop);
+ Q_PROPERTY(QFxAnchorLine bottom READ bottom WRITE setBottom RESET resetBottom);
+ Q_PROPERTY(QFxAnchorLine verticalCenter READ verticalCenter WRITE setVerticalCenter RESET resetVerticalCenter);
Q_PROPERTY(int leftMargin READ leftMargin WRITE setLeftMargin NOTIFY leftMarginChanged);
Q_PROPERTY(int rightMargin READ rightMargin WRITE setRightMargin NOTIFY rightMarginChanged);
Q_PROPERTY(int horizontalCenterOffset READ horizontalCenterOffset WRITE setHorizontalCenterOffset NOTIFY horizontalCenterOffsetChanged());
@@ -109,27 +109,35 @@ public:
HasBottomAnchor = 0x08,
HasHCenterAnchor = 0x10,
HasVCenterAnchor = 0x20,
- HasBaselineAnchor = 0x40
+ HasBaselineAnchor = 0x40,
+ Horizontal_Mask = HasLeftAnchor | HasRightAnchor | HasHCenterAnchor,
+ Vertical_Mask = HasTopAnchor | HasBottomAnchor | HasVCenterAnchor | HasBaselineAnchor
};
Q_DECLARE_FLAGS(UsedAnchors, UsedAnchor);
QFxAnchorLine left() const;
void setLeft(const QFxAnchorLine &edge);
+ Q_INVOKABLE void resetLeft(); //### temporarily invokable for testing
QFxAnchorLine right() const;
void setRight(const QFxAnchorLine &edge);
+ void resetRight();
QFxAnchorLine horizontalCenter() const;
void setHorizontalCenter(const QFxAnchorLine &edge);
+ void resetHorizontalCenter();
QFxAnchorLine top() const;
void setTop(const QFxAnchorLine &edge);
+ void resetTop();
QFxAnchorLine bottom() const;
void setBottom(const QFxAnchorLine &edge);
+ void resetBottom();
QFxAnchorLine verticalCenter() const;
void setVerticalCenter(const QFxAnchorLine &edge);
+ void resetVerticalCenter();
int leftMargin() const;
void setLeftMargin(int);
@@ -172,12 +180,8 @@ Q_SIGNALS:
private Q_SLOTS:
void fillChanged();
- void updateLeftAnchor();
- void updateRightAnchor();
- void updateHCenterAnchor();
- void updateTopAnchor();
- void updateBottomAnchor();
- void updateVCenterAnchor();
+ void updateHorizontalAnchors();
+ void updateVerticalAnchors();
private:
//### should item be a friend? (and make some of the public methods private or protected)
diff --git a/src/declarative/fx/qfxanchors_p.h b/src/declarative/fx/qfxanchors_p.h
index 76f83a8..82c2086 100644
--- a/src/declarative/fx/qfxanchors_p.h
+++ b/src/declarative/fx/qfxanchors_p.h
@@ -77,8 +77,8 @@ public:
bool checkVValid() const;
bool checkHAnchorValid(QFxAnchorLine anchor) const;
bool checkVAnchorValid(QFxAnchorLine anchor) const;
- void connectHHelper(const QFxAnchorLine &anchorLine, const char *slotString);
- void connectVHelper(const QFxAnchorLine &anchorLine, const char *slotString);
+ void connectHHelper(const QFxAnchorLine &anchorLine);
+ void connectVHelper(const QFxAnchorLine &anchorLine);
bool calcStretch(const QFxAnchorLine &edge1, const QFxAnchorLine &edge2, int offset1, int offset2, QFxAnchorLine::AnchorLine line, int &stretch);
QFxItem *item;
diff --git a/src/declarative/fx/qfxpainteditem.cpp b/src/declarative/fx/qfxpainteditem.cpp
index 950b468..4d2e327 100644
--- a/src/declarative/fx/qfxpainteditem.cpp
+++ b/src/declarative/fx/qfxpainteditem.cpp
@@ -252,9 +252,7 @@ void QFxPaintedItem::paintGLContents(GLPainter &p)
const QRectF clipf = p.sceneClipRect;
#endif
- qreal hscale = widthValid() ? qreal(width()) / content.width() : heightValid() ? qreal(height()) / content.height() : 1.0;
- qreal vscale = heightValid() ? qreal(height()) / content.height() : widthValid() ? qreal(width()) / content.width() : 1.0;
- const QRect clip = mapFromScene(QRectF(clipf.x()/hscale,clipf.y()/vscale,clipf.width()/hscale,clipf.height()/vscale)).toRect();
+ const QRect clip = mapFromScene(clipf).toRect();
QRegion topaint(clip);
topaint &= content;
@@ -272,7 +270,7 @@ void QFxPaintedItem::paintGLContents(GLPainter &p)
for (int i=0; i<d->imagecache.count(); ++i) {
QRect area = d->imagecache[i]->area;
if (topaint.contains(area)) {
- QRectF target(area.x()*hscale, area.y()*vscale, area.width()*hscale, area.height()*vscale);
+ QRectF target(area.x(), area.y(), area.width(), area.height());
p.drawImage(target.toRect(), d->imagecache[i]->image);
topaint -= area;
d->imagecache[i]->age=0;
@@ -324,7 +322,7 @@ void QFxPaintedItem::paintGLContents(GLPainter &p)
newitem->image.setImage(img);
#endif
d->imagecache.append(newitem);
- QRectF target(r.x()*hscale, r.y()*vscale, r.width()*hscale, r.height()*vscale);
+ QRectF target(r.x(), r.y(), r.width(), r.height());
p.drawImage(target.toRect(), newitem->image);
}
}
diff --git a/src/declarative/fx/qfxtextedit.cpp b/src/declarative/fx/qfxtextedit.cpp
index 42f5743..74c9b5b 100644
--- a/src/declarative/fx/qfxtextedit.cpp
+++ b/src/declarative/fx/qfxtextedit.cpp
@@ -292,6 +292,36 @@ void QFxTextEdit::setColor(const QColor &color)
}
/*!
+ \qmlproperty color TextEdit::highlightColor
+
+ The text highlight color, used behind selections.
+*/
+
+/*!
+ \property QFxTextEdit::highlightColor
+ \brief the text edit's default text highlight color
+*/
+QColor QFxTextEdit::highlightColor() const
+{
+ Q_D(const QFxTextEdit);
+ return d->highlightColor;
+}
+
+void QFxTextEdit::setHighlightColor(const QColor &color)
+{
+ Q_D(QFxTextEdit);
+ if (d->highlightColor == color)
+ return;
+
+ clearCache();
+ d->highlightColor = color;
+ QPalette pal = d->control->palette();
+ pal.setColor(QPalette::Highlight, color);
+ d->control->setPalette(pal);
+ update();
+}
+
+/*!
\qmlproperty enumeration TextEdit::hAlign
\qmlproperty enumeration TextEdit::vAlign
diff --git a/src/declarative/fx/qfxtextedit.h b/src/declarative/fx/qfxtextedit.h
index 068a25a..5d95cd1 100644
--- a/src/declarative/fx/qfxtextedit.h
+++ b/src/declarative/fx/qfxtextedit.h
@@ -69,6 +69,7 @@ class Q_DECLARATIVE_EXPORT QFxTextEdit : public QFxPaintedItem
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
Q_PROPERTY(QColor color READ color WRITE setColor)
+ Q_PROPERTY(QColor highlightColor READ highlightColor WRITE setHighlightColor)
Q_PROPERTY(QmlFont * font READ font)
Q_PROPERTY(HAlignment hAlign READ hAlign WRITE setHAlign)
Q_PROPERTY(VAlignment vAlign READ vAlign WRITE setVAlign)
@@ -111,6 +112,9 @@ public:
QColor color() const;
void setColor(const QColor &c);
+ QColor highlightColor() const;
+ void setHighlightColor(const QColor &c);
+
HAlignment hAlign() const;
void setHAlign(HAlignment align);
diff --git a/src/declarative/fx/qfxtextedit_p.h b/src/declarative/fx/qfxtextedit_p.h
index f4591f5..dd2a1bf 100644
--- a/src/declarative/fx/qfxtextedit_p.h
+++ b/src/declarative/fx/qfxtextedit_p.h
@@ -80,6 +80,7 @@ public:
QString text;
QmlFont font;
QColor color;
+ QColor highlightColor;
QString style;
QColor styleColor;
bool imgDirty;
diff --git a/src/declarative/qml/parser/javascript.g b/src/declarative/qml/parser/javascript.g
index d66266f..474fbb3 100644
--- a/src/declarative/qml/parser/javascript.g
+++ b/src/declarative/qml/parser/javascript.g
@@ -544,14 +544,14 @@ case $rule_number: {
} break;
./
-UiArrayMemberList: UiArrayObjectMember ;
+UiArrayMemberList: UiObjectDefinition ;
/.
case $rule_number: {
sym(1).Node = makeAstNode<AST::UiObjectMemberList> (driver->nodePool(), sym(1).UiObjectMember);
} break;
./
-UiArrayMemberList: UiArrayMemberList T_COMMA UiArrayObjectMember ;
+UiArrayMemberList: UiArrayMemberList T_COMMA UiObjectDefinition ;
/.
case $rule_number: {
AST::UiObjectMemberList *node = makeAstNode<AST:: UiObjectMemberList> (driver->nodePool(),
@@ -580,8 +580,6 @@ case $rule_number: {
} break;
./
-UiArrayObjectMember: UiQualifiedId T_COLON T_IDENTIFIER UiObjectInitializer ;
-/. case $rule_number: ./
UiObjectMember: UiQualifiedId T_COLON T_IDENTIFIER UiObjectInitializer ;
/.
case $rule_number: {
@@ -603,11 +601,8 @@ case $rule_number: {
} break;
./
-UiArrayObjectMember: UiObjectDefinition ;
UiObjectMember: UiObjectDefinition ;
-UiArrayObjectMember: UiQualifiedId T_COLON T_LBRACKET UiArrayMemberList T_RBRACKET ;
-/. case $rule_number: ./
UiObjectMember: UiQualifiedId T_COLON T_LBRACKET UiArrayMemberList T_RBRACKET ;
/.
case $rule_number: {
@@ -641,8 +636,6 @@ case $rule_number: {
UiObjectMember: UiQualifiedId T_COLON UiMultilineStringStatement ;
/. case $rule_number: ./
-UiArrayObjectMember: UiQualifiedId T_COLON Statement ;
-/. case $rule_number: ./
UiObjectMember: UiQualifiedId T_COLON Statement ;
/.
case $rule_number: {
diff --git a/src/declarative/qml/parser/javascriptgrammar.cpp b/src/declarative/qml/parser/javascriptgrammar.cpp
index cb98c36..43422c6 100644
--- a/src/declarative/qml/parser/javascriptgrammar.cpp
+++ b/src/declarative/qml/parser/javascriptgrammar.cpp
@@ -56,477 +56,470 @@ const char *const JavaScriptGrammar::spell [] = {
const int JavaScriptGrammar::lhs [] = {
91, 92, 92, 95, 95, 96, 96, 94, 93, 98,
- 98, 100, 100, 102, 102, 101, 99, 97, 101, 99,
- 101, 99, 104, 105, 105, 99, 101, 99, 107, 107,
- 107, 99, 99, 99, 99, 99, 99, 99, 103, 103,
- 111, 111, 111, 103, 103, 112, 112, 112, 112, 112,
- 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
- 114, 114, 118, 118, 113, 113, 116, 116, 119, 119,
- 119, 119, 119, 119, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 121, 121, 122, 122, 122,
- 122, 122, 125, 125, 126, 126, 126, 126, 124, 124,
- 127, 127, 128, 128, 129, 129, 129, 130, 130, 130,
- 130, 130, 130, 130, 130, 130, 130, 131, 131, 131,
- 131, 132, 132, 132, 133, 133, 133, 133, 134, 134,
- 134, 134, 134, 134, 134, 135, 135, 135, 135, 135,
- 135, 136, 136, 136, 136, 136, 137, 137, 137, 137,
- 137, 138, 138, 139, 139, 140, 140, 141, 141, 142,
- 142, 143, 143, 144, 144, 145, 145, 146, 146, 147,
- 147, 148, 148, 149, 149, 117, 117, 150, 150, 151,
- 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
- 151, 108, 108, 152, 152, 153, 153, 154, 154, 106,
- 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
- 106, 106, 106, 106, 155, 170, 170, 169, 169, 110,
- 110, 171, 171, 172, 172, 174, 174, 173, 175, 178,
- 176, 176, 179, 177, 177, 156, 157, 157, 158, 158,
- 159, 159, 159, 159, 159, 159, 159, 160, 160, 160,
- 160, 161, 161, 161, 161, 162, 162, 163, 165, 180,
- 180, 183, 183, 181, 181, 184, 182, 164, 164, 164,
- 166, 166, 167, 167, 167, 185, 186, 168, 168, 109,
- 123, 190, 190, 187, 187, 188, 188, 191, 192, 192,
- 193, 193, 189, 189, 115, 115, 194};
+ 98, 100, 100, 101, 101, 99, 97, 99, 99, 103,
+ 104, 104, 99, 99, 106, 106, 106, 99, 99, 99,
+ 99, 99, 99, 99, 102, 102, 110, 110, 110, 102,
+ 102, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 113, 113, 117, 117,
+ 112, 112, 115, 115, 118, 118, 118, 118, 118, 118,
+ 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 120, 120, 121, 121, 121, 121, 121, 124, 124,
+ 125, 125, 125, 125, 123, 123, 126, 126, 127, 127,
+ 128, 128, 128, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 130, 130, 130, 130, 131, 131, 131,
+ 132, 132, 132, 132, 133, 133, 133, 133, 133, 133,
+ 133, 134, 134, 134, 134, 134, 134, 135, 135, 135,
+ 135, 135, 136, 136, 136, 136, 136, 137, 137, 138,
+ 138, 139, 139, 140, 140, 141, 141, 142, 142, 143,
+ 143, 144, 144, 145, 145, 146, 146, 147, 147, 148,
+ 148, 116, 116, 149, 149, 150, 150, 150, 150, 150,
+ 150, 150, 150, 150, 150, 150, 150, 107, 107, 151,
+ 151, 152, 152, 153, 153, 105, 105, 105, 105, 105,
+ 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
+ 154, 169, 169, 168, 168, 109, 109, 170, 170, 171,
+ 171, 173, 173, 172, 174, 177, 175, 175, 178, 176,
+ 176, 155, 156, 156, 157, 157, 158, 158, 158, 158,
+ 158, 158, 158, 159, 159, 159, 159, 160, 160, 160,
+ 160, 161, 161, 162, 164, 179, 179, 182, 182, 180,
+ 180, 183, 181, 163, 163, 163, 165, 165, 166, 166,
+ 166, 184, 185, 167, 167, 108, 122, 189, 189, 186,
+ 186, 187, 187, 190, 191, 191, 192, 192, 188, 188,
+ 114, 114, 193};
const int JavaScriptGrammar:: rhs[] = {
2, 1, 1, 1, 2, 3, 3, 0, 1, 1,
- 2, 1, 3, 2, 3, 4, 4, 2, 1, 1,
- 5, 5, 1, 2, 2, 3, 3, 3, 1, 1,
- 1, 2, 3, 4, 5, 6, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 3, 5, 3, 4, 3,
- 2, 4, 1, 2, 0, 1, 3, 5, 1, 1,
+ 2, 1, 3, 2, 3, 4, 2, 1, 5, 1,
+ 2, 2, 3, 3, 1, 1, 1, 2, 3, 4,
+ 5, 6, 1, 1, 1, 1, 1, 1, 1, 1,
+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 3, 3, 5, 3, 4, 3, 2, 4, 1, 2,
+ 0, 1, 3, 5, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
- 3, 5, 1, 2, 4, 4, 4, 3, 0, 1,
- 1, 3, 1, 1, 1, 2, 2, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1, 3, 3,
- 3, 1, 3, 3, 1, 3, 3, 3, 1, 3,
- 3, 3, 3, 3, 3, 1, 3, 3, 3, 3,
- 3, 1, 3, 3, 3, 3, 1, 3, 3, 3,
+ 1, 1, 1, 1, 1, 4, 3, 5, 1, 2,
+ 4, 4, 4, 3, 0, 1, 1, 3, 1, 1,
+ 1, 2, 2, 1, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 1, 3, 3, 3, 1, 3, 3,
+ 1, 3, 3, 3, 1, 3, 3, 3, 3, 3,
+ 3, 1, 3, 3, 3, 3, 3, 1, 3, 3,
+ 3, 3, 1, 3, 3, 3, 3, 1, 3, 1,
3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
- 3, 1, 5, 1, 5, 1, 3, 1, 3, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 0, 1, 1, 3, 0, 1, 1,
+ 3, 1, 3, 1, 3, 1, 3, 1, 5, 1,
+ 5, 1, 3, 1, 3, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 3, 0,
+ 1, 1, 3, 0, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 1, 2, 0, 1, 3,
- 3, 1, 1, 1, 3, 1, 3, 2, 2, 2,
- 0, 1, 2, 0, 1, 1, 2, 2, 7, 5,
- 7, 7, 5, 9, 10, 7, 8, 2, 2, 3,
- 3, 2, 2, 3, 3, 3, 3, 5, 5, 3,
- 5, 1, 2, 0, 1, 4, 3, 3, 3, 3,
- 3, 3, 3, 3, 4, 5, 2, 2, 2, 8,
- 8, 1, 3, 0, 1, 0, 1, 1, 1, 2,
- 1, 1, 0, 1, 0, 1, 2};
+ 3, 1, 2, 0, 1, 3, 3, 1, 1, 1,
+ 3, 1, 3, 2, 2, 2, 0, 1, 2, 0,
+ 1, 1, 2, 2, 7, 5, 7, 7, 5, 9,
+ 10, 7, 8, 2, 2, 3, 3, 2, 2, 3,
+ 3, 3, 3, 5, 5, 3, 5, 1, 2, 0,
+ 1, 4, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 5, 2, 2, 2, 8, 8, 1, 3, 0,
+ 1, 0, 1, 1, 1, 2, 1, 1, 0, 1,
+ 0, 1, 2};
const int JavaScriptGrammar::action_default [] = {
8, 2, 0, 4, 3, 0, 0, 0, 6, 7,
- 5, 0, 9, 1, 0, 18, 37, 44, 242, 0,
- 0, 41, 42, 14, 39, 40, 43, 243, 20, 10,
- 0, 0, 0, 38, 0, 31, 30, 29, 0, 34,
- 0, 145, 212, 176, 184, 180, 124, 196, 172, 36,
- 109, 47, 125, 188, 192, 113, 142, 123, 128, 108,
- 162, 149, 0, 53, 54, 50, 313, 41, 315, 65,
- 0, 0, 0, 0, 0, 48, 51, 0, 0, 42,
- 43, 52, 46, 0, 49, 0, 0, 138, 0, 0,
- 125, 144, 127, 126, 0, 0, 0, 140, 141, 139,
- 143, 0, 173, 0, 0, 0, 0, 163, 0, 0,
- 0, 0, 0, 0, 153, 0, 0, 0, 147, 148,
- 146, 151, 155, 154, 152, 150, 165, 164, 166, 0,
- 181, 0, 177, 0, 0, 119, 106, 118, 107, 75,
- 76, 77, 102, 78, 103, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 104, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 105,
- 0, 0, 117, 213, 120, 0, 121, 0, 122, 116,
- 0, 209, 202, 200, 207, 208, 206, 205, 211, 204,
- 203, 201, 210, 197, 0, 185, 0, 0, 189, 0,
- 0, 193, 0, 0, 119, 111, 0, 110, 0, 115,
- 129, 0, 314, 304, 305, 0, 302, 0, 303, 0,
- 306, 220, 227, 226, 234, 222, 0, 223, 307, 0,
- 312, 224, 225, 230, 228, 309, 308, 311, 231, 0,
- 0, 0, 0, 0, 313, 41, 0, 315, 42, 214,
- 256, 43, 0, 0, 0, 0, 0, 232, 233, 221,
- 229, 257, 258, 301, 310, 0, 272, 273, 274, 275,
- 0, 268, 269, 270, 271, 298, 299, 0, 0, 0,
- 0, 0, 261, 262, 218, 216, 178, 186, 182, 198,
- 174, 219, 0, 125, 190, 194, 167, 156, 0, 0,
- 175, 0, 0, 0, 0, 168, 0, 0, 0, 0,
- 0, 160, 158, 161, 159, 157, 170, 169, 171, 0,
- 183, 0, 179, 0, 217, 125, 0, 199, 214, 215,
- 0, 214, 0, 0, 264, 0, 0, 0, 266, 0,
- 187, 0, 0, 191, 0, 0, 195, 254, 0, 246,
- 255, 249, 0, 253, 0, 214, 247, 0, 214, 0,
- 0, 265, 0, 0, 0, 267, 314, 304, 0, 0,
- 306, 0, 300, 0, 290, 0, 0, 0, 260, 0,
- 259, 0, 316, 0, 74, 236, 239, 0, 75, 242,
- 78, 103, 80, 81, 50, 85, 86, 41, 87, 90,
- 48, 51, 42, 214, 43, 52, 93, 46, 95, 49,
- 97, 98, 243, 100, 101, 105, 0, 67, 0, 0,
- 69, 73, 71, 59, 70, 72, 0, 68, 58, 237,
- 235, 113, 114, 119, 0, 112, 0, 289, 0, 276,
- 277, 0, 288, 0, 0, 0, 279, 284, 282, 285,
- 0, 0, 283, 284, 0, 280, 0, 281, 238, 287,
- 0, 238, 286, 0, 291, 292, 0, 238, 293, 294,
- 0, 0, 295, 0, 0, 0, 296, 297, 131, 130,
- 0, 0, 0, 263, 0, 0, 0, 278, 0, 66,
- 0, 63, 65, 56, 0, 62, 57, 64, 61, 55,
- 0, 60, 135, 133, 137, 134, 132, 136, 0, 0,
- 33, 0, 35, 32, 15, 11, 0, 0, 28, 41,
- 65, 23, 0, 26, 17, 0, 12, 19, 0, 0,
- 22, 13, 0, 27, 41, 65, 16, 0, 21, 24,
- 25, 45, 251, 244, 0, 252, 248, 0, 250, 240,
- 0, 241, 245, 317};
+ 5, 0, 9, 1, 0, 17, 33, 40, 238, 0,
+ 0, 37, 38, 14, 35, 36, 39, 239, 18, 10,
+ 0, 0, 0, 34, 0, 27, 26, 25, 0, 30,
+ 0, 141, 208, 172, 180, 176, 120, 192, 168, 32,
+ 105, 43, 121, 184, 188, 109, 138, 119, 124, 104,
+ 158, 145, 0, 49, 50, 46, 309, 37, 311, 61,
+ 0, 0, 0, 0, 0, 44, 47, 0, 0, 38,
+ 39, 48, 42, 0, 45, 0, 0, 134, 0, 0,
+ 121, 140, 123, 122, 0, 0, 0, 136, 137, 135,
+ 139, 0, 169, 0, 0, 0, 0, 159, 0, 0,
+ 0, 0, 0, 0, 149, 0, 0, 0, 143, 144,
+ 142, 147, 151, 150, 148, 146, 161, 160, 162, 0,
+ 177, 0, 173, 0, 0, 115, 102, 114, 103, 71,
+ 72, 73, 98, 74, 99, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 100, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 101,
+ 0, 0, 113, 209, 116, 0, 117, 0, 118, 112,
+ 0, 205, 198, 196, 203, 204, 202, 201, 207, 200,
+ 199, 197, 206, 193, 0, 181, 0, 0, 185, 0,
+ 0, 189, 0, 0, 115, 107, 0, 106, 0, 111,
+ 125, 0, 310, 300, 301, 0, 298, 0, 299, 0,
+ 302, 216, 223, 222, 230, 218, 0, 219, 303, 0,
+ 308, 220, 221, 226, 224, 305, 304, 307, 227, 0,
+ 0, 0, 0, 0, 309, 37, 0, 311, 38, 210,
+ 252, 39, 0, 0, 0, 0, 0, 228, 229, 217,
+ 225, 253, 254, 297, 306, 0, 268, 269, 270, 271,
+ 0, 264, 265, 266, 267, 294, 295, 0, 0, 0,
+ 0, 0, 257, 258, 214, 212, 174, 182, 178, 194,
+ 170, 215, 0, 121, 186, 190, 163, 152, 0, 0,
+ 171, 0, 0, 0, 0, 164, 0, 0, 0, 0,
+ 0, 156, 154, 157, 155, 153, 166, 165, 167, 0,
+ 179, 0, 175, 0, 213, 121, 0, 195, 210, 211,
+ 0, 210, 0, 0, 260, 0, 0, 0, 262, 0,
+ 183, 0, 0, 187, 0, 0, 191, 250, 0, 242,
+ 251, 245, 0, 249, 0, 210, 243, 0, 210, 0,
+ 0, 261, 0, 0, 0, 263, 310, 300, 0, 0,
+ 302, 0, 296, 0, 286, 0, 0, 0, 256, 0,
+ 255, 0, 312, 0, 70, 232, 235, 0, 71, 238,
+ 74, 99, 76, 77, 46, 81, 82, 37, 83, 86,
+ 44, 47, 38, 210, 39, 48, 89, 42, 91, 45,
+ 93, 94, 239, 96, 97, 101, 0, 63, 0, 0,
+ 65, 69, 67, 55, 66, 68, 0, 64, 54, 233,
+ 231, 109, 110, 115, 0, 108, 0, 285, 0, 272,
+ 273, 0, 284, 0, 0, 0, 275, 280, 278, 281,
+ 0, 0, 279, 280, 0, 276, 0, 277, 234, 283,
+ 0, 234, 282, 0, 287, 288, 0, 234, 289, 290,
+ 0, 0, 291, 0, 0, 0, 292, 293, 127, 126,
+ 0, 0, 0, 259, 0, 0, 0, 274, 0, 62,
+ 0, 59, 61, 52, 0, 58, 53, 60, 57, 51,
+ 0, 56, 131, 129, 133, 130, 128, 132, 0, 0,
+ 29, 0, 31, 28, 15, 11, 0, 0, 24, 37,
+ 61, 20, 0, 23, 16, 0, 12, 0, 19, 13,
+ 21, 22, 41, 247, 240, 0, 248, 244, 0, 246,
+ 236, 0, 237, 241, 313};
const int JavaScriptGrammar::goto_default [] = {
- 6, 5, 13, 1, 4, 3, 527, 30, 29, 525,
- 526, 15, 528, 522, 523, 385, 509, 226, 230, 259,
- 51, 59, 490, 488, 383, 382, 42, 489, 381, 384,
- 137, 55, 50, 175, 57, 46, 174, 52, 58, 87,
- 56, 41, 61, 60, 296, 48, 290, 43, 286, 45,
- 288, 44, 287, 53, 294, 54, 295, 47, 289, 285,
- 326, 438, 291, 292, 221, 225, 227, 231, 232, 223,
- 222, 234, 260, 233, 238, 257, 258, 224, 387, 386,
- 32, 544, 543, 348, 349, 546, 351, 545, 350, 446,
- 450, 453, 449, 448, 468, 469, 215, 229, 211, 214,
- 228, 236, 235, 0};
+ 6, 5, 13, 1, 4, 3, 28, 30, 29, 525,
+ 15, 31, 522, 523, 385, 509, 226, 230, 259, 51,
+ 59, 490, 488, 383, 382, 42, 489, 381, 384, 137,
+ 55, 50, 175, 57, 46, 174, 52, 58, 87, 56,
+ 41, 61, 60, 296, 48, 290, 43, 286, 45, 288,
+ 44, 287, 53, 294, 54, 295, 47, 289, 285, 326,
+ 438, 291, 292, 221, 225, 227, 231, 232, 223, 222,
+ 234, 260, 233, 238, 257, 258, 224, 387, 386, 32,
+ 535, 534, 348, 349, 537, 351, 536, 350, 446, 450,
+ 453, 449, 448, 468, 469, 215, 229, 211, 214, 228,
+ 236, 235, 0};
const int JavaScriptGrammar::action_index [] = {
- -27, -91, 56, -91, -22, 60, 62, 109, -91, -91,
- -91, 54, -91, -91, 438, -91, -91, -91, -91, 49,
- 220, 53, 172, -91, -91, -91, 50, -91, -91, -91,
- 415, 84, 207, -91, 226, -91, -91, -91, 61, 63,
- 725, 80, -91, 68, 69, 59, 217, -91, 342, 74,
- -91, -91, 566, 66, 72, 144, 140, -91, -91, -91,
- 395, 160, 725, -91, -91, -91, 176, -91, 1223, 64,
- 725, 725, 725, 645, 725, -91, -91, 725, 725, -91,
- -91, -91, -91, 725, -91, 725, 725, -91, 725, 725,
- 107, 178, -91, -91, 725, 725, 725, -91, -91, -91,
- 187, 725, 342, 725, 725, 725, 725, 385, 725, 725,
- 725, 725, 725, 725, 269, 725, 725, 725, 132, 113,
- 79, 193, 269, 196, 199, 200, 370, 478, 478, 725,
- 59, 725, 73, 1136, 725, 725, -91, -91, -91, -91,
+ -10, -91, -42, -91, -1, 36, 71, 73, -91, -91,
+ -91, -17, -91, -91, 393, -91, -91, -91, -91, 17,
+ 208, 51, 197, -91, -91, -91, 30, -91, -91, -91,
+ 476, 102, 194, -91, 159, -91, -91, -91, 68, 82,
+ 723, 81, -91, 80, 60, 28, 175, -91, 327, 14,
+ -91, -91, 474, 18, 74, 165, 153, -91, -91, -91,
+ 353, 170, 723, -91, -91, -91, 158, -91, 1221, 5,
+ 723, 723, 723, 643, 723, -91, -91, 723, 723, -91,
+ -91, -91, -91, 723, -91, 723, 723, -91, 723, 723,
+ 111, 143, -91, -91, 723, 723, 723, -91, -91, -91,
+ 206, 723, 327, 723, 723, 723, 723, 373, 723, 723,
+ 723, 723, 723, 723, 207, 723, 723, 723, 91, 117,
+ 103, 254, 254, 254, 254, 254, 389, 343, 363, 723,
+ 21, 723, 0, 1134, 723, 723, -91, -91, -91, -91,
-91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
-91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
-91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
- 94, 725, -91, -91, 65, 47, -91, 725, -91, -91,
- 725, -91, -91, -91, -91, -91, -91, -91, -91, -91,
- -91, -91, -91, -91, 725, 46, 725, 725, 55, 51,
- 725, -91, 1136, 725, 725, -91, 95, -91, 38, -91,
- -91, 35, -91, 210, 48, 32, -91, 223, -91, 34,
- 1484, -91, -91, -91, -91, -91, 240, -91, -91, 33,
- -91, -91, -91, -91, -91, -91, 1484, -91, -91, 281,
- 266, 71, 1397, 39, 216, 52, 45, 1745, 58, 725,
- -91, 57, 44, 725, 43, 41, 42, -91, -91, -91,
- -91, -91, -91, -91, -91, 104, -91, -91, -91, -91,
- 106, -91, -91, -91, -91, -91, -91, -28, 27, 725,
- 117, 100, -91, -91, 805, -91, 83, 70, 67, -91,
- 260, 77, -56, 503, 12, 119, 289, 231, 204, 725,
- 285, 725, 725, 725, 725, 333, 725, 725, 725, 725,
- 725, 181, 157, 169, 177, 269, 410, 339, 317, 725,
- -65, 725, 15, 725, -91, 566, 725, -91, 725, 9,
- -42, 725, -38, 1397, -91, 725, 116, 1397, -91, 725,
- -48, 725, 725, 5, 120, 725, -91, 25, 203, 13,
- -91, -91, 725, -91, 218, 725, -91, -1, 725, -8,
- 1397, -91, 725, 103, 1397, -91, 19, 225, -19, 4,
- 1484, -25, -91, 1397, -91, 725, 97, 1397, 24, 1397,
- -91, 26, 31, -23, -91, -91, 1397, -24, 337, 22,
- 324, 81, 725, 1397, 40, 10, 252, -3, -33, 645,
- 2, 1, -91, 889, -91, 11, -13, 3, 725, 8,
- 18, 725, 21, 725, -2, -10, 725, -91, 1310, 29,
- -91, -91, -91, -91, -91, -91, 725, -91, -91, -91,
- -91, 194, -91, 725, -6, -91, 1397, -91, 78, -91,
- -91, 1397, -91, 725, 128, -12, -91, 6, -91, 7,
- 91, 725, -91, -4, 36, -91, -53, -91, 1397, -91,
- 105, 1397, -91, 130, -91, -91, 108, 1397, 0, -91,
- 14, 16, -91, 150, 23, 20, -91, -91, -91, -91,
- 725, 121, 1397, -91, 725, 126, 1397, -91, 85, 30,
- 1049, -91, 37, -91, 969, -91, -91, -91, -91, -91,
- 96, -91, -91, -91, -91, -91, -91, -91, -9, -5,
- 28, 725, 17, -91, -91, -91, 1658, 146, -91, 102,
- 406, -91, 86, -91, -91, 98, -91, -91, 93, 279,
- -91, -91, 1571, -91, 90, 384, -91, 88, -91, -91,
- -91, -91, -11, -91, 206, -91, -91, 725, -91, -91,
- 232, -91, -91, -91,
+ 96, 723, -91, -91, 61, -2, -91, 723, -91, -91,
+ 723, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, 723, -14, 723, 723, 34, 33,
+ 723, -91, 1134, 723, 723, -91, 133, -91, -57, -91,
+ -91, -15, -91, 192, 49, 16, -91, 183, -91, 40,
+ 1482, -91, -91, -91, -91, -91, 205, -91, -91, 20,
+ -91, -91, -91, -91, -91, -91, 1482, -91, -91, 260,
+ 302, 100, 1395, 52, 198, 67, 41, 1656, 53, 723,
+ -91, 54, 27, 723, 29, 31, 32, -91, -91, -91,
+ -91, -91, -91, -91, -91, 108, -91, -91, -91, -91,
+ 89, -91, -91, -91, -91, -91, -91, 62, 59, 723,
+ 125, 116, -91, -91, 1047, -91, 84, 43, -52, -91,
+ 267, 48, -44, 564, 10, 113, 320, 254, 169, 723,
+ 269, 723, 723, 723, 723, 293, 723, 723, 723, 723,
+ 723, 166, 120, 146, 154, 254, 395, 324, 274, 723,
+ -73, 723, 24, 723, -91, 430, 723, -91, 723, 42,
+ -7, 723, -19, 1395, -91, 723, 122, 1395, -91, 723,
+ -20, 723, 723, 25, 26, 723, -91, 22, 115, 7,
+ -91, -91, 723, -91, 224, 723, -91, 55, 723, -28,
+ 1395, -91, 723, 86, 1395, -91, 6, 233, -25, 4,
+ 1482, -26, -91, 1395, -91, 723, 114, 1395, 15, 1395,
+ -91, 23, 35, -6, -91, -91, 1395, -4, 272, 45,
+ 275, 87, 723, 1395, 46, 12, 241, 37, 11, 643,
+ 38, 39, -91, 807, -91, 1, -29, 2, 723, 3,
+ -27, 723, -3, 723, -36, 19, 723, -91, 1308, -5,
+ -91, -91, -91, -91, -91, -91, 723, -91, -91, -91,
+ -91, 171, -91, 723, -41, -91, 1395, -91, 78, -91,
+ -91, 1395, -91, 723, 112, -9, -91, 105, -91, 13,
+ 101, 723, -91, 9, 8, -91, 47, -91, 1395, -91,
+ 93, 1395, -91, 167, -91, -91, 107, 1395, 66, -91,
+ 57, 70, -91, 173, 69, 72, -91, -91, -91, -91,
+ 723, 106, 1395, -91, 723, 99, 1395, -91, 104, 56,
+ 967, -91, 58, -91, 887, -91, -91, -91, -91, -91,
+ 188, -91, -91, -91, -91, -91, -91, -91, 44, 50,
+ 63, 723, 64, -91, -91, -91, 1569, 217, -91, 85,
+ 90, -91, 75, -91, -91, 88, -91, -18, -91, -91,
+ -91, -91, -91, 65, -91, 195, -91, -91, 723, -91,
+ -91, 185, -91, -91, -91,
- -104, -104, -104, -104, -3, 5, -104, -104, -104, -104,
- -104, -104, -104, -104, 241, -104, -104, -104, -104, -104,
- 4, -104, -104, -104, -104, -104, -104, -104, -104, -104,
- 246, -104, 2, -104, 3, -104, -104, -104, -104, -104,
- 15, -104, -104, -104, -104, -104, -104, -104, -104, -104,
- -104, -104, -45, -104, -104, -104, -104, -104, -104, -104,
- -104, -104, 104, -104, -104, -104, -6, -104, -104, -104,
- -14, 124, 119, 97, 113, -104, -104, 108, 112, -104,
- -104, -104, -104, 127, -104, 120, 116, -104, 96, 85,
- -104, -104, -104, -104, 128, 109, 105, -104, -104, -104,
- -104, 89, -104, 146, 158, 143, 84, -104, 142, 136,
- 135, 154, 145, 76, -104, 71, 134, 42, -104, -104,
- -104, -104, -104, -104, -104, -104, -104, -104, -104, 70,
- -104, 73, -104, 80, 37, 31, -104, -104, -104, -104,
- -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
- -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
- -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
- -104, 34, -104, -104, -104, -104, -104, 27, -104, -104,
- -18, -104, -104, -104, -104, -104, -104, -104, -104, -104,
- -104, -104, -104, -104, 123, -104, 132, 22, -104, -104,
- 24, -104, 180, 23, 90, -104, -104, -104, -104, -104,
- -104, -104, -104, 7, -104, -104, -104, -2, -104, -104,
- 26, -104, -104, -104, -104, -104, -104, -104, -104, -104,
- -104, -104, -104, -104, -104, -104, 74, -104, -104, -8,
- 19, -104, 28, -104, 1, -104, -104, -104, -104, 8,
- -104, -104, -104, 17, -41, -104, -104, -104, -104, -104,
- -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
- -104, -104, -104, -104, -104, -104, -104, -104, -104, 67,
- -104, -104, -104, -104, 93, -104, -104, -104, -104, -104,
- -104, -104, -104, -104, -104, -104, -104, -104, 32, 202,
- -104, 198, 188, 192, 189, -104, 151, 201, 45, 60,
- 69, -104, -104, -104, -104, -104, -104, -104, -104, 169,
- -104, 176, -104, 204, -104, -104, 268, -104, 77, -104,
- -104, 68, -104, 55, -104, 57, -104, 56, -104, 170,
- -104, 160, 161, -104, -104, 162, -104, -104, -104, -104,
- -104, -104, 186, -104, 53, 78, -104, -104, 79, -104,
- 62, -104, 51, -104, 50, -104, -104, 94, -104, -104,
- 65, -104, -104, 48, -104, 49, -104, 47, -104, 44,
- -104, -104, -104, -104, -104, -104, 43, -104, 36, -104,
- 41, -104, 66, 63, -104, -104, 52, -104, -104, 59,
- -104, -104, -104, 64, -104, -104, -104, -104, 30, -104,
- -29, 131, -104, 155, -104, -104, 38, -104, 39, -104,
- -104, -104, -104, -104, -104, -104, 29, -104, -104, -104,
- -104, -104, -104, 91, -104, -104, 61, -104, -104, -104,
- -104, 54, -104, 58, -104, -104, -104, -104, -104, -57,
- -104, -11, -104, -83, -104, -104, -104, -104, -73, -104,
- -104, -68, -104, -104, -104, -104, -104, -104, -86, -104,
- -104, -60, -104, -20, -104, -63, -104, -104, -104, -104,
- 0, -104, 18, -104, 21, -104, 16, -104, -104, -104,
- 11, -104, 20, -104, 25, -104, -104, -104, -104, -104,
- -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
- -104, -1, -104, -104, -104, -104, 13, 10, -104, 9,
- 6, -104, -104, -104, -104, -104, -104, -104, -104, 81,
- -104, -104, 14, -104, 33, 95, -104, -104, -104, -104,
- -104, -104, -104, -104, -104, -104, -104, -13, -104, -104,
- 72, -104, -104, -104};
+ -103, -103, -103, -103, 34, 37, -103, -103, -103, -103,
+ -103, -103, -103, -103, 202, -103, -103, -103, -103, -103,
+ 39, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ 319, -103, 4, -103, 33, -103, -103, -103, -103, -103,
+ 44, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -58, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, 157, -103, -103, -103, -2, -103, -103, -103,
+ -3, 132, 136, 150, 137, -103, -103, 140, 15, -103,
+ -103, -103, -103, 112, -103, 120, 125, -103, 123, 145,
+ -103, -103, -103, -103, 116, 149, 163, -103, -103, -103,
+ -103, 146, -103, 152, 155, 65, 82, -103, 86, 85,
+ 108, 84, 58, 67, -103, 76, 74, 75, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, 98,
+ -103, 95, -103, 68, 36, 29, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, 1, -103, -103, -103, -103, -103, -9, -103, -103,
+ -20, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, 56, -103, 57, -17, -103, -103,
+ 46, -103, 222, 40, 59, -103, -103, -103, -103, -103,
+ -103, -103, -103, 51, -103, -103, -103, 38, -103, -103,
+ 32, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, 66, -103, -103, 19,
+ 11, -103, 18, -103, 16, -103, -103, -103, -103, 63,
+ -103, -103, -103, 60, -13, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -10,
+ -103, -103, -103, -103, 119, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, 14, 211,
+ -103, 203, 189, 199, 195, -103, 87, 94, 96, 102,
+ 106, -103, -103, -103, -103, -103, -103, -103, -103, 188,
+ -103, 166, -103, 170, -103, -103, 176, -103, 79, -103,
+ -103, 117, -103, 41, -103, 25, -103, 28, -103, 167,
+ -103, 174, 168, -103, -103, 164, -103, -103, -103, -103,
+ -103, -103, 207, -103, 70, 97, -103, -103, 69, -103,
+ 35, -103, 31, -103, 26, -103, -103, 71, -103, -103,
+ 83, -103, -103, 13, -103, 9, -103, 17, -103, 23,
+ -103, -103, -103, -103, -103, -103, 45, -103, 54, -103,
+ 55, -103, 81, 53, -103, -103, 50, -103, -103, 72,
+ -103, -103, -103, 62, -103, -103, -103, -103, 49, -103,
+ -19, 224, -103, 160, -103, -103, 43, -103, 48, -103,
+ -103, -103, -103, -103, -103, -103, -23, -103, -103, -103,
+ -103, -103, -103, 139, -103, -103, -5, -103, -103, -103,
+ -103, 7, -103, -6, -103, -103, -103, -103, -103, -78,
+ -103, -4, -103, -71, -103, -103, -103, -103, -77, -103,
+ -103, -55, -103, -103, -103, -103, -103, -103, -83, -103,
+ -103, -43, -103, 0, -103, -59, -103, -103, -103, -103,
+ -1, -103, 90, -103, 8, -103, -7, -103, -103, -103,
+ -22, -103, 42, -103, 47, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, 61, -103, -103, -103, -103, 52, 10, -103, 24,
+ 30, -103, -103, -103, -103, -103, -103, 22, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, 20, -103,
+ -103, 64, -103, -103, -103};
const int JavaScriptGrammar::action_info [] = {
- 319, 451, 457, 375, -69, 328, 547, 339, -73, -91,
- -94, 451, 451, 321, 339, -96, 299, 171, -72, 331,
- 471, 447, 333, 443, 510, 171, 484, 367, -99, -102,
- 372, 430, 428, 416, 480, 511, 426, 370, 497, 418,
- 379, 369, 352, 458, 362, 491, 284, -83, 278, 467,
- 473, 467, 360, 467, 435, 367, 217, 194, 200, 373,
- 358, 2, 553, 279, 441, 436, 2, 220, 194, 101,
- 40, 213, 491, 177, 101, 284, 467, 480, 484, 513,
- 443, 375, 171, 475, 299, 323, 14, 14, 263, 11,
- 39, 516, 219, 492, 129, 0, 529, 373, 209, 517,
- 532, 454, 171, 171, 171, 171, 529, 179, 517, 373,
- 0, 171, 461, 171, 470, 34, 0, 129, 319, 88,
- 88, 7, 196, 14, 171, 171, 197, 345, 471, 171,
- 89, 89, 276, 275, 171, 14, 171, 131, 171, 440,
- 439, 493, 276, 275, 538, 321, 455, 540, 539, 92,
- 172, 207, 94, 88, 530, 0, 501, 377, 0, 202,
- 93, 283, 282, 364, 89, 269, 268, 274, 273, 341,
- 9, 8, 88, 342, 0, 67, 337, 281, 203, 67,
- 204, 482, 115, 89, 116, 115, 486, 116, 445, 0,
- 94, 465, 464, 0, 115, 117, 116, 95, 117, 94,
- 0, 35, 115, 96, 116, 67, 115, 117, 116, 202,
- 0, 354, 79, 80, 550, 117, 79, 80, 115, 117,
- 116, 115, 0, 116, 115, 115, 116, 116, 203, 0,
- 433, 117, 133, 67, 117, 95, 67, 117, 117, 67,
- 0, 96, 79, 80, 95, 67, 37, 67, 171, 67,
- 96, 134, 67, 135, 67, 35, 115, 36, 116, 0,
- 0, 67, 0, 0, 355, 0, 0, 551, 549, 117,
- 79, 80, 0, 79, 80, 0, 79, 80, 301, 302,
- 0, 67, 79, 80, 79, 80, 79, 80, -313, 79,
- 80, 79, 80, 0, 115, 67, 116, 0, 79, 80,
- 37, 262, 261, 301, 302, 303, 304, 117, 21, 0,
- 67, 36, 306, 307, 0, 0, 0, 0, 79, 80,
- 0, 308, 0, 0, 309, 0, 310, 272, 271, 0,
- 303, 304, 79, 80, 0, 0, 0, 0, 25, 0,
- 306, 307, 267, 266, 0, 79, 80, 79, 80, 308,
- 0, 0, 309, 67, 310, 0, 306, 307, 0, 0,
- 103, 104, 306, 307, 24, 308, 67, 0, 309, 0,
- 310, 308, 0, 0, 309, 0, 310, 0, 0, 0,
- 0, 0, 0, 0, 0, 272, 271, 105, 106, 0,
- 79, 80, 491, 108, 109, 0, 0, 0, 267, 266,
- 0, 110, 111, 79, 80, 112, 0, 113, 108, 109,
- 0, 0, 0, 21, 491, 0, 110, 111, 108, 109,
- 112, 0, 113, 0, 0, 19, 110, 111, 0, 0,
- 112, 0, 113, 306, 307, 21, 0, 20, 0, 0,
- 0, 0, 308, 25, 21, 309, 0, 310, 19, 0,
- 79, 80, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 0, 0, 0, 0, 25, 0, 21, 0, 24,
- 514, 0, 79, 80, 25, 0, 0, 0, 0, 0,
- 0, 22, 26, 0, 0, 0, 0, 0, 0, 27,
- 0, 24, 0, 23, 0, 0, 0, 25, 18, 0,
- 24, 108, 109, 0, 22, 26, 181, 0, 0, 110,
- 111, 0, 27, 112, 0, 113, 182, 0, 0, 0,
- 183, 18, 0, 24, 0, 0, 0, 0, 0, 184,
- 0, 185, 0, 0, 335, 0, 0, 0, 0, 0,
- 0, 0, 186, 0, 187, 92, 0, 0, 0, 0,
- 0, 0, 188, 0, 0, 189, 93, 0, 0, 0,
- 0, 190, 0, 0, 0, 0, 0, 191, 0, 181,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
- 0, 0, 192, 183, 0, 0, 0, 0, 0, 0,
- 0, 0, 184, 0, 185, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 186, 0, 187, 92, 0,
- 0, 0, 0, 0, 0, 188, 0, 0, 189, 93,
- 0, 0, 0, 0, 190, 0, 0, 0, 0, 0,
- 191, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 192, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 63, 64, 0,
- 0, 0, 0, 0, 0, 0, 0, 66, 0, 0,
- 0, 0, 0, 0, 67, 0, 0, 0, 68, 69,
- 0, 70, 0, 0, 0, 0, 0, 0, 73, 0,
- 0, 0, 76, 0, 0, 0, 0, 0, 0, 0,
+ 480, 101, 426, 209, -95, 321, 467, 443, -68, -90,
+ -92, 11, 339, 491, 451, 458, 14, 328, 451, 435,
+ 194, 213, 171, 7, 447, 299, 321, 339, 319, 372,
+ 416, 379, 360, 345, 129, 369, 194, 370, 362, 352,
+ 200, 333, 367, 418, -65, -87, -69, 375, 284, 428,
+ 171, 430, -98, -79, 331, 484, 323, 217, 179, 513,
+ 436, 441, 467, 443, 497, 11, 491, 480, 484, 177,
+ 511, 544, 171, 220, 373, 263, 219, 375, 2, 510,
+ 367, 101, 538, 34, 14, 299, 471, 2, 284, 40,
+ 0, 319, 373, 473, 171, 279, 527, 39, 491, 131,
+ 461, 171, 457, 467, 171, 467, 131, 171, 129, 516,
+ 451, 454, 492, 470, 171, 0, 358, 517, 14, 11,
+ 171, 88, 171, 354, 196, 0, 0, 471, 197, 475,
+ 171, 88, 89, 171, 9, 8, 531, 530, 278, 440,
+ 439, 171, 89, 88, 528, 115, 364, 116, 276, 275,
+ 274, 273, 172, 92, 89, 94, 455, 88, 117, 486,
+ 493, 276, 275, 341, 93, 94, 482, 342, 89, 269,
+ 268, 115, 445, 116, 377, 171, 355, 283, 282, 115,
+ 202, 116, 337, 0, 117, 281, 202, 67, 35, 207,
+ 133, 115, 117, 116, 0, 115, 171, 116, 67, 203,
+ 95, 204, 67, 541, 117, 203, 96, 433, 117, 134,
+ 95, 135, 67, 171, 67, 0, 96, 0, 94, 0,
+ 0, 67, 0, 67, 79, 80, 35, 67, 465, 464,
+ 0, 0, 115, 37, 116, 79, 80, 67, 0, 79,
+ 80, 0, 0, 0, 36, 117, 67, 0, 501, 79,
+ 80, 79, 80, 67, 0, 0, 542, 540, 79, 80,
+ 79, 80, 67, 95, 79, 80, 262, 261, 0, 96,
+ 67, 37, 0, 0, 79, 80, 0, -309, 0, 115,
+ 0, 116, 36, 79, 80, 301, 302, 301, 302, 67,
+ 79, 80, 117, 0, 0, 0, 0, 306, 307, 79,
+ 80, 67, 0, 0, 67, 0, 308, 79, 80, 309,
+ 0, 310, 303, 304, 303, 304, 306, 307, 0, 0,
+ 0, 267, 266, 0, 0, 308, 79, 80, 309, 0,
+ 310, 67, 0, 267, 266, 0, 272, 271, 79, 80,
+ 0, 79, 80, 306, 307, 103, 104, 306, 307, 0,
+ 0, 0, 308, 0, 0, 309, 308, 310, 0, 309,
+ 0, 310, 0, 272, 271, 0, 108, 109, 79, 80,
+ 0, 0, 105, 106, 110, 111, 108, 109, 112, 0,
+ 113, 0, 0, 0, 110, 111, 108, 109, 112, 0,
+ 113, 0, 0, 0, 110, 111, 108, 109, 112, 0,
+ 113, 0, 0, 19, 110, 111, 0, 0, 112, 0,
+ 113, 0, 108, 109, 0, 20, 0, 0, 306, 307,
+ 110, 111, 21, 0, 112, 0, 113, 308, 0, 0,
+ 309, 0, 310, 181, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 182, 0, 0, 0, 183, 23, 0,
+ 0, 0, 25, 0, 0, 0, 184, 0, 185, 22,
+ 26, 0, 0, 0, 0, 0, 0, 27, 0, 186,
+ 0, 187, 92, 0, 0, 0, 18, 181, 24, 188,
+ 0, 0, 189, 93, 0, 0, 19, 182, 190, 0,
+ 0, 183, 0, 0, 191, 0, 0, 0, 20, 0,
+ 184, 0, 185, 0, 0, 21, 0, 0, 0, 192,
+ 0, 0, 0, 186, 0, 187, 92, 0, 0, 0,
+ 0, 0, 0, 188, 0, 0, 189, 93, 0, 0,
+ 0, 514, 190, 0, 0, 25, 0, 0, 191, 0,
+ 0, 0, 22, 26, 0, 0, 0, 0, 0, 0,
+ 27, 0, 0, 192, 0, 0, 0, 0, 0, 18,
+ 0, 24, 0, 0, 0, 0, 0, 181, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 182, 0, 0,
+ 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
+ 184, 0, 185, 0, 0, 335, 0, 0, 0, 0,
+ 0, 0, 0, 186, 0, 187, 92, 0, 0, 0,
+ 0, 0, 0, 188, 0, 0, 189, 93, 0, 0,
+ 0, 0, 190, 0, 0, 0, 0, 0, 191, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 81, 79, 80, 0, 82, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 75, 84, 65, 0, 0,
- 0, 0, 0, 0, 0, 0, 62, 63, 64, 0,
- 0, 0, 0, 0, 0, 0, 0, 66, 0, 0,
- 0, 0, 0, 0, 67, 0, 0, 0, 68, 69,
- 0, 70, 0, 0, 0, 71, 0, 72, 73, 74,
- 0, 0, 76, 0, 0, 0, 77, 0, 78, 0,
+ 0, 0, 0, 192, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 63, 64, 0, 0, 0,
+ 0, 0, 0, 0, 0, 66, 0, 0, 0, 0,
+ 0, 0, 67, 0, 0, 0, 68, 69, 0, 70,
+ 0, 0, 0, 0, 0, 0, 73, 0, 0, 0,
+ 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 81, 79,
+ 80, 0, 82, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 75, 84, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 62, 63, 64, 0, 0, 0,
+ 0, 0, 0, 0, 0, 66, 0, 0, 0, 0,
+ 0, 0, 67, 0, 0, 0, 68, 69, 0, 70,
+ 0, 0, 0, 71, 0, 72, 73, 74, 0, 0,
+ 76, 0, 0, 0, 77, 0, 78, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 81, 79,
+ 80, 0, 82, 0, 83, 0, 85, 0, 86, 0,
+ 0, 0, 0, 75, 84, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, -88, 0, 0, 0, 62, 63,
+ 64, 0, 0, 0, 0, 0, 0, 0, 0, 66,
+ 0, 0, 0, 0, 0, 0, 67, 0, 0, 0,
+ 68, 69, 0, 70, 0, 0, 0, 71, 0, 72,
+ 73, 74, 0, 0, 76, 0, 0, 0, 77, 0,
+ 78, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 81, 79, 80, 0, 82, 0, 83, 0,
+ 85, 0, 86, 0, 0, 0, 0, 75, 84, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 62, 63,
+ 64, 0, 0, 0, 0, 0, 0, 0, 0, 66,
+ 0, 0, 0, 0, 0, 0, 67, 0, 0, 0,
+ 68, 69, 0, 70, 0, 0, 0, 71, 0, 72,
+ 73, 74, 0, 0, 76, 0, 0, 0, 77, 0,
+ 78, 0, 0, 496, 0, 0, 0, 0, 0, 0,
+ 0, 0, 81, 79, 80, 0, 82, 0, 83, 0,
+ 85, 0, 86, 0, 0, 0, 0, 75, 84, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 62, 63,
+ 64, 0, 0, 0, 0, 0, 0, 0, 0, 66,
+ 0, 0, 0, 0, 0, 0, 67, 0, 0, 0,
+ 68, 69, 0, 70, 0, 0, 0, 71, 0, 72,
+ 73, 74, 0, 0, 76, 0, 0, 0, 77, 0,
+ 78, 0, 0, 499, 0, 0, 0, 0, 0, 0,
+ 0, 0, 81, 79, 80, 0, 82, 0, 83, 0,
+ 85, 0, 86, 0, 0, 0, 0, 75, 84, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 62, 63,
+ 64, 0, 0, 0, 0, 0, 0, 0, 0, 66,
+ 0, 0, 0, 0, 0, 0, 67, 0, 0, 0,
+ 68, 69, 0, 70, 0, 0, 0, 71, 0, 72,
+ 73, 74, 0, 0, 76, 0, 0, 0, 77, 0,
+ 78, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 81, 79, 80, 0, 82, 0, 83, 0,
+ 85, 298, 86, 0, 0, 0, 0, 75, 84, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 139, 140,
+ 141, 0, 0, 143, 145, 146, 0, 0, 147, 0,
+ 148, 0, 0, 0, 150, 151, 152, 0, 0, 0,
+ 0, 0, 0, 67, 153, 154, 155, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 156, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 159, 0, 0, 0, 0, 0, 0,
+ 79, 80, 160, 161, 162, 0, 164, 165, 166, 167,
+ 168, 169, 0, 0, 157, 163, 149, 142, 144, 158,
+ 0, 0, 0, 0, 0, 139, 140, 141, 0, 0,
+ 143, 145, 146, 0, 0, 147, 0, 148, 0, 0,
+ 0, 150, 151, 152, 0, 0, 0, 0, 0, 0,
+ 420, 153, 154, 155, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 156, 0, 0, 0, 421, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 81, 79, 80, 0, 82, 0, 83, 0, 85, 0,
- 86, 0, 0, 0, 0, 75, 84, 65, 0, 0,
- 0, 0, 0, 0, 0, 0, 62, 63, 64, 0,
- 0, 0, 0, 0, 0, 0, 0, 66, 0, 0,
- 0, 0, 0, 0, 67, 0, 0, 0, 68, 69,
+ 159, 0, 0, 0, 0, 0, 425, 422, 424, 160,
+ 161, 162, 0, 164, 165, 166, 167, 168, 169, 0,
+ 0, 157, 163, 149, 142, 144, 158, 0, 0, 0,
+ 0, 0, 139, 140, 141, 0, 0, 143, 145, 146,
+ 0, 0, 147, 0, 148, 0, 0, 0, 150, 151,
+ 152, 0, 0, 0, 0, 0, 0, 420, 153, 154,
+ 155, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 156, 0, 0, 0, 421, 0, 0, 0, 0,
+ 0, 0, 0, 423, 0, 0, 0, 159, 0, 0,
+ 0, 0, 0, 425, 422, 424, 160, 161, 162, 0,
+ 164, 165, 166, 167, 168, 169, 0, 0, 157, 163,
+ 149, 142, 144, 158, 0, 0, 0, 0, 0, 239,
+ 0, 0, 0, 0, 240, 0, 62, 63, 64, 242,
+ 0, 0, 0, 0, 0, 0, 243, 66, 0, 0,
+ 0, 0, 0, 0, 245, 246, 0, 0, 247, 69,
0, 70, 0, 0, 0, 71, 0, 72, 73, 74,
0, 0, 76, 0, 0, 0, 77, 0, 78, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 81, 79, 80, 0, 82, 0, 83, 0, 85, 298,
- 86, 0, 0, 0, 0, 75, 84, 65, 0, 0,
- 0, 0, 0, 0, 0, 0, -92, 0, 0, 0,
- 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
- 0, 66, 0, 0, 0, 0, 0, 0, 67, 0,
- 0, 0, 68, 69, 0, 70, 0, 0, 0, 71,
- 0, 72, 73, 74, 0, 0, 76, 0, 0, 0,
- 77, 0, 78, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 81, 79, 80, 0, 82, 0,
- 83, 0, 85, 0, 86, 0, 0, 0, 0, 75,
- 84, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
- 0, 66, 0, 0, 0, 0, 0, 0, 67, 0,
- 0, 0, 68, 69, 0, 70, 0, 0, 0, 71,
+ 0, 0, 0, 0, 249, 0, 250, 0, 0, 0,
+ 81, 248, 251, 252, 82, 253, 83, 254, 85, 27,
+ 86, 255, 256, 0, 0, 75, 84, 65, 18, 241,
+ 0, 0, 0, 0, 0, 0, 239, 0, 0, 0,
+ 0, 240, 0, 62, 63, 64, 242, 0, 0, 0,
+ 0, 0, 0, 243, 244, 0, 0, 0, 0, 0,
+ 0, 245, 246, 0, 0, 247, 69, 0, 70, 0,
+ 0, 0, 71, 0, 72, 73, 74, 0, 0, 76,
+ 0, 0, 0, 77, 0, 78, 0, 0, 0, 0,
+ 0, 249, 0, 250, 0, 0, 0, 81, 248, 251,
+ 252, 82, 253, 83, 254, 85, 27, 86, 255, 256,
+ 0, 0, 75, 84, 65, 18, 241, 0, 0, 0,
+ 0, 0, 0, 239, 0, 0, 0, 0, 240, 0,
+ 62, 63, 64, 242, 0, 0, 0, 0, 0, 0,
+ 243, 66, 0, 0, 0, 0, 0, 0, 519, 246,
+ 0, 0, 247, 520, 0, 70, 0, 0, 0, 71,
0, 72, 73, 74, 0, 0, 76, 0, 0, 0,
- 77, 0, 78, 0, 0, 496, 0, 0, 0, 0,
- 0, 0, 0, 0, 81, 79, 80, 0, 82, 0,
- 83, 0, 85, 0, 86, 0, 0, 0, 0, 75,
- 84, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
- 0, 66, 0, 0, 0, 0, 0, 0, 67, 0,
- 0, 0, 68, 69, 0, 70, 0, 0, 0, 71,
- 0, 72, 73, 74, 0, 0, 76, 0, 0, 0,
- 77, 0, 78, 0, 0, 499, 0, 0, 0, 0,
- 0, 0, 0, 0, 81, 79, 80, 0, 82, 0,
- 83, 0, 85, 0, 86, 0, 0, 0, 0, 75,
- 84, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 139, 140, 141, 0, 0, 143, 145, 146, 0, 0,
- 147, 0, 148, 0, 0, 0, 150, 151, 152, 0,
- 0, 0, 0, 0, 0, 67, 153, 154, 155, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 156,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 159, 0, 0, 0, 0,
- 0, 0, 79, 80, 160, 161, 162, 0, 164, 165,
- 166, 167, 168, 169, 0, 0, 157, 163, 149, 142,
- 144, 158, 0, 0, 0, 0, 0, 139, 140, 141,
- 0, 0, 143, 145, 146, 0, 0, 147, 0, 148,
- 0, 0, 0, 150, 151, 152, 0, 0, 0, 0,
- 0, 0, 420, 153, 154, 155, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 156, 0, 0, 0,
- 421, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 159, 0, 0, 0, 0, 0, 425, 422,
- 424, 160, 161, 162, 0, 164, 165, 166, 167, 168,
- 169, 0, 0, 157, 163, 149, 142, 144, 158, 0,
- 0, 0, 0, 0, 139, 140, 141, 0, 0, 143,
- 145, 146, 0, 0, 147, 0, 148, 0, 0, 0,
- 150, 151, 152, 0, 0, 0, 0, 0, 0, 420,
- 153, 154, 155, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 156, 0, 0, 0, 421, 0, 0,
- 0, 0, 0, 0, 0, 423, 0, 0, 0, 159,
- 0, 0, 0, 0, 0, 425, 422, 424, 160, 161,
- 162, 0, 164, 165, 166, 167, 168, 169, 0, 0,
- 157, 163, 149, 142, 144, 158, 0, 0, 0, 0,
- 0, 239, 0, 0, 0, 0, 240, 0, 62, 63,
- 64, 242, 0, 0, 0, 0, 0, 0, 243, 66,
- 0, 0, 0, 0, 0, 0, 245, 246, 0, 0,
- 247, 69, 0, 70, 0, 0, 0, 71, 0, 72,
- 73, 74, 0, 0, 76, 0, 0, 0, 77, 0,
- 78, 0, 0, 0, 0, 0, 249, 0, 250, 0,
- 0, 0, 81, 248, 251, 252, 82, 253, 83, 254,
- 85, 27, 86, 255, 256, 0, 0, 75, 84, 65,
- 18, 241, 0, 0, 0, 0, 0, 0, 239, 0,
- 0, 0, 0, 240, 0, 62, 63, 64, 242, 0,
- 0, 0, 0, 0, 0, 243, 244, 0, 0, 0,
- 0, 0, 0, 245, 246, 0, 0, 247, 69, 0,
- 70, 0, 0, 0, 71, 0, 72, 73, 74, 0,
- 0, 76, 0, 0, 0, 77, 0, 78, 0, 0,
- 0, 0, 0, 249, 0, 250, 0, 0, 0, 81,
- 248, 251, 252, 82, 253, 83, 254, 85, 27, 86,
- 255, 256, 0, 0, 75, 84, 65, 18, 241, 0,
- 0, 0, 0, 0, 0, 239, 0, 0, 0, 0,
- 240, 0, 62, 63, 64, 242, 0, 0, 0, 0,
- 0, 0, 243, 66, 0, 0, 0, 0, 0, 0,
- 534, 246, 0, 0, 247, 535, 0, 70, 0, 0,
- 0, 71, 0, 72, 73, 74, 0, 0, 76, 0,
- 0, 0, 77, 0, 78, 0, 0, 0, 0, 0,
- 249, 0, 250, 0, 0, 0, 81, 248, 251, 252,
- 82, 253, 83, 254, 85, 27, 86, 255, 256, 0,
- 0, 75, 84, 65, 18, 241, 0, 0, 0, 0,
- 0, 0, 239, 0, 0, 0, 0, 240, 0, 62,
- 63, 64, 242, 0, 0, 0, 0, 0, 0, 243,
- 66, 0, 0, 0, 0, 0, 0, 519, 246, 0,
- 0, 247, 520, 0, 70, 0, 0, 0, 71, 0,
- 72, 73, 74, 0, 0, 76, 0, 0, 0, 77,
- 0, 78, 0, 0, 0, 0, 0, 249, 0, 250,
- 0, 0, 0, 81, 248, 251, 252, 82, 253, 83,
- 254, 85, 27, 86, 255, 256, 0, 0, 75, 84,
- 65, 18, 241, 0, 521, 0, 0, 0, 0, 388,
- 140, 141, 0, 0, 390, 145, 392, 63, 64, 393,
- 0, 148, 0, 0, 0, 150, 395, 396, 0, 0,
- 0, 0, 0, 0, 397, 398, 154, 155, 247, 69,
- 0, 70, 0, 0, 0, 71, 0, 72, 399, 74,
- 0, 0, 401, 0, 0, 0, 77, 0, 78, 0,
- -238, 0, 0, 0, 403, 0, 250, 0, 0, 0,
- 405, 402, 404, 406, 407, 408, 83, 410, 411, 412,
- 413, 414, 415, 0, 0, 400, 409, 394, 389, 391,
- 158, 0, 0, 0, 0, 0,
+ 77, 0, 78, 0, 0, 0, 0, 0, 249, 0,
+ 250, 0, 0, 0, 81, 248, 251, 252, 82, 253,
+ 83, 254, 85, 27, 86, 255, 256, 0, 0, 75,
+ 84, 65, 18, 241, 0, 521, 0, 0, 0, 0,
+ 388, 140, 141, 0, 0, 390, 145, 392, 63, 64,
+ 393, 0, 148, 0, 0, 0, 150, 395, 396, 0,
+ 0, 0, 0, 0, 0, 397, 398, 154, 155, 247,
+ 69, 0, 70, 0, 0, 0, 71, 0, 72, 399,
+ 74, 0, 0, 401, 0, 0, 0, 77, 0, 78,
+ 0, -234, 0, 0, 0, 403, 0, 250, 0, 0,
+ 0, 405, 402, 404, 406, 407, 408, 83, 410, 411,
+ 412, 413, 414, 415, 0, 0, 400, 409, 394, 389,
+ 391, 158, 0, 0, 0, 0, 0,
- 474, 476, 10, 500, 477, 459, 460, 456, 193, 472,
- 462, 12, 265, 548, 212, 180, 512, 481, 218, 38,
- 524, 366, 542, 466, 508, 329, 17, 216, 518, 533,
- 541, 487, 49, 483, 463, 466, 452, 498, 485, 270,
- 206, 237, 494, 277, 536, 0, 0, 463, 199, 0,
- 201, 495, 347, 178, 170, 427, 265, 176, 429, 380,
- 173, 270, 378, 374, 417, 365, 376, 419, 363, 442,
- 334, 338, 212, 347, 336, 444, 437, 361, 277, 90,
- 237, 329, 90, 120, 280, 329, 0, 313, 0, 237,
- 431, 531, 542, 432, 329, 329, 329, 90, 0, 0,
- 136, 17, 314, 90, 537, 210, 90, 90, 90, 138,
- 90, 315, 118, 90, 216, 17, 176, 176, 125, 130,
- 132, 90, 90, 208, 434, 100, 90, 128, 431, 332,
- 293, 432, 0, 90, 102, 297, 91, 356, 330, 357,
- 359, 90, 90, 210, 99, 90, 90, 505, 98, 90,
- 90, 506, 504, 90, 552, 479, 90, 90, 503, 478,
- 90, 90, 371, 502, 90, 90, 507, 97, 90, 90,
- 478, 90, 90, 90, 195, 119, 264, 122, 121, 90,
- 90, 0, 90, 90, 114, 198, 127, 124, 90, 107,
- 368, 90, 90, 311, 479, 90, 123, 90, 325, 325,
- 136, 126, 297, 297, 297, 0, 90, 90, 0, 138,
- 205, 297, 297, 90, 343, 0, 0, 0, 297, 320,
- 344, 346, 340, 325, 322, 90, 90, 0, 297, 90,
- 297, 297, 316, 318, 297, 90, 317, 0, 90, 90,
- 297, 325, 305, 312, 297, 353, 297, 28, 300, 0,
- 0, 0, 28, 31, 515, 0, 0, 0, 31, 16,
- 33, 17, 0, 324, 16, 33, 17, 0, 0, 0,
+ 459, 180, 427, 498, 476, 193, 280, 487, 199, 437,
+ 444, 472, 460, 500, 452, 481, 178, 212, 456, 474,
+ 477, 442, 462, 533, 485, 376, 173, 374, 529, 532,
+ 270, 378, 277, 347, 524, 366, 526, 380, 265, 10,
+ 365, 336, 338, 12, 466, 539, 237, 363, 38, 361,
+ 466, 90, 170, 506, 176, 334, 206, 218, 508, 429,
+ 49, 0, 0, 494, 0, 463, 518, 277, 417, 212,
+ 216, 201, 495, 265, 270, 419, 463, 512, 329, 329,
+ 237, 0, 0, 533, 176, 329, 0, 136, 0, 347,
+ 216, 208, 90, 90, 90, 329, 138, 237, 0, 124,
+ 0, 90, 431, 90, 483, 432, 195, 127, 125, 198,
+ 90, 90, 90, 329, 119, 120, 118, 90, 90, 210,
+ 90, 90, 90, 90, 128, 123, 121, 114, 311, 359,
+ 90, 90, 90, 329, 90, 312, 0, 313, 90, 330,
+ 0, 132, 90, 314, 90, 543, 130, 315, 90, 122,
+ 507, 0, 90, 356, 97, 293, 90, 357, 478, 90,
+ 297, 90, 91, 479, 176, 0, 368, 264, 90, 0,
+ 502, 434, 90, 90, 503, 504, 90, 332, 505, 371,
+ 431, 90, 90, 432, 100, 90, 0, 98, 90, 0,
+ 102, 90, 0, 90, 107, 210, 90, 126, 479, 90,
+ 325, 99, 90, 90, 325, 297, 325, 297, 297, 297,
+ 90, 297, 325, 322, 0, 297, 0, 297, 340, 16,
+ 33, 17, 346, 0, 90, 90, 344, 343, 324, 297,
+ 297, 90, 316, 0, 327, 90, 297, 320, 318, 90,
+ 297, 136, 317, 325, 297, 0, 305, 90, 297, 0,
+ 138, 205, 297, 0, 0, 0, 300, 0, 0, 0,
+ 90, 0, 478, 0, 0, 353, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 515, 0, 0,
+ 0, 0, 0, 0, 0, 0, 16, 33, 17, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 325, 0, 0, 0, 0,
- 297, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 327, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -534,224 +527,220 @@ const int JavaScriptGrammar::action_info [] = {
0, 0};
const int JavaScriptGrammar::action_check [] = {
- 48, 5, 55, 36, 7, 61, 17, 2, 7, 7,
- 7, 5, 5, 78, 2, 7, 1, 8, 7, 61,
- 20, 33, 60, 36, 29, 8, 36, 36, 7, 7,
- 55, 55, 55, 7, 36, 7, 7, 33, 8, 8,
- 16, 60, 17, 7, 31, 8, 36, 7, 76, 33,
- 36, 33, 60, 33, 60, 36, 8, 2, 7, 7,
- 61, 88, 0, 36, 7, 7, 88, 33, 2, 1,
- 7, 36, 8, 8, 1, 36, 33, 36, 36, 29,
- 36, 36, 8, 60, 1, 8, 33, 33, 55, 29,
- 29, 7, 60, 8, 48, -1, 8, 7, 60, 15,
- 7, 10, 8, 8, 8, 8, 8, 60, 15, 7,
- -1, 8, 7, 8, 6, 66, -1, 48, 48, 40,
- 40, 65, 50, 33, 8, 8, 54, 7, 20, 8,
- 51, 51, 61, 62, 8, 33, 8, 78, 8, 61,
- 62, 56, 61, 62, 56, 78, 55, 61, 62, 42,
- 56, 56, 12, 40, 56, -1, 60, 60, -1, 15,
- 53, 61, 62, 60, 51, 61, 62, 61, 62, 50,
- 61, 62, 40, 54, -1, 29, 60, 60, 34, 29,
- 36, 60, 25, 51, 27, 25, 60, 27, 60, -1,
- 12, 61, 62, -1, 25, 38, 27, 57, 38, 12,
- -1, 29, 25, 63, 27, 29, 25, 38, 27, 15,
- -1, 8, 66, 67, 8, 38, 66, 67, 25, 38,
- 27, 25, -1, 27, 25, 25, 27, 27, 34, -1,
- 36, 38, 15, 29, 38, 57, 29, 38, 38, 29,
- -1, 63, 66, 67, 57, 29, 74, 29, 8, 29,
- 63, 34, 29, 36, 29, 29, 25, 85, 27, -1,
- -1, 29, -1, -1, 61, -1, -1, 61, 62, 38,
- 66, 67, -1, 66, 67, -1, 66, 67, 18, 19,
- -1, 29, 66, 67, 66, 67, 66, 67, 36, 66,
- 67, 66, 67, -1, 25, 29, 27, -1, 66, 67,
- 74, 61, 62, 18, 19, 45, 46, 38, 29, -1,
- 29, 85, 23, 24, -1, -1, -1, -1, 66, 67,
- -1, 32, -1, -1, 35, -1, 37, 61, 62, -1,
- 45, 46, 66, 67, -1, -1, -1, -1, 59, -1,
- 23, 24, 61, 62, -1, 66, 67, 66, 67, 32,
- -1, -1, 35, 29, 37, -1, 23, 24, -1, -1,
- 18, 19, 23, 24, 85, 32, 29, -1, 35, -1,
- 37, 32, -1, -1, 35, -1, 37, -1, -1, -1,
- -1, -1, -1, -1, -1, 61, 62, 45, 46, -1,
- 66, 67, 8, 23, 24, -1, -1, -1, 61, 62,
- -1, 31, 32, 66, 67, 35, -1, 37, 23, 24,
- -1, -1, -1, 29, 8, -1, 31, 32, 23, 24,
- 35, -1, 37, -1, -1, 10, 31, 32, -1, -1,
- 35, -1, 37, 23, 24, 29, -1, 22, -1, -1,
- -1, -1, 32, 59, 29, 35, -1, 37, 10, -1,
- 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
- 22, -1, -1, -1, -1, 59, -1, 29, -1, 85,
- 55, -1, 66, 67, 59, -1, -1, -1, -1, -1,
- -1, 66, 67, -1, -1, -1, -1, -1, -1, 74,
- -1, 85, -1, 55, -1, -1, -1, 59, 83, -1,
- 85, 23, 24, -1, 66, 67, 3, -1, -1, 31,
- 32, -1, 74, 35, -1, 37, 13, -1, -1, -1,
- 17, 83, -1, 85, -1, -1, -1, -1, -1, 26,
- -1, 28, -1, -1, 31, -1, -1, -1, -1, -1,
- -1, -1, 39, -1, 41, 42, -1, -1, -1, -1,
- -1, -1, 49, -1, -1, 52, 53, -1, -1, -1,
- -1, 58, -1, -1, -1, -1, -1, 64, -1, 3,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 13,
- -1, -1, 79, 17, -1, -1, -1, -1, -1, -1,
- -1, -1, 26, -1, 28, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 39, -1, 41, 42, -1,
- -1, -1, -1, -1, -1, 49, -1, -1, 52, 53,
- -1, -1, -1, -1, 58, -1, -1, -1, -1, -1,
- 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 79, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 12, 13, -1,
- -1, -1, -1, -1, -1, -1, -1, 22, -1, -1,
- -1, -1, -1, -1, 29, -1, -1, -1, 33, 34,
- -1, 36, -1, -1, -1, -1, -1, -1, 43, -1,
- -1, -1, 47, -1, -1, -1, -1, -1, -1, -1,
+ 36, 1, 7, 60, 7, 78, 33, 36, 7, 7,
+ 7, 29, 2, 8, 5, 7, 33, 61, 5, 60,
+ 2, 36, 8, 65, 33, 1, 78, 2, 48, 55,
+ 7, 16, 60, 7, 48, 60, 2, 33, 31, 17,
+ 7, 60, 36, 8, 7, 7, 7, 36, 36, 55,
+ 8, 55, 7, 7, 61, 36, 8, 8, 60, 29,
+ 7, 7, 33, 36, 8, 29, 8, 36, 36, 8,
+ 7, 0, 8, 33, 7, 55, 60, 36, 88, 29,
+ 36, 1, 17, 66, 33, 1, 20, 88, 36, 7,
+ -1, 48, 7, 36, 8, 36, 8, 29, 8, 78,
+ 7, 8, 55, 33, 8, 33, 78, 8, 48, 7,
+ 5, 10, 8, 6, 8, -1, 61, 15, 33, 29,
+ 8, 40, 8, 8, 50, -1, -1, 20, 54, 60,
+ 8, 40, 51, 8, 61, 62, 61, 62, 76, 61,
+ 62, 8, 51, 40, 56, 25, 60, 27, 61, 62,
+ 61, 62, 56, 42, 51, 12, 55, 40, 38, 60,
+ 56, 61, 62, 50, 53, 12, 60, 54, 51, 61,
+ 62, 25, 60, 27, 60, 8, 61, 61, 62, 25,
+ 15, 27, 60, -1, 38, 60, 15, 29, 29, 56,
+ 15, 25, 38, 27, -1, 25, 8, 27, 29, 34,
+ 57, 36, 29, 8, 38, 34, 63, 36, 38, 34,
+ 57, 36, 29, 8, 29, -1, 63, -1, 12, -1,
+ -1, 29, -1, 29, 66, 67, 29, 29, 61, 62,
+ -1, -1, 25, 74, 27, 66, 67, 29, -1, 66,
+ 67, -1, -1, -1, 85, 38, 29, -1, 60, 66,
+ 67, 66, 67, 29, -1, -1, 61, 62, 66, 67,
+ 66, 67, 29, 57, 66, 67, 61, 62, -1, 63,
+ 29, 74, -1, -1, 66, 67, -1, 36, -1, 25,
+ -1, 27, 85, 66, 67, 18, 19, 18, 19, 29,
+ 66, 67, 38, -1, -1, -1, -1, 23, 24, 66,
+ 67, 29, -1, -1, 29, -1, 32, 66, 67, 35,
+ -1, 37, 45, 46, 45, 46, 23, 24, -1, -1,
+ -1, 61, 62, -1, -1, 32, 66, 67, 35, -1,
+ 37, 29, -1, 61, 62, -1, 61, 62, 66, 67,
+ -1, 66, 67, 23, 24, 18, 19, 23, 24, -1,
+ -1, -1, 32, -1, -1, 35, 32, 37, -1, 35,
+ -1, 37, -1, 61, 62, -1, 23, 24, 66, 67,
+ -1, -1, 45, 46, 31, 32, 23, 24, 35, -1,
+ 37, -1, -1, -1, 31, 32, 23, 24, 35, -1,
+ 37, -1, -1, -1, 31, 32, 23, 24, 35, -1,
+ 37, -1, -1, 10, 31, 32, -1, -1, 35, -1,
+ 37, -1, 23, 24, -1, 22, -1, -1, 23, 24,
+ 31, 32, 29, -1, 35, -1, 37, 32, -1, -1,
+ 35, -1, 37, 3, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 13, -1, -1, -1, 17, 55, -1,
+ -1, -1, 59, -1, -1, -1, 26, -1, 28, 66,
+ 67, -1, -1, -1, -1, -1, -1, 74, -1, 39,
+ -1, 41, 42, -1, -1, -1, 83, 3, 85, 49,
+ -1, -1, 52, 53, -1, -1, 10, 13, 58, -1,
+ -1, 17, -1, -1, 64, -1, -1, -1, 22, -1,
+ 26, -1, 28, -1, -1, 29, -1, -1, -1, 79,
+ -1, -1, -1, 39, -1, 41, 42, -1, -1, -1,
+ -1, -1, -1, 49, -1, -1, 52, 53, -1, -1,
+ -1, 55, 58, -1, -1, 59, -1, -1, 64, -1,
+ -1, -1, 66, 67, -1, -1, -1, -1, -1, -1,
+ 74, -1, -1, 79, -1, -1, -1, -1, -1, 83,
+ -1, 85, -1, -1, -1, -1, -1, 3, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 13, -1, -1,
+ -1, 17, -1, -1, -1, -1, -1, -1, -1, -1,
+ 26, -1, 28, -1, -1, 31, -1, -1, -1, -1,
+ -1, -1, -1, 39, -1, 41, 42, -1, -1, -1,
+ -1, -1, -1, 49, -1, -1, 52, 53, -1, -1,
+ -1, -1, 58, -1, -1, -1, -1, -1, 64, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 65, 66, 67, -1, 69, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 80, 81, 82, -1, -1,
- -1, -1, -1, -1, -1, -1, 11, 12, 13, -1,
- -1, -1, -1, -1, -1, -1, -1, 22, -1, -1,
- -1, -1, -1, -1, 29, -1, -1, -1, 33, 34,
- -1, 36, -1, -1, -1, 40, -1, 42, 43, 44,
- -1, -1, 47, -1, -1, -1, 51, -1, 53, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 65, 66, 67, -1, 69, -1, 71, -1, 73, -1,
- 75, -1, -1, -1, -1, 80, 81, 82, -1, -1,
- -1, -1, -1, -1, -1, -1, 11, 12, 13, -1,
- -1, -1, -1, -1, -1, -1, -1, 22, -1, -1,
- -1, -1, -1, -1, 29, -1, -1, -1, 33, 34,
- -1, 36, -1, -1, -1, 40, -1, 42, 43, 44,
- -1, -1, 47, -1, -1, -1, 51, -1, 53, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 65, 66, 67, -1, 69, -1, 71, -1, 73, 74,
- 75, -1, -1, -1, -1, 80, 81, 82, -1, -1,
- -1, -1, -1, -1, -1, -1, 7, -1, -1, -1,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
- -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
- -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
- 51, -1, 53, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, 66, 67, -1, 69, -1,
- 71, -1, 73, -1, 75, -1, -1, -1, -1, 80,
- 81, 82, -1, -1, -1, -1, -1, -1, -1, -1,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
- -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
- -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
- 51, -1, 53, -1, -1, 56, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, 66, 67, -1, 69, -1,
- 71, -1, 73, -1, 75, -1, -1, -1, -1, 80,
- 81, 82, -1, -1, -1, -1, -1, -1, -1, -1,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
- -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
- -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
- 51, -1, 53, -1, -1, 56, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, 66, 67, -1, 69, -1,
- 71, -1, 73, -1, 75, -1, -1, -1, -1, 80,
- 81, 82, -1, -1, -1, -1, -1, -1, -1, -1,
- 4, 5, 6, -1, -1, 9, 10, 11, -1, -1,
- 14, -1, 16, -1, -1, -1, 20, 21, 22, -1,
- -1, -1, -1, -1, -1, 29, 30, 31, 32, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 43,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 59, -1, -1, -1, -1,
- -1, -1, 66, 67, 68, 69, 70, -1, 72, 73,
- 74, 75, 76, 77, -1, -1, 80, 81, 82, 83,
- 84, 85, -1, -1, -1, -1, -1, 4, 5, 6,
- -1, -1, 9, 10, 11, -1, -1, 14, -1, 16,
- -1, -1, -1, 20, 21, 22, -1, -1, -1, -1,
- -1, -1, 29, 30, 31, 32, -1, -1, -1, -1,
+ -1, -1, -1, 79, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 12, 13, -1, -1, -1,
+ -1, -1, -1, -1, -1, 22, -1, -1, -1, -1,
+ -1, -1, 29, -1, -1, -1, 33, 34, -1, 36,
-1, -1, -1, -1, -1, -1, 43, -1, -1, -1,
47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 59, -1, -1, -1, -1, -1, 65, 66,
- 67, 68, 69, 70, -1, 72, 73, 74, 75, 76,
- 77, -1, -1, 80, 81, 82, 83, 84, 85, -1,
- -1, -1, -1, -1, 4, 5, 6, -1, -1, 9,
- 10, 11, -1, -1, 14, -1, 16, -1, -1, -1,
- 20, 21, 22, -1, -1, -1, -1, -1, -1, 29,
- 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 43, -1, -1, -1, 47, -1, -1,
- -1, -1, -1, -1, -1, 55, -1, -1, -1, 59,
- -1, -1, -1, -1, -1, 65, 66, 67, 68, 69,
- 70, -1, 72, 73, 74, 75, 76, 77, -1, -1,
- 80, 81, 82, 83, 84, 85, -1, -1, -1, -1,
- -1, 4, -1, -1, -1, -1, 9, -1, 11, 12,
- 13, 14, -1, -1, -1, -1, -1, -1, 21, 22,
- -1, -1, -1, -1, -1, -1, 29, 30, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 65, 66,
+ 67, -1, 69, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 80, 81, 82, -1, -1, -1, -1,
+ -1, -1, -1, -1, 11, 12, 13, -1, -1, -1,
+ -1, -1, -1, -1, -1, 22, -1, -1, -1, -1,
+ -1, -1, 29, -1, -1, -1, 33, 34, -1, 36,
+ -1, -1, -1, 40, -1, 42, 43, 44, -1, -1,
+ 47, -1, -1, -1, 51, -1, 53, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 65, 66,
+ 67, -1, 69, -1, 71, -1, 73, -1, 75, -1,
+ -1, -1, -1, 80, 81, 82, -1, -1, -1, -1,
+ -1, -1, -1, -1, 7, -1, -1, -1, 11, 12,
+ 13, -1, -1, -1, -1, -1, -1, -1, -1, 22,
+ -1, -1, -1, -1, -1, -1, 29, -1, -1, -1,
+ 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
+ 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
+ 53, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 65, 66, 67, -1, 69, -1, 71, -1,
+ 73, -1, 75, -1, -1, -1, -1, 80, 81, 82,
+ -1, -1, -1, -1, -1, -1, -1, -1, 11, 12,
+ 13, -1, -1, -1, -1, -1, -1, -1, -1, 22,
+ -1, -1, -1, -1, -1, -1, 29, -1, -1, -1,
+ 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
+ 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
+ 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
+ -1, -1, 65, 66, 67, -1, 69, -1, 71, -1,
+ 73, -1, 75, -1, -1, -1, -1, 80, 81, 82,
+ -1, -1, -1, -1, -1, -1, -1, -1, 11, 12,
+ 13, -1, -1, -1, -1, -1, -1, -1, -1, 22,
+ -1, -1, -1, -1, -1, -1, 29, -1, -1, -1,
+ 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
+ 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
+ 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
+ -1, -1, 65, 66, 67, -1, 69, -1, 71, -1,
+ 73, -1, 75, -1, -1, -1, -1, 80, 81, 82,
+ -1, -1, -1, -1, -1, -1, -1, -1, 11, 12,
+ 13, -1, -1, -1, -1, -1, -1, -1, -1, 22,
+ -1, -1, -1, -1, -1, -1, 29, -1, -1, -1,
33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
- 53, -1, -1, -1, -1, -1, 59, -1, 61, -1,
- -1, -1, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, -1, -1, 80, 81, 82,
- 83, 84, -1, -1, -1, -1, -1, -1, 4, -1,
- -1, -1, -1, 9, -1, 11, 12, 13, 14, -1,
- -1, -1, -1, -1, -1, 21, 22, -1, -1, -1,
- -1, -1, -1, 29, 30, -1, -1, 33, 34, -1,
- 36, -1, -1, -1, 40, -1, 42, 43, 44, -1,
- -1, 47, -1, -1, -1, 51, -1, 53, -1, -1,
- -1, -1, -1, 59, -1, 61, -1, -1, -1, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, -1, -1, 80, 81, 82, 83, 84, -1,
- -1, -1, -1, -1, -1, 4, -1, -1, -1, -1,
- 9, -1, 11, 12, 13, 14, -1, -1, -1, -1,
- -1, -1, 21, 22, -1, -1, -1, -1, -1, -1,
- 29, 30, -1, -1, 33, 34, -1, 36, -1, -1,
- -1, 40, -1, 42, 43, 44, -1, -1, 47, -1,
- -1, -1, 51, -1, 53, -1, -1, -1, -1, -1,
- 59, -1, 61, -1, -1, -1, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, -1,
- -1, 80, 81, 82, 83, 84, -1, -1, -1, -1,
- -1, -1, 4, -1, -1, -1, -1, 9, -1, 11,
- 12, 13, 14, -1, -1, -1, -1, -1, -1, 21,
- 22, -1, -1, -1, -1, -1, -1, 29, 30, -1,
- -1, 33, 34, -1, 36, -1, -1, -1, 40, -1,
- 42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
- -1, 53, -1, -1, -1, -1, -1, 59, -1, 61,
- -1, -1, -1, 65, 66, 67, 68, 69, 70, 71,
+ 53, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 65, 66, 67, -1, 69, -1, 71, -1,
+ 73, 74, 75, -1, -1, -1, -1, 80, 81, 82,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4, 5,
+ 6, -1, -1, 9, 10, 11, -1, -1, 14, -1,
+ 16, -1, -1, -1, 20, 21, 22, -1, -1, -1,
+ -1, -1, -1, 29, 30, 31, 32, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 43, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 59, -1, -1, -1, -1, -1, -1,
+ 66, 67, 68, 69, 70, -1, 72, 73, 74, 75,
+ 76, 77, -1, -1, 80, 81, 82, 83, 84, 85,
+ -1, -1, -1, -1, -1, 4, 5, 6, -1, -1,
+ 9, 10, 11, -1, -1, 14, -1, 16, -1, -1,
+ -1, 20, 21, 22, -1, -1, -1, -1, -1, -1,
+ 29, 30, 31, 32, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 43, -1, -1, -1, 47, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 59, -1, -1, -1, -1, -1, 65, 66, 67, 68,
+ 69, 70, -1, 72, 73, 74, 75, 76, 77, -1,
+ -1, 80, 81, 82, 83, 84, 85, -1, -1, -1,
+ -1, -1, 4, 5, 6, -1, -1, 9, 10, 11,
+ -1, -1, 14, -1, 16, -1, -1, -1, 20, 21,
+ 22, -1, -1, -1, -1, -1, -1, 29, 30, 31,
+ 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 43, -1, -1, -1, 47, -1, -1, -1, -1,
+ -1, -1, -1, 55, -1, -1, -1, 59, -1, -1,
+ -1, -1, -1, 65, 66, 67, 68, 69, 70, -1,
72, 73, 74, 75, 76, 77, -1, -1, 80, 81,
- 82, 83, 84, -1, 86, -1, -1, -1, -1, 4,
- 5, 6, -1, -1, 9, 10, 11, 12, 13, 14,
- -1, 16, -1, -1, -1, 20, 21, 22, -1, -1,
- -1, -1, -1, -1, 29, 30, 31, 32, 33, 34,
+ 82, 83, 84, 85, -1, -1, -1, -1, -1, 4,
+ -1, -1, -1, -1, 9, -1, 11, 12, 13, 14,
+ -1, -1, -1, -1, -1, -1, 21, 22, -1, -1,
+ -1, -1, -1, -1, 29, 30, -1, -1, 33, 34,
-1, 36, -1, -1, -1, 40, -1, 42, 43, 44,
-1, -1, 47, -1, -1, -1, 51, -1, 53, -1,
- 55, -1, -1, -1, 59, -1, 61, -1, -1, -1,
+ -1, -1, -1, -1, 59, -1, 61, -1, -1, -1,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, -1, -1, 80, 81, 82, 83, 84,
- 85, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 4, -1, -1, -1,
+ -1, 9, -1, 11, 12, 13, 14, -1, -1, -1,
+ -1, -1, -1, 21, 22, -1, -1, -1, -1, -1,
+ -1, 29, 30, -1, -1, 33, 34, -1, 36, -1,
+ -1, -1, 40, -1, 42, 43, 44, -1, -1, 47,
+ -1, -1, -1, 51, -1, 53, -1, -1, -1, -1,
+ -1, 59, -1, 61, -1, -1, -1, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ -1, -1, 80, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, 4, -1, -1, -1, -1, 9, -1,
+ 11, 12, 13, 14, -1, -1, -1, -1, -1, -1,
+ 21, 22, -1, -1, -1, -1, -1, -1, 29, 30,
+ -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
+ -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
+ 51, -1, 53, -1, -1, -1, -1, -1, 59, -1,
+ 61, -1, -1, -1, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, -1, -1, 80,
+ 81, 82, 83, 84, -1, 86, -1, -1, -1, -1,
+ 4, 5, 6, -1, -1, 9, 10, 11, 12, 13,
+ 14, -1, 16, -1, -1, -1, 20, 21, 22, -1,
+ -1, -1, -1, -1, -1, 29, 30, 31, 32, 33,
+ 34, -1, 36, -1, -1, -1, 40, -1, 42, 43,
+ 44, -1, -1, 47, -1, -1, -1, 51, -1, 53,
+ -1, 55, -1, -1, -1, 59, -1, 61, -1, -1,
+ -1, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, -1, -1, 80, 81, 82, 83,
+ 84, 85, -1, -1, -1, -1, -1,
- 20, 64, 5, 17, 64, 78, 17, 90, 26, 95,
- 78, 6, 20, 26, 20, 60, 17, 17, 20, 16,
- 11, 20, 20, 64, 20, 17, 20, 20, 15, 15,
- 20, 15, 17, 15, 17, 64, 93, 26, 17, 20,
- 17, 15, 22, 15, 11, -1, -1, 17, 26, -1,
- 26, 26, 20, 26, 17, 26, 20, 26, 15, 15,
- 26, 20, 15, 15, 26, 15, 17, 28, 17, 15,
- 15, 15, 20, 20, 17, 17, 15, 15, 15, 37,
- 15, 17, 37, 41, 17, 17, -1, 42, -1, 15,
- 31, 10, 20, 34, 17, 17, 17, 37, -1, -1,
- 20, 20, 42, 37, 9, 39, 37, 37, 37, 29,
- 37, 42, 41, 37, 20, 20, 26, 26, 42, 49,
- 47, 37, 37, 33, 33, 40, 37, 43, 31, 61,
- 37, 34, -1, 37, 45, 42, 40, 84, 61, 61,
- 61, 37, 37, 39, 39, 37, 37, 39, 39, 37,
- 37, 39, 39, 37, 82, 39, 37, 37, 39, 39,
- 37, 37, 97, 39, 37, 37, 39, 39, 37, 37,
- 39, 37, 37, 37, 51, 41, 102, 42, 42, 37,
- 37, -1, 37, 37, 42, 53, 43, 42, 37, 43,
- 96, 37, 37, 42, 39, 37, 42, 37, 37, 37,
- 20, 43, 42, 42, 42, -1, 37, 37, -1, 29,
- 30, 42, 42, 37, 54, -1, -1, -1, 42, 50,
- 59, 59, 52, 37, 48, 37, 37, -1, 42, 37,
- 42, 42, 44, 44, 42, 37, 44, -1, 37, 37,
- 42, 37, 44, 42, 42, 59, 42, 6, 46, -1,
- -1, -1, 6, 12, 8, -1, -1, -1, 12, 18,
- 19, 20, -1, 59, 18, 19, 20, -1, -1, -1,
+ 77, 59, 25, 25, 63, 25, 16, 14, 25, 14,
+ 16, 94, 16, 16, 92, 16, 25, 19, 89, 19,
+ 63, 14, 77, 19, 16, 16, 25, 14, 6, 19,
+ 19, 14, 14, 19, 10, 19, 6, 14, 19, 5,
+ 14, 16, 14, 6, 63, 25, 14, 16, 15, 14,
+ 63, 36, 16, 38, 25, 14, 16, 19, 19, 14,
+ 16, -1, -1, 21, -1, 16, 14, 14, 25, 19,
+ 19, 25, 25, 19, 19, 27, 16, 16, 16, 16,
+ 14, -1, -1, 19, 25, 16, -1, 19, -1, 19,
+ 19, 32, 36, 36, 36, 16, 28, 14, -1, 41,
+ -1, 36, 30, 36, 14, 33, 50, 42, 41, 52,
+ 36, 36, 36, 16, 40, 40, 40, 36, 36, 38,
+ 36, 36, 36, 36, 42, 41, 41, 41, 41, 60,
+ 36, 36, 36, 16, 36, 41, -1, 41, 36, 60,
+ -1, 46, 36, 41, 36, 81, 48, 41, 36, 41,
+ 38, -1, 36, 83, 38, 36, 36, 60, 38, 36,
+ 41, 36, 39, 38, 25, -1, 95, 101, 36, -1,
+ 38, 32, 36, 36, 38, 38, 36, 60, 38, 96,
+ 30, 36, 36, 33, 39, 36, -1, 38, 36, -1,
+ 44, 36, -1, 36, 42, 38, 36, 42, 38, 36,
+ 36, 38, 36, 36, 36, 41, 36, 41, 41, 41,
+ 36, 41, 36, 47, -1, 41, -1, 41, 51, 17,
+ 18, 19, 58, -1, 36, 36, 58, 53, 58, 41,
+ 41, 36, 43, -1, 58, 36, 41, 49, 43, 36,
+ 41, 19, 43, 36, 41, -1, 43, 36, 41, -1,
+ 28, 29, 41, -1, -1, -1, 45, -1, -1, -1,
+ 36, -1, 38, -1, -1, 58, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 8, -1, -1,
+ -1, -1, -1, -1, -1, -1, 17, 18, 19, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 37, -1, -1, -1, -1,
- 42, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 59, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
diff --git a/src/declarative/qml/parser/javascriptgrammar_p.h b/src/declarative/qml/parser/javascriptgrammar_p.h
index 3b98238..84f1a64 100644
--- a/src/declarative/qml/parser/javascriptgrammar_p.h
+++ b/src/declarative/qml/parser/javascriptgrammar_p.h
@@ -150,15 +150,15 @@ public:
T_XOR = 78,
T_XOR_EQ = 79,
- ACCEPT_STATE = 553,
- RULE_COUNT = 317,
- STATE_COUNT = 554,
+ ACCEPT_STATE = 544,
+ RULE_COUNT = 313,
+ STATE_COUNT = 545,
TERMINAL_COUNT = 91,
- NON_TERMINAL_COUNT = 104,
+ NON_TERMINAL_COUNT = 103,
- GOTO_INDEX_OFFSET = 554,
- GOTO_INFO_OFFSET = 1836,
- GOTO_CHECK_OFFSET = 1836
+ GOTO_INDEX_OFFSET = 545,
+ GOTO_INFO_OFFSET = 1747,
+ GOTO_CHECK_OFFSET = 1747
};
static const char *const spell [];
diff --git a/src/declarative/qml/parser/javascriptparser.cpp b/src/declarative/qml/parser/javascriptparser.cpp
index 0857eef..f9615c0 100644
--- a/src/declarative/qml/parser/javascriptparser.cpp
+++ b/src/declarative/qml/parser/javascriptparser.cpp
@@ -231,8 +231,8 @@ case 14: {
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
- case 15:
-case 16: {
+
+case 15: {
AST::UiObjectBinding *node = makeAstNode<AST::UiObjectBinding> (driver->nodePool(), sym(1).UiQualifiedId->finish(),
sym(3).sval, sym(4).UiObjectInitializer);
node->colonToken = loc(2);
@@ -240,14 +240,14 @@ case 16: {
sym(1).Node = node;
} break;
-case 17: {
+case 16: {
AST::UiObjectDefinition *node = makeAstNode<AST::UiObjectDefinition> (driver->nodePool(), sym(1).sval,
sym(2).UiObjectInitializer);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
- case 20:
-case 21: {
+
+case 18: {
AST::UiArrayBinding *node = makeAstNode<AST::UiArrayBinding> (driver->nodePool(), sym(1).UiQualifiedId->finish(),
sym(4).UiObjectMemberList->finish());
node->colonToken = loc(2);
@@ -256,33 +256,33 @@ case 21: {
sym(1).Node = node;
} break;
-case 22: {
+case 19: {
AST::StringLiteral *node = makeAstNode<AST::StringLiteral> (driver->nodePool(), sym(1).sval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 24: {
+case 21: {
AST::ExpressionStatement *node = makeAstNode<AST::ExpressionStatement> (driver->nodePool(), sym(1).Expression);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
- case 25: case 26:
-case 27: {
+ case 22:
+case 23: {
AST::UiScriptBinding *node = makeAstNode<AST::UiScriptBinding> (driver->nodePool(), sym(1).UiQualifiedId->finish(),
sym(3).Statement);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 28:
+case 24:
-case 29: {
+case 25: {
sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
break;
}
-case 31: {
+case 27: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), (JavaScriptNameIdImpl *)0, sym(2).sval);
node->type = AST::UiPublicMember::Signal;
node->propertyToken = loc(1);
@@ -291,7 +291,7 @@ case 31: {
sym(1).Node = node;
} break;
-case 32: {
+case 28: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval);
node->propertyToken = loc(1);
node->typeToken = loc(2);
@@ -299,7 +299,7 @@ case 32: {
sym(1).Node = node;
} break;
-case 33: {
+case 29: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval);
node->isDefaultMember = true;
node->defaultToken = loc(1);
@@ -309,7 +309,7 @@ case 33: {
sym(1).Node = node;
} break;
-case 34: {
+case 30: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval,
sym(5).Expression);
node->propertyToken = loc(1);
@@ -319,7 +319,7 @@ case 34: {
sym(1).Node = node;
} break;
-case 35: {
+case 31: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval,
sym(6).Expression);
node->isDefaultMember = true;
@@ -331,88 +331,88 @@ case 35: {
sym(1).Node = node;
} break;
-case 36: {
+case 32: {
sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
-case 37: {
+case 33: {
sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
-case 38:
-case 39:
+case 34:
+case 35:
{
AST::UiQualifiedId *node = makeAstNode<AST::UiQualifiedId> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()));
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 41: {
+case 37: {
QString s = QLatin1String(JavaScriptGrammar::spell[T_PROPERTY]);
sym(1).sval = driver->intern(s.constData(), s.length());
break;
}
-case 42: {
+case 38: {
QString s = QLatin1String(JavaScriptGrammar::spell[T_SIGNAL]);
sym(1).sval = driver->intern(s.constData(), s.length());
break;
}
-case 43: {
+case 39: {
AST::UiQualifiedId *node = makeAstNode<AST::UiQualifiedId> (driver->nodePool(), sym(1).sval);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 44: {
+case 40: {
AST::UiQualifiedId *node = makeAstNode<AST::UiQualifiedId> (driver->nodePool(), sym(1).UiQualifiedId, sym(3).sval);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 45: {
+case 41: {
AST::ThisExpression *node = makeAstNode<AST::ThisExpression> (driver->nodePool());
node->thisToken = loc(1);
sym(1).Node = node;
} break;
-case 46: {
+case 42: {
AST::IdentifierExpression *node = makeAstNode<AST::IdentifierExpression> (driver->nodePool(), sym(1).sval);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 47: {
+case 43: {
AST::NullExpression *node = makeAstNode<AST::NullExpression> (driver->nodePool());
node->nullToken = loc(1);
sym(1).Node = node;
} break;
-case 48: {
+case 44: {
AST::TrueLiteral *node = makeAstNode<AST::TrueLiteral> (driver->nodePool());
node->trueToken = loc(1);
sym(1).Node = node;
} break;
-case 49: {
+case 45: {
AST::FalseLiteral *node = makeAstNode<AST::FalseLiteral> (driver->nodePool());
node->falseToken = loc(1);
sym(1).Node = node;
} break;
-case 50: {
+case 46: {
AST::NumericLiteral *node = makeAstNode<AST::NumericLiteral> (driver->nodePool(), sym(1).dval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 51: {
+case 47: {
AST::StringLiteral *node = makeAstNode<AST::StringLiteral> (driver->nodePool(), sym(1).sval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 52: {
+case 48: {
bool rx = lexer->scanRegExp(Lexer::NoPrefix);
if (!rx) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage()));
@@ -423,7 +423,7 @@ case 52: {
sym(1).Node = node;
} break;
-case 53: {
+case 49: {
bool rx = lexer->scanRegExp(Lexer::EqualPrefix);
if (!rx) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage()));
@@ -434,21 +434,21 @@ case 53: {
sym(1).Node = node;
} break;
-case 54: {
+case 50: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).Elision);
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-case 55: {
+case 51: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish ());
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-case 56: {
+case 52: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (), sym(4).Elision);
node->lbracketToken = loc(1);
node->commaToken = loc(3);
@@ -456,7 +456,7 @@ case 56: {
sym(1).Node = node;
} break;
-case 57: {
+case 53: {
AST::ObjectLiteral *node = 0;
if (sym(2).Node)
node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
@@ -468,7 +468,7 @@ case 57: {
sym(1).Node = node;
} break;
-case 58: {
+case 54: {
AST::ObjectLiteral *node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
sym(2).PropertyNameAndValueList->finish ());
node->lbraceToken = loc(1);
@@ -476,51 +476,51 @@ case 58: {
sym(1).Node = node;
} break;
-case 59: {
+case 55: {
AST::NestedExpression *node = makeAstNode<AST::NestedExpression>(driver->nodePool(), sym(2).Expression);
node->lparenToken = loc(1);
node->rparenToken = loc(3);
sym(1).Node = node;
} break;
-case 60: {
+case 56: {
sym(1).Node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).Elision, sym(2).Expression);
} break;
-case 61: {
+case 57: {
AST::ElementList *node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).ElementList, sym(3).Elision, sym(4).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 62: {
+case 58: {
AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool());
node->commaToken = loc(1);
sym(1).Node = node;
} break;
-case 63: {
+case 59: {
AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool(), sym(1).Elision);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 64: {
+case 60: {
sym(1).Node = 0;
} break;
-case 65: {
+case 61: {
sym(1).Elision = sym(1).Elision->finish ();
} break;
-case 66: {
+case 62: {
AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(),
sym(1).PropertyName, sym(3).Expression);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 67: {
+case 63: {
AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(),
sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression);
node->commaToken = loc(2);
@@ -528,36 +528,44 @@ case 67: {
sym(1).Node = node;
} break;
-case 68: {
+case 64: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 69:
-case 70: {
+case 65:
+case 66: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()));
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 71: {
+case 67: {
AST::StringLiteralPropertyName *node = makeAstNode<AST::StringLiteralPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 72: {
+case 68: {
AST::NumericLiteralPropertyName *node = makeAstNode<AST::NumericLiteralPropertyName> (driver->nodePool(), sym(1).dval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 73: {
+case 69: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
+case 70:
+
+case 71:
+
+case 72:
+
+case 73:
+
case 74:
case 75:
@@ -611,33 +619,25 @@ case 98:
case 99:
case 100:
-
-case 101:
-
-case 102:
-
-case 103:
-
-case 104:
{
sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
} break;
-case 109: {
+case 105: {
AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->lbracketToken = loc(2);
node->rbracketToken = loc(4);
sym(1).Node = node;
} break;
-case 110: {
+case 106: {
AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
node->dotToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 111: {
+case 107: {
AST::NewMemberExpression *node = makeAstNode<AST::NewMemberExpression> (driver->nodePool(), sym(2).Expression, sym(4).ArgumentList);
node->newToken = loc(1);
node->lparenToken = loc(3);
@@ -645,384 +645,384 @@ case 111: {
sym(1).Node = node;
} break;
-case 113: {
+case 109: {
AST::NewExpression *node = makeAstNode<AST::NewExpression> (driver->nodePool(), sym(2).Expression);
node->newToken = loc(1);
sym(1).Node = node;
} break;
-case 114: {
+case 110: {
AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList);
node->lparenToken = loc(2);
node->rparenToken = loc(4);
sym(1).Node = node;
} break;
-case 115: {
+case 111: {
AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList);
node->lparenToken = loc(2);
node->rparenToken = loc(4);
sym(1).Node = node;
} break;
-case 116: {
+case 112: {
AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->lbracketToken = loc(2);
node->rbracketToken = loc(4);
sym(1).Node = node;
} break;
-case 117: {
+case 113: {
AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
node->dotToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 118: {
+case 114: {
sym(1).Node = 0;
} break;
-case 119: {
+case 115: {
sym(1).Node = sym(1).ArgumentList->finish();
} break;
-case 120: {
+case 116: {
sym(1).Node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).Expression);
} break;
-case 121: {
+case 117: {
AST::ArgumentList *node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).ArgumentList, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 125: {
+case 121: {
AST::PostIncrementExpression *node = makeAstNode<AST::PostIncrementExpression> (driver->nodePool(), sym(1).Expression);
node->incrementToken = loc(2);
sym(1).Node = node;
} break;
-case 126: {
+case 122: {
AST::PostDecrementExpression *node = makeAstNode<AST::PostDecrementExpression> (driver->nodePool(), sym(1).Expression);
node->decrementToken = loc(2);
sym(1).Node = node;
} break;
-case 128: {
+case 124: {
AST::DeleteExpression *node = makeAstNode<AST::DeleteExpression> (driver->nodePool(), sym(2).Expression);
node->deleteToken = loc(1);
sym(1).Node = node;
} break;
-case 129: {
+case 125: {
AST::VoidExpression *node = makeAstNode<AST::VoidExpression> (driver->nodePool(), sym(2).Expression);
node->voidToken = loc(1);
sym(1).Node = node;
} break;
-case 130: {
+case 126: {
AST::TypeOfExpression *node = makeAstNode<AST::TypeOfExpression> (driver->nodePool(), sym(2).Expression);
node->typeofToken = loc(1);
sym(1).Node = node;
} break;
-case 131: {
+case 127: {
AST::PreIncrementExpression *node = makeAstNode<AST::PreIncrementExpression> (driver->nodePool(), sym(2).Expression);
node->incrementToken = loc(1);
sym(1).Node = node;
} break;
-case 132: {
+case 128: {
AST::PreDecrementExpression *node = makeAstNode<AST::PreDecrementExpression> (driver->nodePool(), sym(2).Expression);
node->decrementToken = loc(1);
sym(1).Node = node;
} break;
-case 133: {
+case 129: {
AST::UnaryPlusExpression *node = makeAstNode<AST::UnaryPlusExpression> (driver->nodePool(), sym(2).Expression);
node->plusToken = loc(1);
sym(1).Node = node;
} break;
-case 134: {
+case 130: {
AST::UnaryMinusExpression *node = makeAstNode<AST::UnaryMinusExpression> (driver->nodePool(), sym(2).Expression);
node->minusToken = loc(1);
sym(1).Node = node;
} break;
-case 135: {
+case 131: {
AST::TildeExpression *node = makeAstNode<AST::TildeExpression> (driver->nodePool(), sym(2).Expression);
node->tildeToken = loc(1);
sym(1).Node = node;
} break;
-case 136: {
+case 132: {
AST::NotExpression *node = makeAstNode<AST::NotExpression> (driver->nodePool(), sym(2).Expression);
node->notToken = loc(1);
sym(1).Node = node;
} break;
-case 138: {
+case 134: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Mul, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 139: {
+case 135: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Div, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 140: {
+case 136: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Mod, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 142: {
+case 138: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Add, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 143: {
+case 139: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Sub, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 145: {
+case 141: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::LShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 146: {
+case 142: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::RShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 147: {
+case 143: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::URShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 149: {
+case 145: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Lt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 150: {
+case 146: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Gt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 151: {
+case 147: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Le, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 152: {
+case 148: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Ge, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 153: {
+case 149: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::InstanceOf, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 154: {
+case 150: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::In, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 156: {
+case 152: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Lt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 157: {
+case 153: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Gt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 158: {
+case 154: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Le, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 159: {
+case 155: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Ge, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 160: {
+case 156: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::InstanceOf, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 162: {
+case 158: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Equal, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 163: {
+case 159: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::NotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 164: {
+case 160: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 165: {
+case 161: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictNotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 167: {
+case 163: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Equal, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 168: {
+case 164: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::NotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 169: {
+case 165: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 170: {
+case 166: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictNotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 172: {
+case 168: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitAnd, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 174: {
+case 170: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitAnd, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 176: {
+case 172: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitXor, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 178: {
+case 174: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitXor, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 180: {
+case 176: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitOr, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 182: {
+case 178: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitOr, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 184: {
+case 180: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::And, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 186: {
+case 182: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::And, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 188: {
+case 184: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Or, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 190: {
+case 186: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Or, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 192: {
+case 188: {
AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression,
sym(3).Expression, sym(5).Expression);
node->questionToken = loc(2);
@@ -1030,7 +1030,7 @@ case 192: {
sym(1).Node = node;
} break;
-case 194: {
+case 190: {
AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression,
sym(3).Expression, sym(5).Expression);
node->questionToken = loc(2);
@@ -1038,112 +1038,112 @@ case 194: {
sym(1).Node = node;
} break;
-case 196: {
+case 192: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
sym(2).ival, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 198: {
+case 194: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
sym(2).ival, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 199: {
+case 195: {
sym(1).ival = QSOperator::Assign;
} break;
-case 200: {
+case 196: {
sym(1).ival = QSOperator::InplaceMul;
} break;
-case 201: {
+case 197: {
sym(1).ival = QSOperator::InplaceDiv;
} break;
-case 202: {
+case 198: {
sym(1).ival = QSOperator::InplaceMod;
} break;
-case 203: {
+case 199: {
sym(1).ival = QSOperator::InplaceAdd;
} break;
-case 204: {
+case 200: {
sym(1).ival = QSOperator::InplaceSub;
} break;
-case 205: {
+case 201: {
sym(1).ival = QSOperator::InplaceLeftShift;
} break;
-case 206: {
+case 202: {
sym(1).ival = QSOperator::InplaceRightShift;
} break;
-case 207: {
+case 203: {
sym(1).ival = QSOperator::InplaceURightShift;
} break;
-case 208: {
+case 204: {
sym(1).ival = QSOperator::InplaceAnd;
} break;
-case 209: {
+case 205: {
sym(1).ival = QSOperator::InplaceXor;
} break;
-case 210: {
+case 206: {
sym(1).ival = QSOperator::InplaceOr;
} break;
-case 212: {
+case 208: {
AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 213: {
+case 209: {
sym(1).Node = 0;
} break;
-case 216: {
+case 212: {
AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 217: {
+case 213: {
sym(1).Node = 0;
} break;
-case 234: {
+case 230: {
AST::Block *node = makeAstNode<AST::Block> (driver->nodePool(), sym(2).StatementList);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 235: {
+case 231: {
sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).Statement);
} break;
-case 236: {
+case 232: {
sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).StatementList, sym(2).Statement);
} break;
-case 237: {
+case 233: {
sym(1).Node = 0;
} break;
-case 238: {
+case 234: {
sym(1).Node = sym(1).StatementList->finish ();
} break;
-case 240: {
+case 236: {
AST::VariableStatement *node = makeAstNode<AST::VariableStatement> (driver->nodePool(),
sym(2).VariableDeclarationList->finish (/*readOnly=*/sym(1).ival == T_CONST));
node->declarationKindToken = loc(1);
@@ -1151,76 +1151,76 @@ case 240: {
sym(1).Node = node;
} break;
-case 241: {
+case 237: {
sym(1).ival = T_CONST;
} break;
-case 242: {
+case 238: {
sym(1).ival = T_VAR;
} break;
-case 243: {
+case 239: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
} break;
-case 244: {
+case 240: {
AST::VariableDeclarationList *node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(),
sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 245: {
+case 241: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
} break;
-case 246: {
+case 242: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
} break;
-case 247: {
+case 243: {
AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 248: {
+case 244: {
AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 249: {
+case 245: {
// ### TODO: AST for initializer
sym(1) = sym(2);
} break;
-case 250: {
+case 246: {
sym(1).Node = 0;
} break;
-case 252: {
+case 248: {
// ### TODO: AST for initializer
sym(1) = sym(2);
} break;
-case 253: {
+case 249: {
sym(1).Node = 0;
} break;
-case 255: {
+case 251: {
AST::EmptyStatement *node = makeAstNode<AST::EmptyStatement> (driver->nodePool());
node->semicolonToken = loc(1);
sym(1).Node = node;
} break;
-case 257: {
+case 253: {
AST::ExpressionStatement *node = makeAstNode<AST::ExpressionStatement> (driver->nodePool(), sym(1).Expression);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 258: {
+case 254: {
AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement, sym(7).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -1229,7 +1229,7 @@ case 258: {
sym(1).Node = node;
} break;
-case 259: {
+case 255: {
AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -1237,7 +1237,7 @@ case 259: {
sym(1).Node = node;
} break;
-case 261: {
+case 257: {
AST::DoWhileStatement *node = makeAstNode<AST::DoWhileStatement> (driver->nodePool(), sym(2).Statement, sym(5).Expression);
node->doToken = loc(1);
node->whileToken = loc(3);
@@ -1247,7 +1247,7 @@ case 261: {
sym(1).Node = node;
} break;
-case 262: {
+case 258: {
AST::WhileStatement *node = makeAstNode<AST::WhileStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->whileToken = loc(1);
node->lparenToken = loc(2);
@@ -1255,7 +1255,7 @@ case 262: {
sym(1).Node = node;
} break;
-case 263: {
+case 259: {
AST::ForStatement *node = makeAstNode<AST::ForStatement> (driver->nodePool(), sym(3).Expression,
sym(5).Expression, sym(7).Expression, sym(9).Statement);
node->forToken = loc(1);
@@ -1266,7 +1266,7 @@ case 263: {
sym(1).Node = node;
} break;
-case 264: {
+case 260: {
AST::LocalForStatement *node = makeAstNode<AST::LocalForStatement> (driver->nodePool(),
sym(4).VariableDeclarationList->finish (/*readOnly=*/false), sym(6).Expression,
sym(8).Expression, sym(10).Statement);
@@ -1279,7 +1279,7 @@ case 264: {
sym(1).Node = node;
} break;
-case 265: {
+case 261: {
AST:: ForEachStatement *node = makeAstNode<AST::ForEachStatement> (driver->nodePool(), sym(3).Expression,
sym(5).Expression, sym(7).Statement);
node->forToken = loc(1);
@@ -1289,7 +1289,7 @@ case 265: {
sym(1).Node = node;
} break;
-case 266: {
+case 262: {
AST::LocalForEachStatement *node = makeAstNode<AST::LocalForEachStatement> (driver->nodePool(),
sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement);
node->forToken = loc(1);
@@ -1300,14 +1300,14 @@ case 266: {
sym(1).Node = node;
} break;
-case 268: {
+case 264: {
AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool());
node->continueToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 270: {
+case 266: {
AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool(), sym(2).sval);
node->continueToken = loc(1);
node->identifierToken = loc(2);
@@ -1315,14 +1315,14 @@ case 270: {
sym(1).Node = node;
} break;
-case 272: {
+case 268: {
AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool());
node->breakToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 274: {
+case 270: {
AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool(), sym(2).sval);
node->breakToken = loc(1);
node->identifierToken = loc(2);
@@ -1330,14 +1330,14 @@ case 274: {
sym(1).Node = node;
} break;
-case 276: {
+case 272: {
AST::ReturnStatement *node = makeAstNode<AST::ReturnStatement> (driver->nodePool(), sym(2).Expression);
node->returnToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-case 277: {
+case 273: {
AST::WithStatement *node = makeAstNode<AST::WithStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->withToken = loc(1);
node->lparenToken = loc(2);
@@ -1345,7 +1345,7 @@ case 277: {
sym(1).Node = node;
} break;
-case 278: {
+case 274: {
AST::SwitchStatement *node = makeAstNode<AST::SwitchStatement> (driver->nodePool(), sym(3).Expression, sym(5).CaseBlock);
node->switchToken = loc(1);
node->lparenToken = loc(2);
@@ -1353,90 +1353,90 @@ case 278: {
sym(1).Node = node;
} break;
-case 279: {
+case 275: {
AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 280: {
+case 276: {
AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(5);
sym(1).Node = node;
} break;
-case 281: {
+case 277: {
sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClause);
} break;
-case 282: {
+case 278: {
sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClauses, sym(2).CaseClause);
} break;
-case 283: {
+case 279: {
sym(1).Node = 0;
} break;
-case 284: {
+case 280: {
sym(1).Node = sym(1).CaseClauses->finish ();
} break;
-case 285: {
+case 281: {
AST::CaseClause *node = makeAstNode<AST::CaseClause> (driver->nodePool(), sym(2).Expression, sym(4).StatementList);
node->caseToken = loc(1);
node->colonToken = loc(3);
sym(1).Node = node;
} break;
-case 286: {
+case 282: {
AST::DefaultClause *node = makeAstNode<AST::DefaultClause> (driver->nodePool(), sym(3).StatementList);
node->defaultToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 287:
-case 288: {
+case 283:
+case 284: {
AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()), sym(3).Statement);
node->identifierToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 289: {
+case 285: {
AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), sym(1).sval, sym(3).Statement);
node->identifierToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 291: {
+case 287: {
AST::ThrowStatement *node = makeAstNode<AST::ThrowStatement> (driver->nodePool(), sym(2).Expression);
node->throwToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-case 292: {
+case 288: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 293: {
+case 289: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 294: {
+case 290: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch, sym(4).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 295: {
+case 291: {
AST::Catch *node = makeAstNode<AST::Catch> (driver->nodePool(), sym(3).sval, sym(5).Block);
node->catchToken = loc(1);
node->lparenToken = loc(2);
@@ -1445,20 +1445,20 @@ case 295: {
sym(1).Node = node;
} break;
-case 296: {
+case 292: {
AST::Finally *node = makeAstNode<AST::Finally> (driver->nodePool(), sym(2).Block);
node->finallyToken = loc(1);
sym(1).Node = node;
} break;
-case 298: {
+case 294: {
AST::DebuggerStatement *node = makeAstNode<AST::DebuggerStatement> (driver->nodePool());
node->debuggerToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 299: {
+case 295: {
AST::FunctionDeclaration *node = makeAstNode<AST::FunctionDeclaration> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
node->identifierToken = loc(2);
@@ -1469,7 +1469,7 @@ case 299: {
sym(1).Node = node;
} break;
-case 300: {
+case 296: {
AST::FunctionExpression *node = makeAstNode<AST::FunctionExpression> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
if (sym(2).sval)
@@ -1481,56 +1481,56 @@ case 300: {
sym(1).Node = node;
} break;
-case 301: {
+case 297: {
AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).sval);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 302: {
+case 298: {
AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).FormalParameterList, sym(3).sval);
node->commaToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 303: {
+case 299: {
sym(1).Node = 0;
} break;
-case 304: {
+case 300: {
sym(1).Node = sym(1).FormalParameterList->finish ();
} break;
-case 305: {
+case 301: {
sym(1).Node = 0;
} break;
-case 307: {
+case 303: {
sym(1).Node = makeAstNode<AST::FunctionBody> (driver->nodePool(), sym(1).SourceElements->finish ());
} break;
-case 308: {
+case 304: {
sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElement);
} break;
-case 309: {
+case 305: {
sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElements, sym(2).SourceElement);
} break;
-case 310: {
+case 306: {
sym(1).Node = makeAstNode<AST::StatementSourceElement> (driver->nodePool(), sym(1).Statement);
} break;
-case 311: {
+case 307: {
sym(1).Node = makeAstNode<AST::FunctionSourceElement> (driver->nodePool(), sym(1).FunctionDeclaration);
} break;
-case 312: {
+case 308: {
sym(1).sval = 0;
} break;
-case 314: {
+case 310: {
sym(1).Node = 0;
} break;
@@ -1580,7 +1580,6 @@ case 314: {
if (t_action(errorState, yytoken)) {
const QString msg = QString::fromUtf8("Unexpected token `%1'").arg(QLatin1String(spell[token_buffer[0].token]));
-
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg));
action = errorState;
@@ -1609,7 +1608,6 @@ case 314: {
int a = t_action(errorState, *tk);
if (a > 0 && t_action(a, yytoken)) {
const QString msg = QString::fromUtf8("Expected token `%1'").arg(QLatin1String(spell[*tk]));
-
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg));
yytoken = *tk;
diff --git a/src/declarative/qml/parser/javascriptparser_p.h b/src/declarative/qml/parser/javascriptparser_p.h
index 5e68fe7..f7b51e0 100644
--- a/src/declarative/qml/parser/javascriptparser_p.h
+++ b/src/declarative/qml/parser/javascriptparser_p.h
@@ -205,9 +205,9 @@ protected:
};
-#define J_SCRIPT_REGEXPLITERAL_RULE1 52
+#define J_SCRIPT_REGEXPLITERAL_RULE1 48
-#define J_SCRIPT_REGEXPLITERAL_RULE2 53
+#define J_SCRIPT_REGEXPLITERAL_RULE2 49
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qmlcontext.cpp b/src/declarative/qml/qmlcontext.cpp
index df5f90e..91bf1c0 100644
--- a/src/declarative/qml/qmlcontext.cpp
+++ b/src/declarative/qml/qmlcontext.cpp
@@ -44,6 +44,7 @@
#include <private/qmlengine_p.h>
#include <qmlengine.h>
#include <qscriptengine.h>
+#include <QtCore/qvarlengtharray.h>
#include <qdebug.h>
@@ -53,7 +54,8 @@
QT_BEGIN_NAMESPACE
QmlContextPrivate::QmlContextPrivate()
- : parent(0), engine(0), highPriorityCount(0), startLine(-1), endLine(-1)
+: parent(0), engine(0), notifyIndex(-1), highPriorityCount(0),
+ startLine(-1), endLine(-1)
{
}
@@ -65,21 +67,26 @@ void QmlContextPrivate::dump()
void QmlContextPrivate::dump(int depth)
{
QByteArray ba(depth * 4, ' ');
- qWarning() << ba << properties.keys();
- qWarning() << ba << variantProperties.keys();
if (parent)
parent->d_func()->dump(depth + 1);
}
void QmlContextPrivate::destroyed(QObject *obj)
{
+ Q_Q(QmlContext);
+
defaultObjects.removeAll(obj);
- for (QHash<QString, QObject *>::Iterator iter = properties.begin();
- iter != properties.end(); ) {
- if (*iter == obj)
- iter = properties.erase(iter);
- else
- ++iter;
+
+ QVariant variantObject = QVariant::fromValue(obj);
+ QVarLengthArray<int> notifies;
+ for (int ii = 0; ii < propertyValues.count(); ++ii) {
+ if (propertyValues.at(ii) == variantObject) {
+ propertyValues[ii] = QVariant();
+ notifies.append(ii);
+ }
+ }
+ for (int ii = 0; ii < notifies.count(); ++ii) {
+ QMetaObject::activate(q, notifies[ii] + notifyIndex, 0);
}
}
@@ -314,7 +321,22 @@ void QmlContext::addDefaultObject(QObject *object)
void QmlContext::setContextProperty(const QString &name, const QVariant &value)
{
Q_D(QmlContext);
- d->variantProperties.insert(name, value);
+ if (d->notifyIndex == -1)
+ d->notifyIndex = this->metaObject()->methodCount();
+
+ if (QmlMetaType::isObject(value.userType())) {
+ QObject *o = QmlMetaType::toQObject(value);
+ setContextProperty(name, o);
+ } else {
+ QHash<QString, int>::ConstIterator iter = d->propertyNames.find(name);
+ if(iter == d->propertyNames.end()) {
+ d->propertyNames.insert(name, d->propertyValues.count());
+ d->propertyValues.append(value);
+ } else {
+ d->propertyValues[*iter] = value;
+ QMetaObject::activate(this, *iter + d->notifyIndex, 0);
+ }
+ }
}
/*!
@@ -325,8 +347,26 @@ void QmlContext::setContextProperty(const QString &name, const QVariant &value)
void QmlContext::setContextProperty(const QString &name, QObject *value)
{
Q_D(QmlContext);
- d->properties.insert(name, value);
- QObject::connect(value, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(QObject*)));
+ if (d->notifyIndex == -1)
+ d->notifyIndex = this->metaObject()->methodCount();
+
+ QObject::connect(value, SIGNAL(destroyed(QObject*)),
+ this, SLOT(objectDestroyed(QObject*)));
+
+ QHash<QString, int>::ConstIterator iter = d->propertyNames.find(name);
+ if(iter == d->propertyNames.end()) {
+ d->propertyNames.insert(name, d->propertyValues.count());
+ d->propertyValues.append(QVariant::fromValue(value));
+ } else {
+ int idx = *iter;
+ if (QmlMetaType::isObject(d->propertyValues.at(idx).userType())) {
+ QObject *old = QmlMetaType::toQObject(d->propertyValues.at(idx));
+ QObject::disconnect(old, SIGNAL(destroyed(QObject*)),
+ this, SLOT(objectDestroyed(QObject*)));
+ }
+ d->propertyValues[*iter] = QVariant::fromValue(value);
+ QMetaObject::activate(this, *iter + d->notifyIndex, 0);
+ }
}
/*!
diff --git a/src/declarative/qml/qmlcontext_p.h b/src/declarative/qml/qmlcontext_p.h
index f527bb8..6f1e486 100644
--- a/src/declarative/qml/qmlcontext_p.h
+++ b/src/declarative/qml/qmlcontext_p.h
@@ -64,8 +64,10 @@ public:
QmlContext *parent;
QmlEngine *engine;
- QHash<QString, QObject *> properties;
- QHash<QString, QVariant> variantProperties;
+
+ QHash<QString, int> propertyNames;
+ QList<QVariant> propertyValues;
+ int notifyIndex;
QObjectList defaultObjects;
int highPriorityCount;
diff --git a/src/declarative/qml/qmldom.cpp b/src/declarative/qml/qmldom.cpp
index 4e754a3..ae335df 100644
--- a/src/declarative/qml/qmldom.cpp
+++ b/src/declarative/qml/qmldom.cpp
@@ -398,6 +398,30 @@ void QmlDomProperty::setValue(const QmlDomValue &value)
qWarning("QmlDomProperty::setValue(const QmlDomValue &): Not Implemented");
}
+/*!
+ Returns the position in the input data where the property ID startd, or 0 if
+ the property is invalid.
+*/
+int QmlDomProperty::position() const
+{
+ if (d && d->property) {
+ return d->property->location.range.offset;
+ } else
+ return 0;
+}
+
+/*!
+ Returns the length in the input data from where the property ID started upto
+ the end of it, or 0 if the property is invalid.
+*/
+int QmlDomProperty::length() const
+{
+ if (d && d->property)
+ return d->property->location.range.length;
+ else
+ return 0;
+}
+
QmlDomObjectPrivate::QmlDomObjectPrivate()
: object(0), isVirtualComponent(false)
{
@@ -732,6 +756,30 @@ QmlDomComponent QmlDomObject::toComponent() const
return rv;
}
+/*!
+ Returns the position in the input data where the property assignment started
+, or 0 if the property is invalid.
+*/
+int QmlDomObject::position() const
+{
+ if (d && d->object)
+ return d->object->location.range.offset;
+ else
+ return 0;
+}
+
+/*!
+ Returns the length in the input data from where the property assignment star
+ted upto the end of it, or 0 if the property is invalid.
+*/
+int QmlDomObject::length() const
+{
+ if (d && d->object)
+ return d->object->location.range.length;
+ else
+ return 0;
+}
+
QmlDomBasicValuePrivate::QmlDomBasicValuePrivate()
: value(0)
{
@@ -1254,6 +1302,30 @@ QmlDomList QmlDomValue::toList() const
}
/*!
+ Returns the position in the input data where the property value startd, or 0
+ if the value is invalid.
+*/
+int QmlDomValue::position() const
+{
+ if (type() == Invalid)
+ return 0;
+ else
+ return d->value->location.range.offset;
+}
+
+/*!
+ Returns the length in the input data from where the property value started u
+pto the end of it, or 0 if the value is invalid.
+*/
+int QmlDomValue::length() const
+{
+ if (type() == Invalid)
+ return 0;
+ else
+ return d->value->location.range.length;
+}
+
+/*!
\class QmlDomList
\internal
\brief The QmlDomList class represents a list of values assigned to a QML property.
diff --git a/src/declarative/qml/qmldom.h b/src/declarative/qml/qmldom.h
index 8b503fa..04ce8b9 100644
--- a/src/declarative/qml/qmldom.h
+++ b/src/declarative/qml/qmldom.h
@@ -99,6 +99,9 @@ public:
QmlDomValue value() const;
void setValue(const QmlDomValue &);
+ int position() const;
+ int length() const;
+
private:
friend class QmlDomObject;
QSharedDataPointer<QmlDomPropertyPrivate> d;
@@ -134,6 +137,9 @@ public:
bool isComponent() const;
QmlDomComponent toComponent() const;
+ int position() const;
+ int length() const;
+
private:
friend class QmlDomDocument;
friend class QmlDomComponent;
@@ -236,6 +242,9 @@ public:
QmlDomObject toObject() const;
QmlDomList toList() const;
+ int position() const;
+ int length() const;
+
private:
friend class QmlDomProperty;
friend class QmlDomList;
diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp
index 85578e7..227aeb0 100644
--- a/src/declarative/qml/qmlengine.cpp
+++ b/src/declarative/qml/qmlengine.cpp
@@ -211,6 +211,30 @@ QmlContext *QmlEnginePrivate::setCurrentBindContext(QmlContext *c)
return old;
}
+QmlEnginePrivate::CapturedProperty::CapturedProperty(QObject *obj, int n)
+: object(obj), notifyIndex(n)
+{
+}
+
+QmlEnginePrivate::CapturedProperty::CapturedProperty(const QmlMetaProperty &p)
+: object(p.object()), name(p.name()), notifyIndex(p.property().notifySignalIndex())
+{
+}
+
+QmlEnginePrivate::CapturedProperty::CapturedProperty(const CapturedProperty &o)
+: object(o.object), name(o.name), notifyIndex(o.notifyIndex)
+{
+}
+
+QmlEnginePrivate::CapturedProperty &
+QmlEnginePrivate::CapturedProperty::operator=(const CapturedProperty &o)
+{
+ object = o.object;
+ name = o.name;
+ notifyIndex = o.notifyIndex;
+ return *this;
+}
+
////////////////////////////////////////////////////////////////////
typedef QHash<QPair<const QMetaObject *, QString>, bool> FunctionCache;
Q_GLOBAL_STATIC(FunctionCache, functionCache);
@@ -268,7 +292,8 @@ QScriptValue QmlEnginePrivate::propertyObject(const QScriptString &propName,
return scriptEngine.newVariant(qVariantFromValue(prop));
} else {
QVariant var = prop.read();
- capturedProperties << prop;
+ if (prop.needsChangedNotifier())
+ capturedProperties << CapturedProperty(prop);
QObject *varobj = QmlMetaType::toQObject(var);
if (!varobj)
varobj = qvariant_cast<QObject *>(var);
@@ -318,7 +343,8 @@ bool QmlEnginePrivate::fetchCache(QmlBasicScriptNodeCache &cache, const QString
if (!prop.isValid())
return false;
- capturedProperties << prop;
+ if (prop.needsChangedNotifier())
+ capturedProperties << CapturedProperty(prop);
if (prop.type() & QmlMetaProperty::Attached) {
@@ -357,16 +383,15 @@ bool QmlEnginePrivate::fetchCache(QmlBasicScriptNodeCache &cache, const QString
bool QmlEnginePrivate::loadCache(QmlBasicScriptNodeCache &cache, const QString &propName, QmlContextPrivate *context)
{
while(context) {
- if (context->variantProperties.contains(propName)) {
+
+ QHash<QString, int>::ConstIterator iter =
+ context->propertyNames.find(propName);
+ if (iter != context->propertyNames.end()) {
cache.object = 0;
cache.type = QmlBasicScriptNodeCache::Variant;
cache.context = context;
- return true;
- }
-
- if (context->properties.contains(propName)) {
- cache.object = context->properties[propName];
- cache.type = QmlBasicScriptNodeCache::Explicit;
+ cache.contextIndex = *iter;
+ capturedProperties << CapturedProperty(context->q_ptr, *iter + context->notifyIndex);
return true;
}
@@ -1043,13 +1068,14 @@ QVariant QmlExpression::value()
log.setResult(rv);
for (int ii = 0; ii < ep->capturedProperties.count(); ++ii) {
- const QmlMetaProperty &prop =
+ const QmlEnginePrivate::CapturedProperty &prop =
ep->capturedProperties.at(ii);
- if (prop.hasChangedNotifier()) {
- prop.connectNotifier(d->proxy, changedIndex);
- } else if (prop.needsChangedNotifier()) {
- QString warn = QLatin1String("Expression depends on property without a NOTIFY signal: [") + QLatin1String(prop.object()->metaObject()->className()) + QLatin1String("].") + prop.name();
+ if (prop.notifyIndex != -1) {
+ QMetaObject::connect(prop.object, prop.notifyIndex,
+ d->proxy, changedIndex);
+ } else {
+ QString warn = QLatin1String("Expression depends on property without a NOTIFY signal: [") + QLatin1String(prop.object->metaObject()->className()) + QLatin1String("].") + prop.name;
log.addWarning(warn);
}
}
@@ -1057,11 +1083,12 @@ QVariant QmlExpression::value()
} else {
for (int ii = 0; ii < ep->capturedProperties.count(); ++ii) {
- const QmlMetaProperty &prop =
+ const QmlEnginePrivate::CapturedProperty &prop =
ep->capturedProperties.at(ii);
- if (prop.hasChangedNotifier())
- prop.connectNotifier(d->proxy, changedIndex);
+ if (prop.notifyIndex != -1)
+ QMetaObject::connect(prop.object, prop.notifyIndex,
+ d->proxy, changedIndex);
}
}
} else {
@@ -1252,13 +1279,10 @@ QmlContextScriptClass::queryProperty(const QScriptValue &object,
#endif
*id = InvalidId;
- if (bindContext->d_func()->variantProperties.contains(propName)) {
+ if (bindContext->d_func()->propertyNames.contains(propName)) {
rv |= HandlesReadAccess;
*id = VariantPropertyId;
- } else if (bindContext->d_func()->properties.contains(propName)) {
- rv |= HandlesReadAccess;
- *id = ObjectListPropertyId;
- }
+ }
for (int ii = 0; !rv && ii < bindContext->d_func()->defaultObjects.count(); ++ii) {
rv = engine->d_func()->queryObject(propName, id,
@@ -1293,22 +1317,19 @@ QScriptValue QmlContextScriptClass::property(const QScriptValue &object,
case VariantPropertyId:
{
QString propName = name.toString();
- QScriptValue rv = scriptEngine->newVariant(bindContext->d_func()->variantProperties[propName]);
+ int index = bindContext->d_func()->propertyNames.value(propName);
+ QVariant value = bindContext->d_func()->propertyValues.at(index);
#ifdef PROPERTY_DEBUG
qWarning() << "Context Property: Resolved property" << propName
<< "to context variant property list" << bindContext <<". Value:" << rv.toVariant();
#endif
- return rv;
- }
- case ObjectListPropertyId:
- {
- QString propName = name.toString();
- QObject *o = bindContext->d_func()->properties[propName];
- QScriptValue rv = scriptEngine->newObject(engine->d_func()->objectClass, scriptEngine->newVariant(QVariant::fromValue(o)));
-#ifdef PROPERTY_DEBUG
- qWarning() << "Context Property: Resolved property" << propName
- << "to context object property list" << bindContext <<". Value:" << rv.toVariant();
-#endif
+ QScriptValue rv;
+ if (QmlMetaType::isObject(value.userType())) {
+ rv = scriptEngine->newObject(engine->d_func()->objectClass, scriptEngine->newVariant(value));
+ } else {
+ rv = scriptEngine->newVariant(value);
+ }
+ engine->d_func()->capturedProperties << QmlEnginePrivate::CapturedProperty(bindContext, index + bindContext->d_func()->notifyIndex);
return rv;
}
default:
diff --git a/src/declarative/qml/qmlengine_p.h b/src/declarative/qml/qmlengine_p.h
index 9402fa9..7578fdf 100644
--- a/src/declarative/qml/qmlengine_p.h
+++ b/src/declarative/qml/qmlengine_p.h
@@ -89,7 +89,17 @@ public:
QScriptClass::QueryFlags queryObject(const QString &name, uint *id, QObject *);
QScriptValue propertyObject(const QScriptString &propName, QObject *, uint id = 0);
- QList<QmlMetaProperty> capturedProperties;
+ struct CapturedProperty {
+ CapturedProperty(QObject *, int);
+ CapturedProperty(const QmlMetaProperty &);
+ CapturedProperty(const CapturedProperty &);
+ CapturedProperty &operator=(const CapturedProperty &);
+
+ QObject *object;
+ QString name;
+ int notifyIndex;
+ };
+ QList<CapturedProperty> capturedProperties;
QmlContext *rootContext;
QmlContext *currentBindContext;
@@ -172,7 +182,6 @@ public:
{
InvalidId = -1,
- ObjectListPropertyId = 0xC0000000,
FunctionId = 0x80000000,
VariantPropertyId = 0x40000000,
PropertyId = 0x00000000,
diff --git a/src/declarative/qml/qmlparser_p.h b/src/declarative/qml/qmlparser_p.h
index 31f8702..f0eb864 100644
--- a/src/declarative/qml/qmlparser_p.h
+++ b/src/declarative/qml/qmlparser_p.h
@@ -74,10 +74,18 @@ namespace QmlParser
int column;
};
+ struct LocationRange
+ {
+ LocationRange() : offset(0), length(0) {}
+ quint32 offset;
+ quint32 length;
+ };
+
struct LocationSpan
{
Location start;
Location end;
+ LocationRange range;
};
class Property;
diff --git a/src/declarative/qml/qmlscriptparser.cpp b/src/declarative/qml/qmlscriptparser.cpp
index 169e2ea..36005c2 100644
--- a/src/declarative/qml/qmlscriptparser.cpp
+++ b/src/declarative/qml/qmlscriptparser.cpp
@@ -339,6 +339,8 @@ LocationSpan ProcessAST::location(AST::SourceLocation start, AST::SourceLocation
rv.start.column = start.startColumn;
rv.end.line = end.startLine;
rv.end.column = end.startColumn + end.length - 1;
+ rv.range.offset = start.offset;
+ rv.range.length = end.offset + end.length - start.offset;
return rv;
}
diff --git a/src/declarative/qml/script/qmlbasicscript.cpp b/src/declarative/qml/script/qmlbasicscript.cpp
index 129db7e..e0a668a 100644
--- a/src/declarative/qml/script/qmlbasicscript.cpp
+++ b/src/declarative/qml/script/qmlbasicscript.cpp
@@ -72,15 +72,9 @@ QDebug operator<<(QDebug lhs, const QmlBasicScriptNodeCache &rhs)
case QmlBasicScriptNodeCache::SignalProperty:
lhs << "SignalProperty" << rhs.object << rhs.core;
break;
- case QmlBasicScriptNodeCache::Explicit:
- lhs << "Explicit" << rhs.object;
- break;
case QmlBasicScriptNodeCache::Variant:
lhs << "Variant" << rhs.context;
break;
- case QmlBasicScriptNodeCache::ScriptValue:
- lhs << "ScriptValue" << rhs.context;
- break;
}
return lhs;
@@ -210,15 +204,8 @@ QVariant QmlBasicScriptNodeCache::value(const char *name) const
break;
case SignalProperty:
break;
- case Explicit:
- return qVariantFromValue(object);
- break;
case Variant:
- return toObjectOrVariant(context->variantProperties[QLatin1String(name)]);
- break;
- case ScriptValue:
- return qVariantFromValue(context->properties[QLatin1String(name)]);
- break;
+ return context->propertyValues[contextIndex];
};
return QVariant();
}
@@ -705,7 +692,7 @@ void QmlBasicScript::clearCache(void *voidCache)
reinterpret_cast<QmlBasicScriptNodeCache *>(voidCache);
for (int ii = 0; ii < d->stateSize; ++ii) {
- if (!dataCache[ii].isCore() && !dataCache[ii].isExplicit() &&
+ if (!dataCache[ii].isCore() && !dataCache[ii].isVariant() &&
dataCache[ii].object) {
QMetaObject::removeGuard(&dataCache[ii].object);
dataCache[ii].object = 0;
@@ -717,7 +704,7 @@ void QmlBasicScript::clearCache(void *voidCache)
void QmlBasicScript::guard(QmlBasicScriptNodeCache &n)
{
if (n.object) {
- if (n.isExplicit()) {
+ if (n.isVariant()) {
} else if (n.isCore()) {
n.metaObject =
n.object->metaObject();
diff --git a/src/declarative/qml/script/qmlbasicscript_p.h b/src/declarative/qml/script/qmlbasicscript_p.h
index fb9951e..3b7e966 100644
--- a/src/declarative/qml/script/qmlbasicscript_p.h
+++ b/src/declarative/qml/script/qmlbasicscript_p.h
@@ -29,19 +29,19 @@ public:
Attached,
Signal,
SignalProperty,
- Explicit,
- Variant,
- ScriptValue } type;
+ Variant
+ } type;
union {
int core;
QObject *attached;
QmlContextPrivate *context;
};
int coreType;
+ int contextIndex;
bool isValid() const { return type != Invalid; }
bool isCore() const { return type == Core; }
- bool isExplicit() const { return type == Explicit; }
+ bool isVariant() const { return type == Variant; }
void clear();
QVariant value(const char *) const;
};
diff --git a/src/declarative/util/qmlscript.cpp b/src/declarative/util/qmlscript.cpp
index 7e33502..d986b7a 100644
--- a/src/declarative/util/qmlscript.cpp
+++ b/src/declarative/util/qmlscript.cpp
@@ -152,11 +152,22 @@ void QmlScript::setSource(const QString &source)
return;
d->source = source;
d->url = qmlContext(this)->resolvedUrl(source);
- QNetworkRequest req(d->url);
- req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
- d->reply = qmlEngine(this)->networkAccessManager()->get(req);
- QObject::connect(d->reply, SIGNAL(finished()),
- this, SLOT(replyFinished()));
+
+#ifndef QT_NO_LOCALFILE_OPTIMIZED_QML
+ if (d->url.scheme() == QLatin1String("file")) {
+ QFile file(d->url.toLocalFile());
+ file.open(QIODevice::ReadOnly);
+ QByteArray ba = file.readAll();
+ d->addScriptToEngine(QString::fromUtf8(ba), d->source);
+ } else
+#endif
+ {
+ QNetworkRequest req(d->url);
+ req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
+ d->reply = qmlEngine(this)->networkAccessManager()->get(req);
+ QObject::connect(d->reply, SIGNAL(finished()),
+ this, SLOT(replyFinished()));
+ }
}
void QmlScript::replyFinished()
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 69e08d1..bc5c091 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -1329,7 +1329,9 @@ void QGraphicsScenePrivate::mousePressEventHandler(QGraphicsSceneMouseEvent *mou
// check if the item we are sending to are disabled (before we send the event)
bool disabled = !item->isEnabled();
bool isWindow = item->isWindow();
- if (mouseEvent->type() == QEvent::GraphicsSceneMouseDoubleClick && item != lastMouseGrabberItem) {
+ if (mouseEvent->type() == QEvent::GraphicsSceneMouseDoubleClick
+ && item != lastMouseGrabberItem && lastMouseGrabberItem)
+ {
// If this item is different from the item that received the last
// mouse event, and mouseEvent is a doubleclick event, then the
// event is converted to a press. Known limitation: