OpenCoverage

qqmlexpression.cpp

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/qml/qqmlexpression.cpp
Source codeSwitch to Preprocessed file
LineSourceCount
1/****************************************************************************-
2**-
3** Copyright (C) 2016 The Qt Company Ltd.-
4** Contact: https://www.qt.io/licensing/-
5**-
6** This file is part of the QtQml module of the Qt Toolkit.-
7**-
8** $QT_BEGIN_LICENSE:LGPL$-
9** Commercial License Usage-
10** Licensees holding valid commercial Qt licenses may use this file in-
11** accordance with the commercial license agreement provided with the-
12** Software or, alternatively, in accordance with the terms contained in-
13** a written agreement between you and The Qt Company. For licensing terms-
14** and conditions see https://www.qt.io/terms-conditions. For further-
15** information use the contact form at https://www.qt.io/contact-us.-
16**-
17** GNU Lesser General Public License Usage-
18** Alternatively, this file may be used under the terms of the GNU Lesser-
19** General Public License version 3 as published by the Free Software-
20** Foundation and appearing in the file LICENSE.LGPL3 included in the-
21** packaging of this file. Please review the following information to-
22** ensure the GNU Lesser General Public License version 3 requirements-
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.-
24**-
25** GNU General Public License Usage-
26** Alternatively, this file may be used under the terms of the GNU-
27** General Public License version 2.0 or (at your option) the GNU General-
28** Public license version 3 or any later version approved by the KDE Free-
29** Qt Foundation. The licenses are as published by the Free Software-
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3-
31** included in the packaging of this file. Please review the following-
32** information to ensure the GNU General Public License requirements will-
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and-
34** https://www.gnu.org/licenses/gpl-3.0.html.-
35**-
36** $QT_END_LICENSE$-
37**-
38****************************************************************************/-
39-
40#include "qqmlexpression.h"-
41#include "qqmlexpression_p.h"-
42-
43#include "qqmlglobal_p.h"-
44#include "qqmlengine_p.h"-
45#include "qqmlcontext_p.h"-
46#include "qqmlscriptstring_p.h"-
47#include "qqmlbinding_p.h"-
48#include <private/qv8engine_p.h>-
49-
50#include <QtCore/qdebug.h>-
51-
52QT_BEGIN_NAMESPACE-
53-
54QQmlExpressionPrivate::QQmlExpressionPrivate()-
55: QQmlJavaScriptExpression(),-
56 expressionFunctionValid(true),-
57 line(0), column(0)-
58{-
59}
executed 1130416 times by 22 tests: end of block
Executed by:
  • tst_examples
  • tst_qqmlcontext
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquickstates
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
  • tst_scenegraph
1130416
60-
61QQmlExpressionPrivate::~QQmlExpressionPrivate()-
62{-
63}-
64-
65void QQmlExpressionPrivate::init(QQmlContextData *ctxt, const QString &expr, QObject *me)-
66{-
67 expression = expr;-
68-
69 QQmlJavaScriptExpression::setContext(ctxt);-
70 setScopeObject(me);-
71 expressionFunctionValid = false;-
72}
executed 1112342 times by 15 tests: end of block
Executed by:
  • tst_qqmlcontext
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
1112342
73-
74void QQmlExpressionPrivate::init(QQmlContextData *ctxt, QV4::Function *runtimeFunction, QObject *me)-
75{-
76 expressionFunctionValid = true;-
77 QV4::ExecutionEngine *engine = ctxt->engine->handle();-
78 QV4::Scope scope(engine);-
79 QV4::Scoped<QV4::QmlContext> qmlContext(scope, QV4::QmlContext::create(engine->rootContext(), ctxt, me));-
80 setupFunction(qmlContext, runtimeFunction);-
81-
82 QQmlJavaScriptExpression::setContext(ctxt);-
83 setScopeObject(me);-
84}
executed 18074 times by 11 tests: end of block
Executed by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
18074
85-
86/*!-
87 \class QQmlExpression-
88 \since 5.0-
89 \inmodule QtQml-
90 \brief The QQmlExpression class evaluates JavaScript in a QML context.-
91-
92 For example, given a file \c main.qml like this:-
93-
94 \qml-
95 import QtQuick 2.0-
96-
97 Item {-
98 width: 200; height: 200-
99 }-
100 \endqml-
101-
102 The following code evaluates a JavaScript expression in the context of the-
103 above QML:-
104-
105 \code-
106 QQmlEngine *engine = new QQmlEngine;-
107 QQmlComponent component(engine, QUrl::fromLocalFile("main.qml"));-
108-
109 QObject *myObject = component.create();-
110 QQmlExpression *expr = new QQmlExpression(engine->rootContext(), myObject, "width * 2");-
111 int result = expr->evaluate().toInt(); // result = 400-
112 \endcode-
113-
114 Note that the \l {Qt Quick 1} version is called QDeclarativeExpression.-
115*/-
116-
117/*!-
118 Create an invalid QQmlExpression.-
119-
120 As the expression will not have an associated QQmlContext, this will be a-
121 null expression object and its value will always be an invalid QVariant.-
122 */-
123QQmlExpression::QQmlExpression()-
124: QObject(*new QQmlExpressionPrivate, nullptr)-
125{-
126}
never executed: end of block
0
127-
128/*!-
129 Create a QQmlExpression object that is a child of \a parent.-
130-
131 The \a script provides the expression to be evaluated, the context to evaluate it in,-
132 and the scope object to evaluate it with. If provided, \a ctxt and \a scope will override-
133 the context and scope object provided by \a script.-
134-
135 \sa QQmlScriptString-
136*/-
137QQmlExpression::QQmlExpression(const QQmlScriptString &script, QQmlContext *ctxt, QObject *scope, QObject *parent)-
138: QObject(*new QQmlExpressionPrivate, parent)-
139{-
140 Q_D(QQmlExpression);-
141 if (ctxt && !ctxt->isValid())
ctxtDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_qqmlstatemachine
FALSEevaluated 18070 times by 10 tests
Evaluated by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
!ctxt->isValid()Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_qqmlstatemachine
0-18070
142 return;
never executed: return;
0
143-
144 const QQmlScriptStringPrivate *scriptPrivate = script.d.data();-
145 if (!ctxt && (!scriptPrivate->context || !scriptPrivate->context->isValid()))
!ctxtDescription
TRUEevaluated 18070 times by 10 tests
Evaluated by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_qqmlstatemachine
!scriptPrivate->contextDescription
TRUEnever evaluated
FALSEevaluated 18070 times by 10 tests
Evaluated by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
!scriptPrivate...ext->isValid()Description
TRUEnever evaluated
FALSEevaluated 18070 times by 10 tests
Evaluated by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
0-18070
146 return;
never executed: return;
0
147-
148 QQmlContextData *evalCtxtData = QQmlContextData::get(ctxt ? ctxt : scriptPrivate->context);-
149 QObject *scopeObject = scope ? scope : scriptPrivate->scope;
scopeDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_qqmlstatemachine
FALSEevaluated 18070 times by 10 tests
Evaluated by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
4-18070
150 QV4::Function *runtimeFunction = nullptr;-
151-
152 if (scriptPrivate->context) {
scriptPrivate->contextDescription
TRUEevaluated 18074 times by 11 tests
Evaluated by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
FALSEnever evaluated
0-18074
153 QQmlContextData *ctxtdata = QQmlContextData::get(scriptPrivate->context);-
154 QQmlEnginePrivate *engine = QQmlEnginePrivate::get(scriptPrivate->context->engine());-
155 if (engine && ctxtdata && !ctxtdata->urlString().isEmpty() && ctxtdata->typeCompilationUnit) {
engineDescription
TRUEevaluated 18074 times by 11 tests
Evaluated by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
FALSEnever evaluated
ctxtdataDescription
TRUEevaluated 18074 times by 11 tests
Evaluated by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
FALSEnever evaluated
!ctxtdata->url...ng().isEmpty()Description
TRUEevaluated 18074 times by 11 tests
Evaluated by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
FALSEnever evaluated
0-18074
156 d->url = ctxtdata->urlString();-
157 d->line = scriptPrivate->lineNumber;-
158 d->column = scriptPrivate->columnNumber;-
159-
160 if (scriptPrivate->bindingId != QQmlBinding::Invalid)
scriptPrivate-...nding::InvalidDescription
TRUEevaluated 18074 times by 11 tests
Evaluated by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
FALSEnever evaluated
0-18074
161 runtimeFunction = ctxtdata->typeCompilationUnit->runtimeFunctions.at(scriptPrivate->bindingId);
executed 18074 times by 11 tests: runtimeFunction = ctxtdata->typeCompilationUnit->runtimeFunctions.at(scriptPrivate->bindingId);
Executed by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
18074
162 }
executed 18074 times by 11 tests: end of block
Executed by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
18074
163 }
executed 18074 times by 11 tests: end of block
Executed by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
18074
164-
165 if (runtimeFunction) {
runtimeFunctionDescription
TRUEevaluated 18074 times by 11 tests
Evaluated by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
FALSEnever evaluated
0-18074
166 d->expression = scriptPrivate->script;-
167 d->init(evalCtxtData, runtimeFunction, scopeObject);-
168 } else
executed 18074 times by 11 tests: end of block
Executed by:
  • tst_examples
  • tst_qqmlexpression
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
18074
169 d->init(evalCtxtData, scriptPrivate->script, scopeObject);
never executed: d->init(evalCtxtData, scriptPrivate->script, scopeObject);
0
170}-
171-
172/*!-
173 Create a QQmlExpression object that is a child of \a parent.-
174-
175 The \a expression JavaScript will be executed in the \a ctxt QQmlContext.-
176 If specified, the \a scope object's properties will also be in scope during-
177 the expression's execution.-
178*/-
179QQmlExpression::QQmlExpression(QQmlContext *ctxt,-
180 QObject *scope,-
181 const QString &expression,-
182 QObject *parent)-
183: QObject(*new QQmlExpressionPrivate, parent)-
184{-
185 Q_D(QQmlExpression);-
186 d->init(QQmlContextData::get(ctxt), expression, scope);-
187}
executed 1112342 times by 15 tests: end of block
Executed by:
  • tst_qqmlcontext
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
1112342
188-
189/*!-
190 \internal-
191*/-
192QQmlExpression::QQmlExpression(QQmlContextData *ctxt, QObject *scope,-
193 const QString &expression)-
194: QObject(*new QQmlExpressionPrivate, nullptr)-
195{-
196 Q_D(QQmlExpression);-
197 d->init(ctxt, expression, scope);-
198}
never executed: end of block
0
199-
200/*!-
201 Destroy the QQmlExpression instance.-
202*/-
203QQmlExpression::~QQmlExpression()-
204{-
205}-
206-
207/*!-
208 Returns the QQmlEngine this expression is associated with, or 0 if there-
209 is no association or the QQmlEngine has been destroyed.-
210*/-
211QQmlEngine *QQmlExpression::engine() const-
212{-
213 Q_D(const QQmlExpression);-
214 return d->context()?d->context()->engine:nullptr;
executed 1130746 times by 21 tests: return d->context()?d->context()->engine:nullptr;
Executed by:
  • tst_examples
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquickstates
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
  • tst_scenegraph
1130746
215}-
216-
217/*!-
218 Returns the QQmlContext this expression is associated with, or 0 if there-
219 is no association or the QQmlContext has been destroyed.-
220*/-
221QQmlContext *QQmlExpression::context() const-
222{-
223 Q_D(const QQmlExpression);-
224 QQmlContextData *data = d->context();-
225 return data?data->asQQmlContext():nullptr;
executed 4 times by 1 test: return data?data->asQQmlContext():nullptr;
Executed by:
  • tst_qqmlcontext
4
226}-
227-
228/*!-
229 Returns the expression string.-
230*/-
231QString QQmlExpression::expression() const-
232{-
233 Q_D(const QQmlExpression);-
234 return d->expression;
never executed: return d->expression;
0
235}-
236-
237/*!-
238 Set the expression to \a expression.-
239*/-
240void QQmlExpression::setExpression(const QString &expression)-
241{-
242 Q_D(QQmlExpression);-
243-
244 d->resetNotifyOnValueChanged();-
245 d->expression = expression;-
246 d->expressionFunctionValid = false;-
247}
executed 128 times by 1 test: end of block
Executed by:
  • tst_qqmllistmodel
128
248-
249// Must be called with a valid handle scope-
250QV4::ReturnedValue QQmlExpressionPrivate::v4value(bool *isUndefined)-
251{-
252 if (!expressionFunctionValid) {
!expressionFunctionValidDescription
TRUEevaluated 1112468 times by 14 tests
Evaluated by:
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
FALSEevaluated 18104 times by 13 tests
Evaluated by:
  • tst_examples
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_scenegraph
18104-1112468
253 createQmlBinding(context(), scopeObject(), expression, url, line);-
254 expressionFunctionValid = true;-
255 if (hasError()) {
hasError()Description
TRUEevaluated 6 times by 3 tests
Evaluated by:
  • tst_qqmlecmascript
  • tst_qqmlexpression
  • tst_qquickvisualdatamodel
FALSEevaluated 1112462 times by 14 tests
Evaluated by:
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
6-1112462
256 if (isUndefined)
isUndefinedDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_qqmlexpression
FALSEevaluated 4 times by 2 tests
Evaluated by:
  • tst_qqmlecmascript
  • tst_qquickvisualdatamodel
2-4
257 *isUndefined = true;
executed 2 times by 1 test: *isUndefined = true;
Executed by:
  • tst_qqmlexpression
2
258 return QV4::Encode::undefined();
executed 6 times by 3 tests: return QV4::Encode::undefined();
Executed by:
  • tst_qqmlecmascript
  • tst_qqmlexpression
  • tst_qquickvisualdatamodel
6
259 }-
260 }
executed 1112462 times by 14 tests: end of block
Executed by:
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
1112462
261-
262 return evaluate(isUndefined);
executed 1130566 times by 21 tests: return evaluate(isUndefined);
Executed by:
  • tst_examples
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquickstates
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
  • tst_scenegraph
1130566
263}-
264-
265QVariant QQmlExpressionPrivate::value(bool *isUndefined)-
266{-
267 Q_Q(QQmlExpression);-
268-
269 if (!context() || !context()->isValid()) {
!context()Description
TRUEnever evaluated
FALSEevaluated 1130572 times by 21 tests
Evaluated by:
  • tst_examples
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquickstates
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
  • tst_scenegraph
!context()->isValid()Description
TRUEnever evaluated
FALSEevaluated 1130572 times by 21 tests
Evaluated by:
  • tst_examples
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquickstates
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
  • tst_scenegraph
0-1130572
270 qWarning("QQmlExpression: Attempted to evaluate an expression in an invalid context");-
271 return QVariant();
never executed: return QVariant();
0
272 }-
273-
274 QQmlEngine *engine = q->engine();-
275 QQmlEnginePrivate *ep = QQmlEnginePrivate::get(engine);-
276 QVariant rv;-
277-
278 ep->referenceScarceResources(); // "hold" scarce resources in memory during evaluation.-
279-
280 {-
281 QV4::Scope scope(engine->handle());-
282 QV4::ScopedValue result(scope, v4value(isUndefined));-
283 if (!hasError())
!hasError()Description
TRUEevaluated 1130554 times by 21 tests
Evaluated by:
  • tst_examples
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquickstates
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
  • tst_scenegraph
FALSEevaluated 18 times by 4 tests
Evaluated by:
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qquickvisualdatamodel
18-1130554
284 rv = scope.engine->toVariant(result, -1);
executed 1130554 times by 21 tests: rv = scope.engine->toVariant(result, -1);
Executed by:
  • tst_examples
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquickstates
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
  • tst_scenegraph
1130554
285 }-
286-
287 ep->dereferenceScarceResources(); // "release" scarce resources if top-level expression evaluation is complete.-
288-
289 return rv;
executed 1130572 times by 21 tests: return rv;
Executed by:
  • tst_examples
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquickstates
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
  • tst_scenegraph
1130572
290}-
291-
292/*!-
293 Evaulates the expression, returning the result of the evaluation,-
294 or an invalid QVariant if the expression is invalid or has an error.-
295-
296 \a valueIsUndefined is set to true if the expression resulted in an-
297 undefined value.-
298-
299 \sa hasError(), error()-
300*/-
301QVariant QQmlExpression::evaluate(bool *valueIsUndefined)-
302{-
303 Q_D(QQmlExpression);-
304 return d->value(valueIsUndefined);
executed 1130572 times by 21 tests: return d->value(valueIsUndefined);
Executed by:
  • tst_examples
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qqmlstatemachine
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpathview
  • tst_qquickpositioners
  • tst_qquickrepeater
  • tst_qquickstates
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
  • tst_scenegraph
1130572
305}-
306-
307/*!-
308Returns true if the valueChanged() signal is emitted when the expression's evaluated-
309value changes.-
310*/-
311bool QQmlExpression::notifyOnValueChanged() const-
312{-
313 Q_D(const QQmlExpression);-
314 return d->notifyOnValueChanged();
never executed: return d->notifyOnValueChanged();
0
315}-
316-
317/*!-
318 Sets whether the valueChanged() signal is emitted when the-
319 expression's evaluated value changes.-
320-
321 If \a notifyOnChange is true, the QQmlExpression will-
322 monitor properties involved in the expression's evaluation, and emit-
323 QQmlExpression::valueChanged() if they have changed. This-
324 allows an application to ensure that any value associated with the-
325 result of the expression remains up to date.-
326-
327 If \a notifyOnChange is false (default), the QQmlExpression-
328 will not montitor properties involved in the expression's-
329 evaluation, and QQmlExpression::valueChanged() will never be-
330 emitted. This is more efficient if an application wants a "one off"-
331 evaluation of the expression.-
332*/-
333void QQmlExpression::setNotifyOnValueChanged(bool notifyOnChange)-
334{-
335 Q_D(QQmlExpression);-
336 d->setNotifyOnValueChanged(notifyOnChange);-
337}
executed 58 times by 2 tests: end of block
Executed by:
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
58
338-
339/*!-
340 Returns the source file URL for this expression. The source location must-
341 have been previously set by calling setSourceLocation().-
342*/-
343QString QQmlExpression::sourceFile() const-
344{-
345 Q_D(const QQmlExpression);-
346 return d->url;
never executed: return d->url;
0
347}-
348-
349/*!-
350 Returns the source file line number for this expression. The source location-
351 must have been previously set by calling setSourceLocation().-
352*/-
353int QQmlExpression::lineNumber() const-
354{-
355 Q_D(const QQmlExpression);-
356 return qmlSourceCoordinate(d->line);
never executed: return qmlSourceCoordinate(d->line);
0
357}-
358-
359/*!-
360 Returns the source file column number for this expression. The source location-
361 must have been previously set by calling setSourceLocation().-
362*/-
363int QQmlExpression::columnNumber() const-
364{-
365 Q_D(const QQmlExpression);-
366 return qmlSourceCoordinate(d->column);
never executed: return qmlSourceCoordinate(d->column);
0
367}-
368-
369/*!-
370 Set the location of this expression to \a line and \a column of \a url. This information-
371 is used by the script engine.-
372*/-
373void QQmlExpression::setSourceLocation(const QString &url, int line, int column)-
374{-
375 Q_D(QQmlExpression);-
376 d->url = url;-
377 d->line = qmlSourceCoordinate(line);-
378 d->column = qmlSourceCoordinate(column);-
379}
never executed: end of block
0
380-
381/*!-
382 Returns the expression's scope object, if provided, otherwise 0.-
383-
384 In addition to data provided by the expression's QQmlContext, the scope-
385 object's properties are also in scope during the expression's evaluation.-
386*/-
387QObject *QQmlExpression::scopeObject() const-
388{-
389 Q_D(const QQmlExpression);-
390 return d->scopeObject();
never executed: return d->scopeObject();
0
391}-
392-
393/*!-
394 Returns true if the last call to evaluate() resulted in an error,-
395 otherwise false.-
396-
397 \sa error(), clearError()-
398*/-
399bool QQmlExpression::hasError() const-
400{-
401 Q_D(const QQmlExpression);-
402 return d->hasError();
executed 84392 times by 17 tests: return d->hasError();
Executed by:
  • tst_examples
  • tst_qqmlecmascript
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qqmlxmlhttprequest
  • tst_qquickanimations
  • tst_qquickbehaviors
  • tst_qquickdrag
  • tst_qquickdroparea
  • tst_qquickgridview
  • tst_qquicklistview
  • tst_qquickpositioners
  • tst_qquickstates
  • tst_qquicktextinput
  • tst_qquickvisualdatamodel
  • tst_scenegraph
84392
403}-
404-
405/*!-
406 Clear any expression errors. Calls to hasError() following this will-
407 return false.-
408-
409 \sa hasError(), error()-
410*/-
411void QQmlExpression::clearError()-
412{-
413 Q_D(QQmlExpression);-
414 d->clearError();-
415}
never executed: end of block
0
416-
417/*!-
418 Return any error from the last call to evaluate(). If there was no error,-
419 this returns an invalid QQmlError instance.-
420-
421 \sa hasError(), clearError()-
422*/-
423-
424QQmlError QQmlExpression::error() const-
425{-
426 Q_D(const QQmlExpression);-
427 return d->error(engine());
executed 174 times by 5 tests: return d->error(engine());
Executed by:
  • tst_qqmlecmascript
  • tst_qqmlexpression
  • tst_qqmllistmodel
  • tst_qqmllistmodelworkerscript
  • tst_qquickvisualdatamodel
174
428}-
429-
430/*!-
431 \fn void QQmlExpression::valueChanged()-
432-
433 Emitted each time the expression value changes from the last time it was-
434 evaluated. The expression must have been evaluated at least once (by-
435 calling QQmlExpression::evaluate()) before this signal will be emitted.-
436*/-
437-
438void QQmlExpressionPrivate::expressionChanged()-
439{-
440 Q_Q(QQmlExpression);-
441 emit q->valueChanged();-
442}
executed 34 times by 2 tests: end of block
Executed by:
  • tst_qqmlecmascript
  • tst_qqmlenginedebugservice
34
443-
444QString QQmlExpressionPrivate::expressionIdentifier() const-
445{-
446 return QLatin1Char('"') + expression + QLatin1Char('"');
never executed: return QLatin1Char('"') + expression + QLatin1Char('"');
0
447}-
448-
449QT_END_NAMESPACE-
450-
451#include <moc_qqmlexpression.cpp>-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.0