break;
case IR::OpIfTrue:
+ convertToBool(e->expr, src);
if (src != currentReg) {
i.move_reg_reg(currentReg, src);
gen(i);
- } else {
- // nothing to do
}
break;
case IR::OpNot:
+ convertToBool(e->expr, src);
i.unary_not(currentReg, src);
gen(i);
break;
void unnecessaryReeval();
void logicalOr();
+ void conditionalExpr();
void qtscript();
void qtscript_data();
void nestedObjectAccess();
QTest::newRow("qreal -> int rounding") << "qrealToIntRounding.qml";
QTest::newRow("exception on fetch") << "fetchException.qml";
QTest::newRow("logical or") << "logicalOr.qml";
+ QTest::newRow("conditional expressions") << "conditionalExpr.qml";
QTest::newRow("double bool jump") << "doubleBoolJump.qml";
QTest::newRow("unary minus") << "unaryMinus.qml";
QTest::newRow("null qobject") << "nullQObject.qml";
}
}
+void tst_qdeclarativev4::conditionalExpr()
+{
+ {
+ QDeclarativeComponent component(&engine, TEST_FILE("conditionalExpr.qml"));
+
+ QObject *o = component.create();
+ QVERIFY(o != 0);
+
+ ResultObject *ro = qobject_cast<ResultObject *>(o);
+ QVERIFY(ro != 0);
+
+ QCOMPARE(ro->result(), 0);
+ delete o;
+ }
+}
+
// This would previously use the metaObject of the root element to result the nested access.
// That is, the index for accessing "result" would have been RootObject::result, instead of
// NestedObject::result.