aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/declarative/qml/v4/qv4ir_p.h2
-rw-r--r--tests/auto/declarative/v4/data/unaryMinus.qml6
-rw-r--r--tests/auto/declarative/v4/data/unaryPlus.qml24
-rw-r--r--tests/auto/declarative/v4/tst_v4.cpp44
4 files changed, 75 insertions, 1 deletions
diff --git a/src/declarative/qml/v4/qv4ir_p.h b/src/declarative/qml/v4/qv4ir_p.h
index 2ed403fc29..746995e5be 100644
--- a/src/declarative/qml/v4/qv4ir_p.h
+++ b/src/declarative/qml/v4/qv4ir_p.h
@@ -306,7 +306,7 @@ struct Unop: Expr {
void init(AluOp op, Expr *expr)
{
- this->typeForOp(op, expr);
+ this->type = this->typeForOp(op, expr);
this->op = op;
this->expr = expr;
}
diff --git a/tests/auto/declarative/v4/data/unaryMinus.qml b/tests/auto/declarative/v4/data/unaryMinus.qml
index 01fa515d6f..410654fc3c 100644
--- a/tests/auto/declarative/v4/data/unaryMinus.qml
+++ b/tests/auto/declarative/v4/data/unaryMinus.qml
@@ -7,12 +7,18 @@ Item {
property int test4: -i1.p1
property real test5: -i1.p3
property int test6: -i1.p3
+ property real test7: -i1.p4
+ property int test8: -i1.p4
+ property real test9: -i1.p5
+ property int test10: -i1.p5
QtObject {
id: i1
property real p1: -3.7
property int p2: 18
property real p3: -3.3
+ property int p4: -7
+ property real p5: 4.4
}
}
diff --git a/tests/auto/declarative/v4/data/unaryPlus.qml b/tests/auto/declarative/v4/data/unaryPlus.qml
new file mode 100644
index 0000000000..cd5315a7cc
--- /dev/null
+++ b/tests/auto/declarative/v4/data/unaryPlus.qml
@@ -0,0 +1,24 @@
+import QtQuick 2.0
+
+Item {
+ property real test1: +i1.p2
+ property int test2: +i1.p2
+ property real test3: +i1.p1
+ property int test4: +i1.p1
+ property real test5: +i1.p3
+ property int test6: +i1.p3
+ property real test7: +i1.p4
+ property int test8: +i1.p4
+ property real test9: +i1.p5
+ property int test10: +i1.p5
+
+ QtObject {
+ id: i1
+ property real p1: -3.7
+ property int p2: 18
+ property real p3: -3.3
+ property int p4: -7
+ property real p5: 4.4
+ }
+}
+
diff --git a/tests/auto/declarative/v4/tst_v4.cpp b/tests/auto/declarative/v4/tst_v4.cpp
index 8a550a5c2d..927dc0f082 100644
--- a/tests/auto/declarative/v4/tst_v4.cpp
+++ b/tests/auto/declarative/v4/tst_v4.cpp
@@ -71,6 +71,8 @@ private slots:
void qtbug_21883();
void qtbug_22816();
void stringComparison();
+ void unaryMinus();
+ void unaryPlus();
private:
QDeclarativeEngine engine;
@@ -304,6 +306,48 @@ void tst_v4::stringComparison()
delete o;
}
+void tst_v4::unaryMinus()
+{
+ QDeclarativeComponent component(&engine, testFileUrl("unaryMinus.qml"));
+
+ QObject *o = component.create();
+ QVERIFY(o != 0);
+
+ QCOMPARE(o->property("test1").toReal(), qreal(-18));
+ QCOMPARE(o->property("test2").toInt(), -18);
+ QCOMPARE(o->property("test3").toReal(), qreal(3.7));
+ QCOMPARE(o->property("test4").toInt(), 4);
+ QCOMPARE(o->property("test5").toReal(), qreal(3.3));
+ QCOMPARE(o->property("test6").toInt(), 3);
+ QCOMPARE(o->property("test7").toReal(), qreal(7));
+ QCOMPARE(o->property("test8").toInt(), 7);
+ QCOMPARE(o->property("test9").toReal(), qreal(-4.4));
+ QCOMPARE(o->property("test10").toInt(), -4);
+
+ delete o;
+}
+
+void tst_v4::unaryPlus()
+{
+ QDeclarativeComponent component(&engine, testFileUrl("unaryPlus.qml"));
+
+ QObject *o = component.create();
+ QVERIFY(o != 0);
+
+ QCOMPARE(o->property("test1").toReal(), qreal(18));
+ QCOMPARE(o->property("test2").toInt(), 18);
+ QCOMPARE(o->property("test3").toReal(), qreal(-3.7));
+ QCOMPARE(o->property("test4").toInt(), -4);
+ QCOMPARE(o->property("test5").toReal(), qreal(-3.3));
+ QCOMPARE(o->property("test6").toInt(), -3);
+ QCOMPARE(o->property("test7").toReal(), qreal(-7));
+ QCOMPARE(o->property("test8").toInt(), -7);
+ QCOMPARE(o->property("test9").toReal(), qreal(4.4));
+ QCOMPARE(o->property("test10").toInt(), 4);
+
+ delete o;
+}
+
QTEST_MAIN(tst_v4)
#include "tst_v4.moc"