OpenCoverage

YarrPattern.cpp

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/3rdparty/masm/yarr/YarrPattern.cpp
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright (C) 2009, 2013 Apple Inc. All rights reserved.-
3 * Copyright (C) 2010 Peter Varga (pvarga@inf.u-szeged.hu), University of Szeged-
4 *-
5 * Redistribution and use in source and binary forms, with or without-
6 * modification, are permitted provided that the following conditions-
7 * are met:-
8 * 1. Redistributions of source code must retain the above copyright-
9 * notice, this list of conditions and the following disclaimer.-
10 * 2. Redistributions in binary form must reproduce the above copyright-
11 * notice, this list of conditions and the following disclaimer in the-
12 * documentation and/or other materials provided with the distribution.-
13 *-
14 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY-
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR-
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,-
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,-
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR-
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY-
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT-
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE-
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -
25 */-
26-
27#include "config.h"-
28#include "YarrPattern.h"-
29-
30#include "Yarr.h"-
31#include "YarrCanonicalizeUCS2.h"-
32#include "YarrParser.h"-
33#include <wtf/Vector.h>-
34-
35using namespace WTF;-
36-
37namespace JSC { namespace Yarr {-
38-
39#include "RegExpJitTables.h"-
40-
41class CharacterClassConstructor {-
42public:-
43 CharacterClassConstructor(bool isCaseInsensitive = false)-
44 : m_isCaseInsensitive(isCaseInsensitive)-
45 {-
46 }
executed 1149087 times by 153 tests: end of block
Executed by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1149087
47 -
48 void reset()-
49 {-
50 m_matches.clear();-
51 m_ranges.clear();-
52 m_matchesUnicode.clear();-
53 m_rangesUnicode.clear();-
54 }
executed 72 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
72
55-
56 void append(const CharacterClass* other)-
57 {-
58 for (size_t i = 0; i < other->m_matches.size(); ++i)
i < other->m_matches.size()Description
TRUEevaluated 1276 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 2656 times by 1 test
Evaluated by:
  • tst_ecmascripttests
1276-2656
59 addSorted(m_matches, other->m_matches[i]);
executed 1276 times by 1 test: addSorted(m_matches, other->m_matches[i]);
Executed by:
  • tst_ecmascripttests
1276
60 for (size_t i = 0; i < other->m_ranges.size(); ++i)
i < other->m_ranges.size()Description
TRUEevaluated 5224 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 2656 times by 1 test
Evaluated by:
  • tst_ecmascripttests
2656-5224
61 addSortedRange(m_ranges, other->m_ranges[i].begin, other->m_ranges[i].end);
executed 5224 times by 1 test: addSortedRange(m_ranges, other->m_ranges[i].begin, other->m_ranges[i].end);
Executed by:
  • tst_ecmascripttests
5224
62 for (size_t i = 0; i < other->m_matchesUnicode.size(); ++i)
i < other->m_m...Unicode.size()Description
TRUEevaluated 11330 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 2654 times by 1 test
Evaluated by:
  • tst_ecmascripttests
2654-11330
63 addSorted(m_matchesUnicode, other->m_matchesUnicode[i]);
executed 11329 times by 1 test: addSorted(m_matchesUnicode, other->m_matchesUnicode[i]);
Executed by:
  • tst_ecmascripttests
11329
64 for (size_t i = 0; i < other->m_rangesUnicode.size(); ++i)
i < other->m_r...Unicode.size()Description
TRUEevaluated 13893 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 2656 times by 1 test
Evaluated by:
  • tst_ecmascripttests
2656-13893
65 addSortedRange(m_rangesUnicode, other->m_rangesUnicode[i].begin, other->m_rangesUnicode[i].end);
executed 13895 times by 1 test: addSortedRange(m_rangesUnicode, other->m_rangesUnicode[i].begin, other->m_rangesUnicode[i].end);
Executed by:
  • tst_ecmascripttests
13895
66 }
executed 2656 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
2656
67-
68 void putChar(UChar ch)-
69 {-
70 // Handle ascii cases.-
71 if (ch <= 0x7f) {
ch <= 0x7fDescription
TRUEevaluated 3618 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
FALSEnever evaluated
0-3618
72 if (m_isCaseInsensitive && isASCIIAlpha(ch)) {
m_isCaseInsensitiveDescription
TRUEevaluated 24 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 3594 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
isASCIIAlpha(ch)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 20 times by 1 test
Evaluated by:
  • tst_ecmascripttests
4-3594
73 addSorted(m_matches, toASCIIUpper(ch));-
74 addSorted(m_matches, toASCIILower(ch));-
75 } else
executed 4 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
4
76 addSorted(m_matches, ch);
executed 3614 times by 3 tests: addSorted(m_matches, ch);
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
3614
77 return;
executed 3620 times by 3 tests: return;
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
3620
78 }-
79-
80 // Simple case, not a case-insensitive match.-
81 if (!m_isCaseInsensitive) {
!m_isCaseInsensitiveDescription
TRUEnever evaluated
FALSEnever evaluated
0
82 addSorted(m_matchesUnicode, ch);-
83 return;
never executed: return;
0
84 }-
85-
86 // Add multiple matches, if necessary.-
87 UCS2CanonicalizationRange* info = rangeInfoFor(ch);-
88 if (info->type == CanonicalizeUnique)
info->type == ...nicalizeUniqueDescription
TRUEnever evaluated
FALSEnever evaluated
0
89 addSorted(m_matchesUnicode, ch);
never executed: addSorted(m_matchesUnicode, ch);
0
90 else-
91 putUnicodeIgnoreCase(ch, info);
never executed: putUnicodeIgnoreCase(ch, info);
0
92 }-
93-
94 void putUnicodeIgnoreCase(UChar ch, UCS2CanonicalizationRange* info)-
95 {-
96 ASSERT(m_isCaseInsensitive);-
97 ASSERT(ch > 0x7f);-
98 ASSERT(ch >= info->begin && ch <= info->end);-
99 ASSERT(info->type != CanonicalizeUnique);-
100 if (info->type == CanonicalizeSet) {
info->type == CanonicalizeSetDescription
TRUEnever evaluated
FALSEnever evaluated
0
101 for (uint16_t* set = characterSetInfo[info->value]; (ch = *set); ++set)
(ch = *set)Description
TRUEnever evaluated
FALSEnever evaluated
0
102 addSorted(m_matchesUnicode, ch);
never executed: addSorted(m_matchesUnicode, ch);
0
103 } else {
never executed: end of block
0
104 addSorted(m_matchesUnicode, ch);-
105 addSorted(m_matchesUnicode, getCanonicalPair(info, ch));-
106 }
never executed: end of block
0
107 }-
108-
109 void putRange(UChar lo, UChar hi)-
110 {-
111 if (lo <= 0x7f) {
lo <= 0x7fDescription
TRUEevaluated 1354 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_ecmascripttests
4-1354
112 char asciiLo = lo;-
113 char asciiHi = std::min(hi, (UChar)0x7f);-
114 addSortedRange(m_ranges, lo, asciiHi);-
115 -
116 if (m_isCaseInsensitive) {
m_isCaseInsensitiveDescription
TRUEevaluated 32 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 1324 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
32-1324
117 if ((asciiLo <= 'Z') && (asciiHi >= 'A'))
(asciiLo <= 'Z')Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_ecmascripttests
(asciiHi >= 'A')Description
TRUEnever evaluated
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_ecmascripttests
0-24
118 addSortedRange(m_ranges, std::max(asciiLo, 'A')+('a'-'A'), std::min(asciiHi, 'Z')+('a'-'A'));
never executed: addSortedRange(m_ranges, std::max(asciiLo, 'A')+('a'-'A'), std::min(asciiHi, 'Z')+('a'-'A'));
0
119 if ((asciiLo <= 'z') && (asciiHi >= 'a'))
(asciiLo <= 'z')Description
TRUEevaluated 32 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEnever evaluated
(asciiHi >= 'a')Description
TRUEevaluated 24 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_ecmascripttests
0-32
120 addSortedRange(m_ranges, std::max(asciiLo, 'a')+('A'-'a'), std::min(asciiHi, 'z')+('A'-'a'));
executed 24 times by 1 test: addSortedRange(m_ranges, std::max(asciiLo, 'a')+('A'-'a'), std::min(asciiHi, 'z')+('A'-'a'));
Executed by:
  • tst_ecmascripttests
24
121 }
executed 32 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
32
122 }
executed 1354 times by 5 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
1354
123 if (hi <= 0x7f)
hi <= 0x7fDescription
TRUEevaluated 1356 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_ecmascripttests
4-1356
124 return;
executed 1356 times by 5 tests: return;
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
1356
125-
126 lo = std::max(lo, (UChar)0x80);-
127 addSortedRange(m_rangesUnicode, lo, hi);-
128 -
129 if (!m_isCaseInsensitive)
!m_isCaseInsensitiveDescription
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_ecmascripttests
0-4
130 return;
never executed: return;
0
131-
132 UCS2CanonicalizationRange* info = rangeInfoFor(lo);-
133 while (true) {-
134 // Handle the range [lo .. end]-
135 UChar end = std::min<UChar>(info->end, hi);-
136-
137 switch (info->type) {-
138 case CanonicalizeUnique:
executed 20 times by 1 test: case CanonicalizeUnique:
Executed by:
  • tst_ecmascripttests
20
139 // Nothing to do - no canonical equivalents.-
140 break;
executed 20 times by 1 test: break;
Executed by:
  • tst_ecmascripttests
20
141 case CanonicalizeSet: {
executed 4 times by 1 test: case CanonicalizeSet:
Executed by:
  • tst_ecmascripttests
4
142 UChar ch;-
143 for (uint16_t* set = characterSetInfo[info->value]; (ch = *set); ++set)
(ch = *set)Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_ecmascripttests
4-12
144 addSorted(m_matchesUnicode, ch);
executed 12 times by 1 test: addSorted(m_matchesUnicode, ch);
Executed by:
  • tst_ecmascripttests
12
145 break;
executed 4 times by 1 test: break;
Executed by:
  • tst_ecmascripttests
4
146 }-
147 case CanonicalizeRangeLo:
executed 12 times by 1 test: case CanonicalizeRangeLo:
Executed by:
  • tst_ecmascripttests
12
148 addSortedRange(m_rangesUnicode, lo + info->value, end + info->value);-
149 break;
executed 12 times by 1 test: break;
Executed by:
  • tst_ecmascripttests
12
150 case CanonicalizeRangeHi:
executed 8 times by 1 test: case CanonicalizeRangeHi:
Executed by:
  • tst_ecmascripttests
8
151 addSortedRange(m_rangesUnicode, lo - info->value, end - info->value);-
152 break;
executed 8 times by 1 test: break;
Executed by:
  • tst_ecmascripttests
8
153 case CanonicalizeAlternatingAligned:
never executed: case CanonicalizeAlternatingAligned:
0
154 // Use addSortedRange since there is likely an abutting range to combine with.-
155 if (lo & 1)
lo & 1Description
TRUEnever evaluated
FALSEnever evaluated
0
156 addSortedRange(m_rangesUnicode, lo - 1, lo - 1);
never executed: addSortedRange(m_rangesUnicode, lo - 1, lo - 1);
0
157 if (!(end & 1))
!(end & 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
158 addSortedRange(m_rangesUnicode, end + 1, end + 1);
never executed: addSortedRange(m_rangesUnicode, end + 1, end + 1);
0
159 break;
never executed: break;
0
160 case CanonicalizeAlternatingUnaligned:
never executed: case CanonicalizeAlternatingUnaligned:
0
161 // Use addSortedRange since there is likely an abutting range to combine with.-
162 if (!(lo & 1))
!(lo & 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
163 addSortedRange(m_rangesUnicode, lo - 1, lo - 1);
never executed: addSortedRange(m_rangesUnicode, lo - 1, lo - 1);
0
164 if (end & 1)
end & 1Description
TRUEnever evaluated
FALSEnever evaluated
0
165 addSortedRange(m_rangesUnicode, end + 1, end + 1);
never executed: addSortedRange(m_rangesUnicode, end + 1, end + 1);
0
166 break;
never executed: break;
0
167 }-
168-
169 if (hi == end)
hi == endDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 40 times by 1 test
Evaluated by:
  • tst_ecmascripttests
4-40
170 return;
executed 4 times by 1 test: return;
Executed by:
  • tst_ecmascripttests
4
171-
172 ++info;-
173 lo = info->begin;-
174 };
executed 40 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
40
175-
176 }
never executed: end of block
0
177-
178 PassOwnPtr<CharacterClass> charClass()-
179 {-
180 OwnPtr<CharacterClass> characterClass = adoptPtr(new CharacterClass);-
181-
182 characterClass->m_matches.swap(m_matches);-
183 characterClass->m_ranges.swap(m_ranges);-
184 characterClass->m_matchesUnicode.swap(m_matchesUnicode);-
185 characterClass->m_rangesUnicode.swap(m_rangesUnicode);-
186-
187 return characterClass.release();
executed 3382 times by 6 tests: return characterClass.release();
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
3382
188 }-
189-
190private:-
191 void addSorted(Vector<UChar>& matches, UChar ch)-
192 {-
193 unsigned pos = 0;-
194 ASSERT(matches.size() <= UINT_MAX);-
195 unsigned range = static_cast<unsigned>(matches.size());-
196-
197 // binary chop, find position to insert char.-
198 while (range) {
rangeDescription
TRUEevaluated 23907 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
FALSEevaluated 15994 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
15994-23907
199 unsigned index = range >> 1;-
200-
201 int val = matches[pos+index] - ch;-
202 if (!val)
!valDescription
TRUEevaluated 228 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 23679 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
228-23679
203 return;
executed 228 times by 1 test: return;
Executed by:
  • tst_ecmascripttests
228
204 else if (val > 0)
val > 0Description
TRUEevaluated 2424 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
FALSEevaluated 21254 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
2424-21254
205 range = index;
executed 2424 times by 3 tests: range = index;
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
2424
206 else {-
207 pos += (index+1);-
208 range -= (index+1);-
209 }
executed 21257 times by 3 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
21257
210 }-
211 -
212 if (pos == matches.size())
pos == matches.size()Description
TRUEevaluated 14383 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
FALSEevaluated 1608 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
1608-14383
213 matches.append(ch);
executed 14382 times by 3 tests: matches.append(ch);
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
14382
214 else-
215 matches.insert(pos, ch);
executed 1608 times by 3 tests: matches.insert(pos, ch);
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
1608
216 }-
217-
218 void addSortedRange(Vector<CharacterRange>& ranges, UChar lo, UChar hi)-
219 {-
220 ASSERT(ranges.size() <= UINT_MAX);-
221 unsigned end = static_cast<unsigned>(ranges.size());-
222 -
223 // Simple linear scan - I doubt there are that many ranges anyway...-
224 // feel free to fix this with something faster (eg binary chop).-
225 for (unsigned i = 0; i < end; ++i) {
i < endDescription
TRUEevaluated 59762 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
FALSEevaluated 11592 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
11592-59762
226 // does the new range fall before the current position in the array-
227 if (hi < ranges[i].begin) {
hi < ranges[i].beginDescription
TRUEevaluated 6397 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 53380 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
6397-53380
228 // optional optimization: concatenate appending ranges? - may not be worthwhile.-
229 if (hi == (ranges[i].begin - 1)) {
hi == (ranges[i].begin - 1)Description
TRUEevaluated 2495 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 3907 times by 1 test
Evaluated by:
  • tst_ecmascripttests
2495-3907
230 ranges[i].begin = lo;-
231 return;
executed 2495 times by 1 test: return;
Executed by:
  • tst_ecmascripttests
2495
232 }-
233 ranges.insert(i, CharacterRange(lo, hi));-
234 return;
executed 3907 times by 1 test: return;
Executed by:
  • tst_ecmascripttests
3907
235 }-
236 // Okay, since we didn't hit the last case, the end of the new range is definitely at or after the beginning-
237 // If the new range start at or before the end of the last range, then the overlap (if it starts one after the-
238 // end of the last range they concatenate, which is just as good.-
239 if (lo <= (ranges[i].end + 1)) {
lo <= (ranges[i].end + 1)Description
TRUEevaluated 2516 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlecmascript
  • tst_qquicktextinput
FALSEevaluated 50880 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsvalue
2516-50880
240 // found an intersect! we'll replace this entry in the array.-
241 ranges[i].begin = std::min(ranges[i].begin, lo);-
242 ranges[i].end = std::max(ranges[i].end, hi);-
243-
244 // now check if the new range can subsume any subsequent ranges.-
245 unsigned next = i+1;-
246 // each iteration of the loop we will either remove something from the list, or break the loop.-
247 while (next < ranges.size()) {
next < ranges.size()Description
TRUEnever evaluated
FALSEevaluated 2516 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlecmascript
  • tst_qquicktextinput
0-2516
248 if (ranges[next].begin <= (ranges[i].end + 1)) {
ranges[next].b...es[i].end + 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
249 // the next entry now overlaps / concatenates this one.-
250 ranges[i].end = std::max(ranges[i].end, ranges[next].end);-
251 ranges.remove(next);-
252 } else
never executed: end of block
0
253 break;
never executed: break;
0
254 }-
255 -
256 return;
executed 2516 times by 3 tests: return;
Executed by:
  • tst_ecmascripttests
  • tst_qqmlecmascript
  • tst_qquicktextinput
2516
257 }-
258 }
executed 50878 times by 3 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsvalue
50878
259-
260 // CharacterRange comes after all existing ranges.-
261 ranges.append(CharacterRange(lo, hi));-
262 }
executed 11606 times by 5 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
11606
263-
264 bool m_isCaseInsensitive;-
265-
266 Vector<UChar> m_matches;-
267 Vector<CharacterRange> m_ranges;-
268 Vector<UChar> m_matchesUnicode;-
269 Vector<CharacterRange> m_rangesUnicode;-
270};-
271-
272class YarrPatternConstructor {-
273public:-
274 YarrPatternConstructor(YarrPattern& pattern)-
275 : m_pattern(pattern)-
276 , m_characterClassConstructor(pattern.m_ignoreCase)-
277 , m_invertParentheticalAssertion(false)-
278 {-
279 OwnPtr<PatternDisjunction> body = adoptPtr(new PatternDisjunction);-
280 m_pattern.m_body = body.get();-
281 m_alternative = body->addNewAlternative();-
282 m_pattern.m_disjunctions.append(body.release());-
283 }
executed 1149602 times by 153 tests: end of block
Executed by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1149602
284-
285 ~YarrPatternConstructor()-
286 {-
287 }-
288-
289 void reset()-
290 {-
291 m_pattern.reset();-
292 m_characterClassConstructor.reset();-
293-
294 OwnPtr<PatternDisjunction> body = adoptPtr(new PatternDisjunction);-
295 m_pattern.m_body = body.get();-
296 m_alternative = body->addNewAlternative();-
297 m_pattern.m_disjunctions.append(body.release());-
298 }
executed 72 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
72
299 -
300 void assertionBOL()-
301 {-
302 if (!m_alternative->m_terms.size() & !m_invertParentheticalAssertion) {
!m_alternative...ticalAssertionDescription
TRUEevaluated 148 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
FALSEevaluated 32 times by 1 test
Evaluated by:
  • tst_ecmascripttests
32-148
303 m_alternative->m_startsWithBOL = true;-
304 m_alternative->m_containsBOL = true;-
305 m_pattern.m_containsBOL = true;-
306 }
executed 148 times by 5 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
148
307 m_alternative->m_terms.append(PatternTerm::BOL());-
308 }
executed 181 times by 5 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
181
309 void assertionEOL()-
310 {-
311 m_alternative->m_terms.append(PatternTerm::EOL());-
312 }
executed 178 times by 5 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
178
313 void assertionWordBoundary(bool invert)-
314 {-
315 m_alternative->m_terms.append(PatternTerm::WordBoundary(invert));-
316 }
executed 1136 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
1136
317-
318 void atomPatternCharacter(UChar ch)-
319 {-
320 // We handle case-insensitive checking of unicode characters which do have both-
321 // cases by handling them as if they were defined using a CharacterClass.-
322 if (!m_pattern.m_ignoreCase || isASCII(ch)) {
!m_pattern.m_ignoreCaseDescription
TRUEevaluated 2368942 times by 6 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qquicklistview
  • tst_qquicktextinput
FALSEevaluated 417 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qjsvalue
isASCII(ch)Description
TRUEevaluated 418 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qjsvalue
FALSEnever evaluated
0-2368942
323 m_alternative->m_terms.append(PatternTerm(ch));-
324 return;
executed 2369244 times by 6 tests: return;
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qquicklistview
  • tst_qquicktextinput
2369244
325 }-
326-
327 UCS2CanonicalizationRange* info = rangeInfoFor(ch);-
328 if (info->type == CanonicalizeUnique) {
info->type == ...nicalizeUniqueDescription
TRUEnever evaluated
FALSEnever evaluated
0
329 m_alternative->m_terms.append(PatternTerm(ch));-
330 return;
never executed: return;
0
331 }-
332-
333 m_characterClassConstructor.putUnicodeIgnoreCase(ch, info);-
334 OwnPtr<CharacterClass> newCharacterClass = m_characterClassConstructor.charClass();-
335 m_alternative->m_terms.append(PatternTerm(newCharacterClass.get(), false));-
336 m_pattern.m_userCharacterClasses.append(newCharacterClass.release());-
337 }
never executed: end of block
0
338-
339 void atomBuiltInCharacterClass(BuiltInCharacterClassID classID, bool invert)-
340 {-
341 switch (classID) {-
342 case DigitClassID:
executed 289 times by 3 tests: case DigitClassID:
Executed by:
  • tst_ecmascripttests
  • tst_qquicktextinput
  • tst_qquickworkerscript
289
343 m_alternative->m_terms.append(PatternTerm(m_pattern.digitsCharacterClass(), invert));-
344 break;
executed 289 times by 3 tests: break;
Executed by:
  • tst_ecmascripttests
  • tst_qquicktextinput
  • tst_qquickworkerscript
289
345 case SpaceClassID:
executed 170 times by 3 tests: case SpaceClassID:
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qqmlxmlhttprequest
170
346 m_alternative->m_terms.append(PatternTerm(m_pattern.spacesCharacterClass(), invert));-
347 break;
executed 170 times by 3 tests: break;
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qqmlxmlhttprequest
170
348 case WordClassID:
executed 124 times by 1 test: case WordClassID:
Executed by:
  • tst_ecmascripttests
124
349 m_alternative->m_terms.append(PatternTerm(m_pattern.wordcharCharacterClass(), invert));-
350 break;
executed 124 times by 1 test: break;
Executed by:
  • tst_ecmascripttests
124
351 case NewlineClassID:
executed 626 times by 3 tests: case NewlineClassID:
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicklistview
626
352 m_alternative->m_terms.append(PatternTerm(m_pattern.newlineCharacterClass(), invert));-
353 break;
executed 626 times by 3 tests: break;
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicklistview
626
354 }-
355 }
executed 1209 times by 6 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
1209
356-
357 void atomCharacterClassBegin(bool invert = false)-
358 {-
359 m_invertCharacterClass = invert;-
360 }
executed 3557 times by 6 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
3557
361-
362 void atomCharacterClassAtom(UChar ch)-
363 {-
364 m_characterClassConstructor.putChar(ch);-
365 }
executed 3618 times by 3 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
3618
366-
367 void atomCharacterClassRange(UChar begin, UChar end)-
368 {-
369 m_characterClassConstructor.putRange(begin, end);-
370 }
executed 1359 times by 5 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
1359
371-
372 void atomCharacterClassBuiltIn(BuiltInCharacterClassID classID, bool invert)-
373 {-
374 ASSERT(classID != NewlineClassID);-
375-
376 switch (classID) {-
377 case DigitClassID:
executed 116 times by 1 test: case DigitClassID:
Executed by:
  • tst_ecmascripttests
116
378 m_characterClassConstructor.append(invert ? m_pattern.nondigitsCharacterClass() : m_pattern.digitsCharacterClass());-
379 break;
executed 116 times by 1 test: break;
Executed by:
  • tst_ecmascripttests
116
380 -
381 case SpaceClassID:
executed 2523 times by 1 test: case SpaceClassID:
Executed by:
  • tst_ecmascripttests
2523
382 m_characterClassConstructor.append(invert ? m_pattern.nonspacesCharacterClass() : m_pattern.spacesCharacterClass());-
383 break;
executed 2524 times by 1 test: break;
Executed by:
  • tst_ecmascripttests
2524
384 -
385 case WordClassID:
executed 16 times by 1 test: case WordClassID:
Executed by:
  • tst_ecmascripttests
16
386 m_characterClassConstructor.append(invert ? m_pattern.nonwordcharCharacterClass() : m_pattern.wordcharCharacterClass());-
387 break;
executed 16 times by 1 test: break;
Executed by:
  • tst_ecmascripttests
16
388 -
389 default:
never executed: default:
0
390 RELEASE_ASSERT_NOT_REACHED();-
391 }
never executed: end of block
0
392 }-
393-
394 void atomCharacterClassEnd()-
395 {-
396 OwnPtr<CharacterClass> newCharacterClass = m_characterClassConstructor.charClass();-
397 m_alternative->m_terms.append(PatternTerm(newCharacterClass.get(), m_invertCharacterClass));-
398 m_pattern.m_userCharacterClasses.append(newCharacterClass.release());-
399 }
executed 3384 times by 6 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qquicktextinput
3384
400-
401 void atomParenthesesSubpatternBegin(bool capture = true)-
402 {-
403 unsigned subpatternId = m_pattern.m_numSubpatterns + 1;-
404 if (capture)
captureDescription
TRUEevaluated 2548 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
FALSEevaluated 951 times by 1 test
Evaluated by:
  • tst_ecmascripttests
951-2548
405 m_pattern.m_numSubpatterns++;
executed 2548 times by 3 tests: m_pattern.m_numSubpatterns++;
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
2548
406-
407 OwnPtr<PatternDisjunction> parenthesesDisjunction = adoptPtr(new PatternDisjunction(m_alternative));-
408 m_alternative->m_terms.append(PatternTerm(PatternTerm::TypeParenthesesSubpattern, subpatternId, parenthesesDisjunction.get(), capture, false));-
409 m_alternative = parenthesesDisjunction->addNewAlternative();-
410 m_pattern.m_disjunctions.append(parenthesesDisjunction.release());-
411 }
executed 3501 times by 3 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
3501
412-
413 void atomParentheticalAssertionBegin(bool invert = false)-
414 {-
415 OwnPtr<PatternDisjunction> parenthesesDisjunction = adoptPtr(new PatternDisjunction(m_alternative));-
416 m_alternative->m_terms.append(PatternTerm(PatternTerm::TypeParentheticalAssertion, m_pattern.m_numSubpatterns + 1, parenthesesDisjunction.get(), false, invert));-
417 m_alternative = parenthesesDisjunction->addNewAlternative();-
418 m_invertParentheticalAssertion = invert;-
419 m_pattern.m_disjunctions.append(parenthesesDisjunction.release());-
420 }
executed 76 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
76
421-
422 void atomParenthesesEnd()-
423 {-
424 ASSERT(m_alternative->m_parent);-
425 ASSERT(m_alternative->m_parent->m_parent);-
426-
427 PatternDisjunction* parenthesesDisjunction = m_alternative->m_parent;-
428 m_alternative = m_alternative->m_parent->m_parent;-
429-
430 PatternTerm& lastTerm = m_alternative->lastTerm();-
431-
432 ASSERT(parenthesesDisjunction->m_alternatives.size() <= UINT_MAX);-
433 unsigned numParenAlternatives = static_cast<unsigned>(parenthesesDisjunction->m_alternatives.size());-
434 unsigned numBOLAnchoredAlts = 0;-
435-
436 for (unsigned i = 0; i < numParenAlternatives; i++) {
i < numParenAlternativesDescription
TRUEevaluated 4509 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
FALSEevaluated 3576 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
3576-4509
437 // Bubble up BOL flags-
438 if (parenthesesDisjunction->m_alternatives[i]->m_startsWithBOL)
parenthesesDis..._startsWithBOLDescription
TRUEnever evaluated
FALSEevaluated 4508 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
0-4508
439 numBOLAnchoredAlts++;
never executed: numBOLAnchoredAlts++;
0
440 }
executed 4508 times by 3 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
4508
441-
442 if (numBOLAnchoredAlts) {
numBOLAnchoredAltsDescription
TRUEnever evaluated
FALSEevaluated 3575 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
0-3575
443 m_alternative->m_containsBOL = true;-
444 // If all the alternatives in parens start with BOL, then so does this one-
445 if (numBOLAnchoredAlts == numParenAlternatives)
numBOLAnchored...enAlternativesDescription
TRUEnever evaluated
FALSEnever evaluated
0
446 m_alternative->m_startsWithBOL = true;
never executed: m_alternative->m_startsWithBOL = true;
0
447 }
never executed: end of block
0
448-
449 lastTerm.parentheses.lastSubpatternId = m_pattern.m_numSubpatterns;-
450 m_invertParentheticalAssertion = false;-
451 }
executed 3574 times by 3 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
3574
452-
453 void atomBackReference(unsigned subpatternId)-
454 {-
455 ASSERT(subpatternId);-
456 m_pattern.m_containsBackreferences = true;-
457 m_pattern.m_maxBackReference = std::max(m_pattern.m_maxBackReference, subpatternId);-
458-
459 if (subpatternId > m_pattern.m_numSubpatterns) {
subpatternId >...numSubpatternsDescription
TRUEevaluated 80 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 180 times by 1 test
Evaluated by:
  • tst_ecmascripttests
80-180
460 m_alternative->m_terms.append(PatternTerm::ForwardReference());-
461 return;
executed 80 times by 1 test: return;
Executed by:
  • tst_ecmascripttests
80
462 }-
463-
464 PatternAlternative* currentAlternative = m_alternative;-
465 ASSERT(currentAlternative);-
466-
467 // Note to self: if we waited until the AST was baked, we could also remove forwards refs -
468 while ((currentAlternative = currentAlternative->m_parent->m_parent)) {
(currentAltern...ent->m_parent)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 180 times by 1 test
Evaluated by:
  • tst_ecmascripttests
4-180
469 PatternTerm& term = currentAlternative->lastTerm();-
470 ASSERT((term.type == PatternTerm::TypeParenthesesSubpattern) || (term.type == PatternTerm::TypeParentheticalAssertion));-
471-
472 if ((term.type == PatternTerm::TypeParenthesesSubpattern) && term.capture() && (subpatternId == term.parentheses.subpatternId)) {
(term.type == ...sesSubpattern)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_ecmascripttests
term.capture()Description
TRUEnever evaluated
FALSEnever evaluated
(subpatternId ....subpatternId)Description
TRUEnever evaluated
FALSEnever evaluated
0-4
473 m_alternative->m_terms.append(PatternTerm::ForwardReference());-
474 return;
never executed: return;
0
475 }-
476 }
executed 4 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
4
477-
478 m_alternative->m_terms.append(PatternTerm(subpatternId));-
479 }
executed 180 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
180
480-
481 // deep copy the argument disjunction. If filterStartsWithBOL is true, -
482 // skip alternatives with m_startsWithBOL set true.-
483 PatternDisjunction* copyDisjunction(PatternDisjunction* disjunction, bool filterStartsWithBOL = false)-
484 {-
485 OwnPtr<PatternDisjunction> newDisjunction;-
486 for (unsigned alt = 0; alt < disjunction->m_alternatives.size(); ++alt) {
alt < disjunct...natives.size()Description
TRUEevaluated 183 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
FALSEevaluated 162 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
162-183
487 PatternAlternative* alternative = disjunction->m_alternatives[alt].get();-
488 if (!filterStartsWithBOL || !alternative->m_startsWithBOL) {
!filterStartsWithBOLDescription
TRUEevaluated 52 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 131 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
!alternative->m_startsWithBOLDescription
TRUEevaluated 6 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
FALSEevaluated 126 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
6-131
489 if (!newDisjunction) {
!newDisjunctionDescription
TRUEevaluated 45 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
FALSEevaluated 12 times by 1 test
Evaluated by:
  • tst_ecmascripttests
12-45
490 newDisjunction = adoptPtr(new PatternDisjunction());-
491 newDisjunction->m_parent = disjunction->m_parent;-
492 }
executed 46 times by 2 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
46
493 PatternAlternative* newAlternative = newDisjunction->addNewAlternative();-
494 newAlternative->m_terms.reserveInitialCapacity(alternative->m_terms.size());-
495 for (unsigned i = 0; i < alternative->m_terms.size(); ++i)
i < alternativ...m_terms.size()Description
TRUEevaluated 124 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
FALSEevaluated 58 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
58-124
496 newAlternative->m_terms.append(copyTerm(alternative->m_terms[i], filterStartsWithBOL));
executed 124 times by 2 tests: newAlternative->m_terms.append(copyTerm(alternative->m_terms[i], filterStartsWithBOL));
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
124
497 }
executed 58 times by 2 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
58
498 }
executed 184 times by 5 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
184
499 -
500 if (!newDisjunction)
!newDisjunctionDescription
TRUEevaluated 115 times by 4 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
FALSEevaluated 46 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
46-115
501 return 0;
executed 115 times by 4 tests: return 0;
Executed by:
  • tst_ecmascripttests
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
115
502-
503 PatternDisjunction* copiedDisjunction = newDisjunction.get();-
504 m_pattern.m_disjunctions.append(newDisjunction.release());-
505 return copiedDisjunction;
executed 46 times by 2 tests: return copiedDisjunction;
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
46
506 }-
507 -
508 PatternTerm copyTerm(PatternTerm& term, bool filterStartsWithBOL = false)-
509 {-
510 if ((term.type != PatternTerm::TypeParenthesesSubpattern) && (term.type != PatternTerm::TypeParentheticalAssertion))
(term.type != ...sesSubpattern)Description
TRUEevaluated 1149 times by 6 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlxmlhttprequest
  • tst_qquicktextinput
FALSEevaluated 39 times by 1 test
Evaluated by:
  • tst_ecmascripttests
(term.type != ...icalAssertion)Description
TRUEevaluated 1151 times by 6 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlxmlhttprequest
  • tst_qquicktextinput
FALSEnever evaluated
0-1151
511 return PatternTerm(term);
executed 1152 times by 6 tests: return PatternTerm(term);
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlxmlhttprequest
  • tst_qquicktextinput
1152
512 -
513 PatternTerm termCopy = term;-
514 termCopy.parentheses.disjunction = copyDisjunction(termCopy.parentheses.disjunction, filterStartsWithBOL);-
515 return termCopy;
executed 39 times by 1 test: return termCopy;
Executed by:
  • tst_ecmascripttests
39
516 }-
517 -
518 void quantifyAtom(unsigned min, unsigned max, bool greedy)-
519 {-
520 ASSERT(min <= max);-
521 ASSERT(m_alternative->m_terms.size());-
522-
523 if (!max) {
!maxDescription
TRUEnever evaluated
FALSEevaluated 4142 times by 8 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
0-4142
524 m_alternative->removeLastTerm();-
525 return;
never executed: return;
0
526 }-
527-
528 PatternTerm& term = m_alternative->lastTerm();-
529 ASSERT(term.type > PatternTerm::TypeAssertionWordBoundary);-
530 ASSERT((term.quantityCount == 1) && (term.quantityType == QuantifierFixedCount));-
531-
532 if (term.type == PatternTerm::TypeParentheticalAssertion) {
term.type == P...ticalAssertionDescription
TRUEnever evaluated
FALSEevaluated 4139 times by 8 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
0-4139
533 // If an assertion is quantified with a minimum count of zero, it can simply be removed.-
534 // This arises from the RepeatMatcher behaviour in the spec. Matching an assertion never-
535 // results in any input being consumed, however the continuation passed to the assertion-
536 // (called in steps, 8c and 9 of the RepeatMatcher definition, ES5.1 15.10.2.5) will-
537 // reject all zero length matches (see step 2.1). A match from the continuation of the-
538 // expression will still be accepted regardless (via steps 8a and 11) - the upshot of all-
539 // this is that matches from the assertion are not required, and won't be accepted anyway,-
540 // so no need to ever run it.-
541 if (!min)
!minDescription
TRUEnever evaluated
FALSEnever evaluated
0
542 m_alternative->removeLastTerm();
never executed: m_alternative->removeLastTerm();
0
543 // We never need to run an assertion more than once. Subsequent interations will be run-
544 // with the same start index (since assertions are non-capturing) and the same captures-
545 // (per step 4 of RepeatMatcher in ES5.1 15.10.2.5), and as such will always produce the-
546 // same result and captures. If the first match succeeds then the subsequent (min - 1)-
547 // matches will too. Any additional optional matches will fail (on the same basis as the-
548 // minimum zero quantified assertions, above), but this will still result in a match.-
549 return;
never executed: return;
0
550 }-
551-
552 if (min == 0)
min == 0Description
TRUEevaluated 2788 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
FALSEevaluated 1356 times by 6 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlxmlhttprequest
  • tst_qquicktextinput
1356-2788
553 term.quantify(max, greedy ? QuantifierGreedy : QuantifierNonGreedy);
executed 2788 times by 5 tests: term.quantify(max, greedy ? QuantifierGreedy : QuantifierNonGreedy);
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
2788
554 else if (min == max)
min == maxDescription
TRUEevaluated 288 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 1064 times by 6 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlxmlhttprequest
  • tst_qquicktextinput
288-1064
555 term.quantify(min, QuantifierFixedCount);
executed 288 times by 1 test: term.quantify(min, QuantifierFixedCount);
Executed by:
  • tst_ecmascripttests
288
556 else {-
557 term.quantify(min, QuantifierFixedCount);-
558 m_alternative->m_terms.append(copyTerm(term));-
559 // NOTE: this term is interesting from an analysis perspective, in that it can be ignored.....-
560 m_alternative->lastTerm().quantify((max == quantifyInfinite) ? max : max - min, greedy ? QuantifierGreedy : QuantifierNonGreedy);-
561 if (m_alternative->lastTerm().type == PatternTerm::TypeParenthesesSubpattern)
m_alternative-...esesSubpatternDescription
TRUEevaluated 28 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 1041 times by 6 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlxmlhttprequest
  • tst_qquicktextinput
28-1041
562 m_alternative->lastTerm().parentheses.isCopy = true;
executed 28 times by 1 test: m_alternative->lastTerm().parentheses.isCopy = true;
Executed by:
  • tst_ecmascripttests
28
563 }
executed 1068 times by 6 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlxmlhttprequest
  • tst_qquicktextinput
1068
564 }-
565-
566 void disjunction()-
567 {-
568 m_alternative = m_alternative->m_parent->addNewAlternative();-
569 }
executed 1164 times by 4 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qqmlxmlhttprequest
  • tst_qquicktextinput
1164
570-
571 unsigned setupAlternativeOffsets(PatternAlternative* alternative, unsigned currentCallFrameSize, unsigned initialInputPosition)-
572 {-
573 alternative->m_hasFixedSize = true;-
574 Checked<unsigned> currentInputPosition = initialInputPosition;-
575-
576 for (unsigned i = 0; i < alternative->m_terms.size(); ++i) {
i < alternativ...m_terms.size()Description
TRUEevaluated 2380650 times by 9 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
FALSEevaluated 1155336 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1155336-2380650
577 PatternTerm& term = alternative->m_terms[i];-
578-
579 switch (term.type) {-
580 case PatternTerm::TypeAssertionBOL:
executed 178 times by 5 tests: case PatternTerm::TypeAssertionBOL:
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
178
581 case PatternTerm::TypeAssertionEOL:
executed 180 times by 5 tests: case PatternTerm::TypeAssertionEOL:
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
180
582 case PatternTerm::TypeAssertionWordBoundary:
executed 1136 times by 1 test: case PatternTerm::TypeAssertionWordBoundary:
Executed by:
  • tst_ecmascripttests
1136
583 term.inputPosition = currentInputPosition.unsafeGet();-
584 break;
executed 1494 times by 5 tests: break;
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
1494
585-
586 case PatternTerm::TypeBackReference:
executed 192 times by 1 test: case PatternTerm::TypeBackReference:
Executed by:
  • tst_ecmascripttests
192
587 term.inputPosition = currentInputPosition.unsafeGet();-
588 term.frameLocation = currentCallFrameSize;-
589 currentCallFrameSize += YarrStackSpaceForBackTrackInfoBackReference;-
590 alternative->m_hasFixedSize = false;-
591 break;
executed 192 times by 1 test: break;
Executed by:
  • tst_ecmascripttests
192
592-
593 case PatternTerm::TypeForwardReference:
executed 8 times by 1 test: case PatternTerm::TypeForwardReference:
Executed by:
  • tst_ecmascripttests
8
594 break;
executed 8 times by 1 test: break;
Executed by:
  • tst_ecmascripttests
8
595-
596 case PatternTerm::TypePatternCharacter:
executed 2370024 times by 6 tests: case PatternTerm::TypePatternCharacter:
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qquicklistview
  • tst_qquicktextinput
2370024
597 term.inputPosition = currentInputPosition.unsafeGet();-
598 if (term.quantityType != QuantifierFixedCount) {
term.quantityT...fierFixedCountDescription
TRUEevaluated 472 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
FALSEevaluated 2368880 times by 6 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qquicklistview
  • tst_qquicktextinput
472-2368880
599 term.frameLocation = currentCallFrameSize;-
600 currentCallFrameSize += YarrStackSpaceForBackTrackInfoPatternCharacter;-
601 alternative->m_hasFixedSize = false;-
602 } else
executed 472 times by 2 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
472
603 currentInputPosition += term.quantityCount;
executed 2368661 times by 6 tests: currentInputPosition += term.quantityCount;
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qquicklistview
  • tst_qquicktextinput
2368661
604 break;
executed 2369300 times by 6 tests: break;
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qquicklistview
  • tst_qquicktextinput
2369300
605-
606 case PatternTerm::TypeCharacterClass:
executed 5373 times by 9 tests: case PatternTerm::TypeCharacterClass:
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
5373
607 term.inputPosition = currentInputPosition.unsafeGet();-
608 if (term.quantityType != QuantifierFixedCount) {
term.quantityT...fierFixedCountDescription
TRUEevaluated 2566 times by 8 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
FALSEevaluated 2808 times by 8 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qqmlxmlhttprequest
  • tst_qquicktextinput
  • tst_qquickworkerscript
2566-2808
609 term.frameLocation = currentCallFrameSize;-
610 currentCallFrameSize += YarrStackSpaceForBackTrackInfoCharacterClass;-
611 alternative->m_hasFixedSize = false;-
612 } else
executed 2566 times by 8 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
2566
613 currentInputPosition += term.quantityCount;
executed 2809 times by 8 tests: currentInputPosition += term.quantityCount;
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qqmlxmlhttprequest
  • tst_qquicktextinput
  • tst_qquickworkerscript
2809
614 break;
executed 5368 times by 9 tests: break;
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
5368
615-
616 case PatternTerm::TypeParenthesesSubpattern:
executed 3541 times by 3 tests: case PatternTerm::TypeParenthesesSubpattern:
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
3541
617 // Note: for fixed once parentheses we will ensure at least the minimum is available; others are on their own.-
618 term.frameLocation = currentCallFrameSize;-
619 if (term.quantityCount == 1 && !term.parentheses.isCopy) {
term.quantityCount == 1Description
TRUEevaluated 3117 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
FALSEevaluated 424 times by 1 test
Evaluated by:
  • tst_ecmascripttests
!term.parentheses.isCopyDescription
TRUEevaluated 3118 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
FALSEnever evaluated
0-3118
620 if (term.quantityType != QuantifierFixedCount)
term.quantityT...fierFixedCountDescription
TRUEevaluated 338 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qquicktextinput
FALSEevaluated 2778 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
338-2778
621 currentCallFrameSize += YarrStackSpaceForBackTrackInfoParenthesesOnce;
executed 338 times by 2 tests: currentCallFrameSize += 1;
Executed by:
  • tst_ecmascripttests
  • tst_qquicktextinput
338
622 currentCallFrameSize = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize, currentInputPosition.unsafeGet());-
623 // If quantity is fixed, then pre-check its minimum size.-
624 if (term.quantityType == QuantifierFixedCount)
term.quantityT...fierFixedCountDescription
TRUEevaluated 2778 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
FALSEevaluated 338 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qquicktextinput
338-2778
625 currentInputPosition += term.parentheses.disjunction->m_minimumSize;
executed 2778 times by 3 tests: currentInputPosition += term.parentheses.disjunction->m_minimumSize;
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
2778
626 term.inputPosition = currentInputPosition.unsafeGet();-
627 } else if (term.parentheses.isTerminal) {
executed 3118 times by 3 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
term.parentheses.isTerminalDescription
TRUEevaluated 11 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 412 times by 1 test
Evaluated by:
  • tst_ecmascripttests
11-3118
628 currentCallFrameSize += YarrStackSpaceForBackTrackInfoParenthesesTerminal;-
629 currentCallFrameSize = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize, currentInputPosition.unsafeGet());-
630 term.inputPosition = currentInputPosition.unsafeGet();-
631 } else {
executed 12 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
12
632 term.inputPosition = currentInputPosition.unsafeGet();-
633 setupDisjunctionOffsets(term.parentheses.disjunction, 0, currentInputPosition.unsafeGet());-
634 currentCallFrameSize += YarrStackSpaceForBackTrackInfoParentheses;-
635 }
executed 412 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
412
636 // Fixed count of 1 could be accepted, if they have a fixed size *AND* if all alternatives are of the same length.-
637 alternative->m_hasFixedSize = false;-
638 break;
executed 3540 times by 3 tests: break;
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
3540
639-
640 case PatternTerm::TypeParentheticalAssertion:
executed 76 times by 1 test: case PatternTerm::TypeParentheticalAssertion:
Executed by:
  • tst_ecmascripttests
76
641 term.inputPosition = currentInputPosition.unsafeGet();-
642 term.frameLocation = currentCallFrameSize;-
643 currentCallFrameSize = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize + YarrStackSpaceForBackTrackInfoParentheticalAssertion, currentInputPosition.unsafeGet());-
644 break;
executed 76 times by 1 test: break;
Executed by:
  • tst_ecmascripttests
76
645-
646 case PatternTerm::TypeDotStarEnclosure:
executed 8 times by 1 test: case PatternTerm::TypeDotStarEnclosure:
Executed by:
  • tst_ecmascripttests
8
647 alternative->m_hasFixedSize = false;-
648 term.inputPosition = initialInputPosition;-
649 break;
executed 8 times by 1 test: break;
Executed by:
  • tst_ecmascripttests
8
650 }-
651 }
executed 2379996 times by 9 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
2379996
652-
653 alternative->m_minimumSize = (currentInputPosition - initialInputPosition).unsafeGet();-
654 return currentCallFrameSize;
executed 1154549 times by 153 tests: return currentCallFrameSize;
Executed by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1154549
655 }-
656-
657 unsigned setupDisjunctionOffsets(PatternDisjunction* disjunction, unsigned initialCallFrameSize, unsigned initialInputPosition)-
658 {-
659 if ((disjunction != m_pattern.m_body) && (disjunction->m_alternatives.size() > 1))
(disjunction !...attern.m_body)Description
TRUEevaluated 3616 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
FALSEevaluated 1149465 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
(disjunction->...es.size() > 1)Description
TRUEevaluated 641 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
FALSEevaluated 2976 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
641-1149465
660 initialCallFrameSize += YarrStackSpaceForBackTrackInfoAlternative;
executed 642 times by 3 tests: initialCallFrameSize += 1;
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
642
661-
662 unsigned minimumInputSize = UINT_MAX;-
663 unsigned maximumCallFrameSize = 0;-
664 bool hasFixedSize = true;-
665-
666 for (unsigned alt = 0; alt < disjunction->m_alternatives.size(); ++alt) {
alt < disjunct...natives.size()Description
TRUEevaluated 1156077 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
FALSEevaluated 1154390 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1154390-1156077
667 PatternAlternative* alternative = disjunction->m_alternatives[alt].get();-
668 unsigned currentAlternativeCallFrameSize = setupAlternativeOffsets(alternative, initialCallFrameSize, initialInputPosition);-
669 minimumInputSize = std::min(minimumInputSize, alternative->m_minimumSize);-
670 maximumCallFrameSize = std::max(maximumCallFrameSize, currentAlternativeCallFrameSize);-
671 hasFixedSize &= alternative->m_hasFixedSize;-
672 }
executed 1155127 times by 153 tests: end of block
Executed by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1155127
673 -
674 ASSERT(minimumInputSize != UINT_MAX);-
675 ASSERT(maximumCallFrameSize >= initialCallFrameSize);-
676-
677 disjunction->m_hasFixedSize = hasFixedSize;-
678 disjunction->m_minimumSize = minimumInputSize;-
679 disjunction->m_callFrameSize = maximumCallFrameSize;-
680 return maximumCallFrameSize;
executed 1154201 times by 153 tests: return maximumCallFrameSize;
Executed by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1154201
681 }-
682-
683 void setupOffsets()-
684 {-
685 setupDisjunctionOffsets(m_pattern.m_body, 0, 0);-
686 }
executed 1150138 times by 153 tests: end of block
Executed by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1150138
687-
688 // This optimization identifies sets of parentheses that we will never need to backtrack.-
689 // In these cases we do not need to store state from prior iterations.-
690 // We can presently avoid backtracking for:-
691 // * where the parens are at the end of the regular expression (last term in any of the-
692 // alternatives of the main body disjunction).-
693 // * where the parens are non-capturing, and quantified unbounded greedy (*).-
694 // * where the parens do not contain any capturing subpatterns.-
695 void checkForTerminalParentheses()-
696 {-
697 // This check is much too crude; should be just checking whether the candidate-
698 // node contains nested capturing subpatterns, not the whole expression!-
699 if (m_pattern.m_numSubpatterns)
m_pattern.m_numSubpatternsDescription
TRUEevaluated 560 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
FALSEevaluated 1149855 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
560-1149855
700 return;
executed 560 times by 3 tests: return;
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
560
701-
702 Vector<OwnPtr<PatternAlternative> >& alternatives = m_pattern.m_body->m_alternatives;-
703 for (size_t i = 0; i < alternatives.size(); ++i) {
i < alternatives.size()Description
TRUEevaluated 1149923 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
FALSEevaluated 1149644 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1149644-1149923
704 Vector<PatternTerm>& terms = alternatives[i]->m_terms;-
705 if (terms.size()) {
terms.size()Description
TRUEevaluated 1051678 times by 9 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
FALSEevaluated 98066 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
98066-1051678
706 PatternTerm& term = terms.last();-
707 if (term.type == PatternTerm::TypeParenthesesSubpattern
term.type == P...esesSubpatternDescription
TRUEevaluated 87 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 1051460 times by 9 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
87-1051460
708 && term.quantityType == QuantifierGreedy
term.quantityT...antifierGreedyDescription
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 76 times by 1 test
Evaluated by:
  • tst_ecmascripttests
12-76
709 && term.quantityCount == quantifyInfinite
term.quantityC...antifyInfiniteDescription
TRUEevaluated 11 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEnever evaluated
0-11
710 && !term.capture())
!term.capture()Description
TRUEevaluated 11 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEnever evaluated
0-11
711 term.parentheses.isTerminal = true;
executed 11 times by 1 test: term.parentheses.isTerminal = true;
Executed by:
  • tst_ecmascripttests
11
712 }
executed 1051487 times by 9 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qqmlecmascript
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
1051487
713 }
executed 1149807 times by 153 tests: end of block
Executed by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1149807
714 }
executed 1149590 times by 153 tests: end of block
Executed by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1149590
715-
716 void optimizeBOL()-
717 {-
718 // Look for expressions containing beginning of line (^) anchoring and unroll them.-
719 // e.g. /^a|^b|c/ becomes /^a|^b|c/ which is executed once followed by /c/ which loops-
720 // This code relies on the parsing code tagging alternatives with m_containsBOL and-
721 // m_startsWithBOL and rolling those up to containing alternatives.-
722 // At this point, this is only valid for non-multiline expressions.-
723 PatternDisjunction* disjunction = m_pattern.m_body;-
724 -
725 if (!m_pattern.m_containsBOL || m_pattern.m_multiline)
!m_pattern.m_containsBOLDescription
TRUEevaluated 1149777 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
FALSEevaluated 142 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
m_pattern.m_multilineDescription
TRUEevaluated 20 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 122 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
20-1149777
726 return;
executed 1149681 times by 153 tests: return;
Executed by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1149681
727 -
728 PatternDisjunction* loopDisjunction = copyDisjunction(disjunction, true);-
729-
730 // Set alternatives in disjunction to "onceThrough"-
731 for (unsigned alt = 0; alt < disjunction->m_alternatives.size(); ++alt)
alt < disjunct...natives.size()Description
TRUEevaluated 132 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
FALSEevaluated 121 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
121-132
732 disjunction->m_alternatives[alt]->setOnceThrough();
executed 132 times by 5 tests: disjunction->m_alternatives[alt]->setOnceThrough();
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
132
733-
734 if (loopDisjunction) {
loopDisjunctionDescription
TRUEevaluated 6 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
FALSEevaluated 115 times by 4 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
6-115
735 // Move alternatives from loopDisjunction to disjunction-
736 for (unsigned alt = 0; alt < loopDisjunction->m_alternatives.size(); ++alt)
alt < loopDisj...natives.size()Description
TRUEevaluated 6 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
FALSEevaluated 6 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
6
737 disjunction->m_alternatives.append(loopDisjunction->m_alternatives[alt].release());
executed 6 times by 2 tests: disjunction->m_alternatives.append(loopDisjunction->m_alternatives[alt].release());
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
6
738 -
739 loopDisjunction->m_alternatives.clear();-
740 }
executed 6 times by 2 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
6
741 }
executed 121 times by 5 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
121
742-
743 bool containsCapturingTerms(PatternAlternative* alternative, size_t firstTermIndex, size_t lastTermIndex)-
744 {-
745 Vector<PatternTerm>& terms = alternative->m_terms;-
746-
747 for (size_t termIndex = firstTermIndex; termIndex <= lastTermIndex; ++termIndex) {
termIndex <= lastTermIndexDescription
TRUEevaluated 24 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_ecmascripttests
8-24
748 PatternTerm& term = terms[termIndex];-
749-
750 if (term.m_capture)
term.m_captureDescription
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_ecmascripttests
0-24
751 return true;
never executed: return true;
0
752-
753 if (term.type == PatternTerm::TypeParenthesesSubpattern) {
term.type == P...esesSubpatternDescription
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_ecmascripttests
0-24
754 PatternDisjunction* nestedDisjunction = term.parentheses.disjunction;-
755 for (unsigned alt = 0; alt < nestedDisjunction->m_alternatives.size(); ++alt) {
alt < nestedDi...natives.size()Description
TRUEnever evaluated
FALSEnever evaluated
0
756 if (containsCapturingTerms(nestedDisjunction->m_alternatives[alt].get(), 0, nestedDisjunction->m_alternatives[alt]->m_terms.size() - 1))
containsCaptur...ms.size() - 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
757 return true;
never executed: return true;
0
758 }
never executed: end of block
0
759 }
never executed: end of block
0
760 }
executed 24 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
24
761-
762 return false;
executed 8 times by 1 test: return false;
Executed by:
  • tst_ecmascripttests
8
763 }-
764-
765 // This optimization identifies alternatives in the form of -
766 // [^].*[?]<expression>.*[$] for expressions that don't have any -
767 // capturing terms. The alternative is changed to <expression> -
768 // followed by processing of the dot stars to find and adjust the -
769 // beginning and the end of the match.-
770 void optimizeDotStarWrappedExpressions()-
771 {-
772 Vector<OwnPtr<PatternAlternative> >& alternatives = m_pattern.m_body->m_alternatives;-
773 if (alternatives.size() != 1)
alternatives.size() != 1Description
TRUEevaluated 197 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
FALSEevaluated 1149634 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
197-1149634
774 return;
executed 197 times by 2 tests: return;
Executed by:
  • tst_ecmascripttests
  • tst_qqmlxmlhttprequest
197
775-
776 PatternAlternative* alternative = alternatives[0].get();-
777 Vector<PatternTerm>& terms = alternative->m_terms;-
778 if (terms.size() >= 3) {
terms.size() >= 3Description
TRUEevaluated 263139 times by 7 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
FALSEevaluated 886621 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
263139-886621
779 bool startsWithBOL = false;-
780 bool endsWithEOL = false;-
781 size_t termIndex, firstExpressionTerm, lastExpressionTerm;-
782-
783 termIndex = 0;-
784 if (terms[termIndex].type == PatternTerm::TypeAssertionBOL) {
terms[termInde...peAssertionBOLDescription
TRUEevaluated 112 times by 4 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
FALSEevaluated 263027 times by 5 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qquicktextinput
112-263027
785 startsWithBOL = true;-
786 ++termIndex;-
787 }
executed 112 times by 4 tests: end of block
Executed by:
  • tst_ecmascripttests
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
112
788 -
789 PatternTerm& firstNonAnchorTerm = terms[termIndex];-
790 if ((firstNonAnchorTerm.type != PatternTerm::TypeCharacterClass) || (firstNonAnchorTerm.characterClass != m_pattern.newlineCharacterClass()) || !((firstNonAnchorTerm.quantityType == QuantifierGreedy) || (firstNonAnchorTerm.quantityType == QuantifierNonGreedy)))
(firstNonAncho...haracterClass)Description
TRUEevaluated 262953 times by 6 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qquicklistview
  • tst_qquicktextinput
FALSEevaluated 186 times by 4 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
  • tst_qquicktextinput
  • tst_qquickworkerscript
(firstNonAncho...racterClass())Description
TRUEevaluated 134 times by 3 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qquicktextinput
  • tst_qquickworkerscript
FALSEevaluated 52 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
(firstNonAncho...ntifierGreedy)Description
TRUEevaluated 14 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
FALSEevaluated 38 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
(firstNonAncho...fierNonGreedy)Description
TRUEevaluated 10 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
FALSEevaluated 28 times by 1 test
Evaluated by:
  • tst_ecmascripttests
10-262953
791 return;
executed 263115 times by 7 tests: return;
Executed by:
  • tst_ecmascripttests
  • tst_examples
  • tst_qjsengine
  • tst_qjsvalue
  • tst_qquicklistview
  • tst_qquicktextinput
  • tst_qquickworkerscript
263115
792 -
793 firstExpressionTerm = termIndex + 1;-
794 -
795 termIndex = terms.size() - 1;-
796 if (terms[termIndex].type == PatternTerm::TypeAssertionEOL) {
terms[termInde...peAssertionEOLDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 20 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
4-20
797 endsWithEOL = true;-
798 --termIndex;-
799 }
executed 4 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
4
800 -
801 PatternTerm& lastNonAnchorTerm = terms[termIndex];-
802 if ((lastNonAnchorTerm.type != PatternTerm::TypeCharacterClass) || (lastNonAnchorTerm.characterClass != m_pattern.newlineCharacterClass()) || (lastNonAnchorTerm.quantityType != QuantifierGreedy))
(lastNonAnchor...haracterClass)Description
TRUEevaluated 10 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
FALSEevaluated 14 times by 2 tests
Evaluated by:
  • tst_ecmascripttests
  • tst_qjsengine
(lastNonAnchor...racterClass())Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_qjsengine
FALSEevaluated 12 times by 1 test
Evaluated by:
  • tst_ecmascripttests
(lastNonAnchor...ntifierGreedy)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_ecmascripttests
2-14
803 return;
executed 16 times by 2 tests: return;
Executed by:
  • tst_ecmascripttests
  • tst_qjsengine
16
804 -
805 lastExpressionTerm = termIndex - 1;-
806-
807 if (firstExpressionTerm > lastExpressionTerm)
firstExpressio...ExpressionTermDescription
TRUEnever evaluated
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_ecmascripttests
0-8
808 return;
never executed: return;
0
809-
810 if (!containsCapturingTerms(alternative, firstExpressionTerm, lastExpressionTerm)) {
!containsCaptu...xpressionTerm)Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEnever evaluated
0-8
811 for (termIndex = terms.size() - 1; termIndex > lastExpressionTerm; --termIndex)
termIndex > lastExpressionTermDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_ecmascripttests
8
812 terms.remove(termIndex);
executed 8 times by 1 test: terms.remove(termIndex);
Executed by:
  • tst_ecmascripttests
8
813-
814 for (termIndex = firstExpressionTerm; termIndex > 0; --termIndex)
termIndex > 0Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_ecmascripttests
8
815 terms.remove(termIndex - 1);
executed 8 times by 1 test: terms.remove(termIndex - 1);
Executed by:
  • tst_ecmascripttests
8
816-
817 terms.append(PatternTerm(startsWithBOL, endsWithEOL));-
818 -
819 m_pattern.m_containsBOL = false;-
820 }
executed 8 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
8
821 }
executed 8 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
8
822 }
executed 887320 times by 153 tests: end of block
Executed by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
887320
823-
824private:-
825 YarrPattern& m_pattern;-
826 PatternAlternative* m_alternative;-
827 CharacterClassConstructor m_characterClassConstructor;-
828 bool m_invertCharacterClass;-
829 bool m_invertParentheticalAssertion;-
830};-
831-
832const char* YarrPattern::compile(const String& patternString)-
833{-
834 YarrPatternConstructor constructor(*this);-
835-
836 if (const char* error = parse(constructor, patternString))
const char* er...patternString)Description
TRUEevaluated 249 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 1150587 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
249-1150587
837 return error;
executed 250 times by 1 test: return error;
Executed by:
  • tst_ecmascripttests
250
838 -
839 // If the pattern contains illegal backreferences reset & reparse.-
840 // Quoting Netscape's "What's new in JavaScript 1.2",-
841 // "Note: if the number of left parentheses is less than the number specified-
842 // in \#, the \# is taken as an octal escape as described in the next row."-
843 if (containsIllegalBackReference()) {
containsIllegalBackReference()Description
TRUEevaluated 72 times by 1 test
Evaluated by:
  • tst_ecmascripttests
FALSEevaluated 1150410 times by 153 tests
Evaluated by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
72-1150410
844 unsigned numSubpatterns = m_numSubpatterns;-
845-
846 constructor.reset();-
847#if !ASSERT_DISABLED-
848 const char* error =-
849#endif-
850 parse(constructor, patternString, numSubpatterns);-
851-
852 ASSERT(!error);-
853 ASSERT(numSubpatterns == m_numSubpatterns);-
854 }
executed 72 times by 1 test: end of block
Executed by:
  • tst_ecmascripttests
72
855-
856 constructor.checkForTerminalParentheses();-
857 constructor.optimizeDotStarWrappedExpressions();-
858 constructor.optimizeBOL();-
859 -
860 constructor.setupOffsets();-
861-
862 return 0;
executed 1149806 times by 153 tests: return 0;
Executed by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1149806
863}-
864-
865YarrPattern::YarrPattern(const String& pattern, bool ignoreCase, bool multiline, const char** error)-
866 : m_ignoreCase(ignoreCase)-
867 , m_multiline(multiline)-
868 , m_containsBackreferences(false)-
869 , m_containsBOL(false)-
870 , m_numSubpatterns(0)-
871 , m_maxBackReference(0)-
872 , newlineCached(0)-
873 , digitsCached(0)-
874 , spacesCached(0)-
875 , wordcharCached(0)-
876 , nondigitsCached(0)-
877 , nonspacesCached(0)-
878 , nonwordcharCached(0)-
879{-
880 *error = compile(pattern);-
881}
executed 1151010 times by 153 tests: end of block
Executed by:
  • tst_bindingdependencyapi
  • tst_drawingmodes
  • tst_ecmascripttests
  • tst_examples
  • tst_flickableinterop
  • tst_multipointtoucharea_interop
  • tst_parserstress
  • tst_qjsengine
  • tst_qjsonbinding
  • tst_qjsvalue
  • tst_qjsvalueiterator
  • tst_qmlcachegen
  • tst_qmldiskcache
  • tst_qqmlapplicationengine
  • tst_qqmlbinding
  • tst_qqmlcomponent
  • tst_qqmlconnections
  • tst_qqmlconsole
  • tst_qqmlcontext
  • tst_qqmldebugclient
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmldebugservice
  • tst_qqmlecmascript
  • tst_qqmlenginecleanup
  • ...
1151010
882-
883} }-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.0