From 57e0665cb997046389066bd2d2b26a30c367ece8 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Wed, 13 May 2009 12:26:30 +1000 Subject: Fix qmlparser test failure --- src/declarative/qml/qmlparser.cpp | 9 ++++++--- src/declarative/qml/qmlparser_p.h | 3 ++- src/declarative/qml/qmlscriptparser.cpp | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/declarative/qml/qmlparser.cpp b/src/declarative/qml/qmlparser.cpp index 10eec61..c5d7092 100644 --- a/src/declarative/qml/qmlparser.cpp +++ b/src/declarative/qml/qmlparser.cpp @@ -276,8 +276,8 @@ QmlParser::Variant::Variant(bool v) { } -QmlParser::Variant::Variant(double v) -: t(Number), d(v) +QmlParser::Variant::Variant(double v, const QString &asWritten) +: t(Number), d(v), s(asWritten) { } @@ -324,7 +324,10 @@ QString QmlParser::Variant::asScript() const case Boolean: return b?QLatin1String("true"):QLatin1String("false"); case Number: - return QString::number(d); + if (s.isEmpty()) + return QString::number(d); + else + return s; case String: case Script: return s; diff --git a/src/declarative/qml/qmlparser_p.h b/src/declarative/qml/qmlparser_p.h index a6894fb..d4f279b 100644 --- a/src/declarative/qml/qmlparser_p.h +++ b/src/declarative/qml/qmlparser_p.h @@ -44,6 +44,7 @@ #include #include +#include #include #include #include @@ -173,7 +174,7 @@ namespace QmlParser Variant(); Variant(const Variant &); Variant(bool); - Variant(double); + Variant(double, const QString &asWritten=QString()); Variant(const QString &, Type = String); Variant &operator=(const Variant &); diff --git a/src/declarative/qml/qmlscriptparser.cpp b/src/declarative/qml/qmlscriptparser.cpp index ae4e903..ff19d25 100644 --- a/src/declarative/qml/qmlscriptparser.cpp +++ b/src/declarative/qml/qmlscriptparser.cpp @@ -488,12 +488,12 @@ QmlParser::Variant ProcessAST::getVariant(AST::ExpressionNode *expr) } else if (expr->kind == AST::Node::Kind_FalseLiteral) { return QmlParser::Variant(false); } else if (AST::NumericLiteral *lit = AST::cast(expr)) { - return QmlParser::Variant(lit->value); + return QmlParser::Variant(lit->value, asString(expr)); } else { if (AST::UnaryMinusExpression *unaryMinus = AST::cast(expr)) { if (AST::NumericLiteral *lit = AST::cast(unaryMinus->expression)) { - return QmlParser::Variant(-lit->value); + return QmlParser::Variant(-lit->value, asString(expr)); } } -- cgit v0.12