From 057e37dba9e06c70012ed36e5998880ac277c06f Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Wed, 18 Apr 2018 09:38:39 +0200 Subject: Fix console.log for sequence types such as QStringList The output should be the same as if we were printing an array, with brackets. Task-number: QTBUG-67776 Change-Id: I942df66a2908f82ea8ba1ce65676413569cf6f02 Reviewed-by: Mitch Curtis Reviewed-by: Lars Knoll --- src/qml/jsruntime/qv4jsonobject.cpp | 2 +- src/qml/jsruntime/qv4managed_p.h | 1 + src/qml/qml/v8/qqmlbuiltinfunctions.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src/qml') diff --git a/src/qml/jsruntime/qv4jsonobject.cpp b/src/qml/jsruntime/qv4jsonobject.cpp index c3569c29d2..7d2bb18ead 100644 --- a/src/qml/jsruntime/qv4jsonobject.cpp +++ b/src/qml/jsruntime/qv4jsonobject.cpp @@ -743,7 +743,7 @@ QString Stringify::Str(const QString &key, const Value &v) o = value->asReturnedValue(); if (o) { if (!o->as()) { - if (o->as() || o->isListType()) { + if (o->isArrayLike()) { return JA(o.getPointer()); } else { return JO(o); diff --git a/src/qml/jsruntime/qv4managed_p.h b/src/qml/jsruntime/qv4managed_p.h index d404b66419..32688d1b71 100644 --- a/src/qml/jsruntime/qv4managed_p.h +++ b/src/qml/jsruntime/qv4managed_p.h @@ -212,6 +212,7 @@ public: inline ExecutionEngine *engine() const { return internalClass()->engine; } bool isListType() const { return d()->internalClass->vtable->type == Type_QmlSequence; } + bool isArrayLike() const { return isArrayObject() || isListType(); } bool isArrayObject() const { return d()->internalClass->vtable->type == Type_ArrayObject; } bool isStringObject() const { return d()->internalClass->vtable->type == Type_StringObject; } diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp index 608582253b..571f0af9d4 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp +++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp @@ -1554,7 +1554,7 @@ static ReturnedValue writeToConsole(const FunctionObject *b, const Value *, cons if (i != start) result.append(QLatin1Char(' ')); - if (argv[i].as()) + if (argv[i].isManaged() && argv[i].managed()->isArrayLike()) result += QLatin1Char('[') + argv[i].toQStringNoThrow() + QLatin1Char(']'); else result.append(argv[i].toQStringNoThrow()); -- cgit v1.2.3