summaryrefslogtreecommitdiff
path: root/src/xmlpatterns/expr/qexpressionsequence.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-10-14 20:06:10 +0200
committerLiang Qi <liang.qi@theqtcompany.com>2015-10-14 20:06:10 +0200
commitd570274da3ba262d85cf9a32de34678c85c1af9e (patch)
tree8e67de1cc937e835d3507a38a415ac4aa579608b /src/xmlpatterns/expr/qexpressionsequence.cpp
parent14afeb8512bb4c4614256ebd227c06df2a1c8103 (diff)
parent688b29fc5aeab0eafbb457a0fa6953856eeac928 (diff)
downloadqtxmlpatterns-d570274da3ba262d85cf9a32de34678c85c1af9e.tar.gz
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts: tests/auto/xmlpatterns/tst_xmlpatterns.cpp Change-Id: Ib93b62f45d796dd3ed2d5d03f602699295f62705
Diffstat (limited to 'src/xmlpatterns/expr/qexpressionsequence.cpp')
-rw-r--r--src/xmlpatterns/expr/qexpressionsequence.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/xmlpatterns/expr/qexpressionsequence.cpp b/src/xmlpatterns/expr/qexpressionsequence.cpp
index 4ff8082..c71beb9 100644
--- a/src/xmlpatterns/expr/qexpressionsequence.cpp
+++ b/src/xmlpatterns/expr/qexpressionsequence.cpp
@@ -34,6 +34,8 @@
#include "qcardinalityverifier_p.h"
#include "qcommonsequencetypes_p.h"
#include "qemptysequence_p.h"
+#include "qabstractxmlforwarditerator_p.h"
+#include "qliteral_p.h"
#include "qsequencemappingiterator_p.h"
#include "qexpressionsequence_p.h"
@@ -106,6 +108,13 @@ Expression::Ptr ExpressionSequence::compress(const StaticContext::Ptr &context)
for(; seqIt != seqEnd; ++seqIt)
result.append(*seqIt);
+ } else if (Id == IDLiteralSequence) {
+ /* Rewrite "(1, (2, 3), 4)" into "(1, 2, 3, 4)" */
+ // Note: LiteralSequence does not use the dynamic context, so we pass in a nullptr.
+ Item::Iterator::Ptr seqIt = (*it)->evaluateSequence(DynamicContext::Ptr(Q_NULLPTR));
+
+ while (!seqIt->next().isNull())
+ result.append(Literal::Ptr(new Literal(seqIt->current())));
}
else
result.append(*it);