From a874cf581d48b12ccc2380ede5c22da1908fff71 Mon Sep 17 00:00:00 2001 From: Marco Benelli Date: Tue, 21 Nov 2017 10:00:44 +0100 Subject: [PATCH] Qml/js reformatter: use quotes in objects literals The reformatter used to remove the quotes that wraps the property name in object literals. This causes problem when the name is not a valid identifier, resulting in that valid code become invalid after reformatting. This patch forces wrapping of property's name in quotes: in this way, the reformatted code is consistent and it never get invalidated. However the resulting formatted code is not consisted with the one formatted by previous versions. Task-number: QTCREATORBUG-17455 Change-Id: I1e361102819055de210d6c81020f204c08aaa253 Reviewed-by: Markus Maier Reviewed-by: Lars Knoll --- src/libs/qmljs/qmljsreformatter.cpp | 2 ++ tests/auto/qml/reformatter/objectliteral.js | 14 +++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/libs/qmljs/qmljsreformatter.cpp b/src/libs/qmljs/qmljsreformatter.cpp index c78f52f5b8f..d582c3de94f 100644 --- a/src/libs/qmljs/qmljsreformatter.cpp +++ b/src/libs/qmljs/qmljsreformatter.cpp @@ -687,7 +687,9 @@ protected: for (PropertyAssignmentList *it = ast; it; it = it->next) { PropertyNameAndValue *assignment = AST::cast(it->assignment); if (assignment) { + out("\""); accept(assignment->name); + out("\""); out(": ", assignment->colonToken); accept(assignment->value); if (it->next) { diff --git a/tests/auto/qml/reformatter/objectliteral.js b/tests/auto/qml/reformatter/objectliteral.js index 9c8bfc46f1d..37f68633746 100644 --- a/tests/auto/qml/reformatter/objectliteral.js +++ b/tests/auto/qml/reformatter/objectliteral.js @@ -1,12 +1,12 @@ var x = { - x: 12, - y: { - x: 12, - y: "abc", - z: function (x) { + "x": 12, + "y": { + "x": 12, + "y": "abc", + "z": function (x) { return a }, - abc: 15 + "abc": 15 }, - z: 12 + "z": 12 }