From a79a444bac643c983282b4eb5fa04f37b3954d11 Mon Sep 17 00:00:00 2001 From: Lucas Azzola Date: Sun, 11 Jun 2017 14:19:50 +1000 Subject: [PATCH] fix(variable-declarator): indent first variable in one-var scenario, fixes #2072 (#2095) --- src/printer.js | 10 +++++++++- .../__snapshots__/jsfmt.spec.js.snap | 20 +++++++++++++++++++ tests/variable_declarator/multiple.js | 10 ++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/printer.js b/src/printer.js index ad9ec8bc..363813cd 100644 --- a/src/printer.js +++ b/src/printer.js @@ -1226,10 +1226,18 @@ function genericPrintNoParens(path, options, print, args) { const hasValue = n.declarations.some(decl => decl.init); + let firstVariable; + if (printed.length === 1) { + firstVariable = printed[0]; + } else if (printed.length > 1) { + // Indent first var to comply with eslint one-var rule + firstVariable = indent(printed[0]); + } + parts = [ isNodeStartingWithDeclare(n, options) ? "declare " : "", n.kind, - printed.length ? concat([" ", printed[0]]) : "", + firstVariable ? concat([" ", firstVariable]) : "", indent( concat( printed diff --git a/tests/variable_declarator/__snapshots__/jsfmt.spec.js.snap b/tests/variable_declarator/__snapshots__/jsfmt.spec.js.snap index d31265da..a4bba2b8 100644 --- a/tests/variable_declarator/__snapshots__/jsfmt.spec.js.snap +++ b/tests/variable_declarator/__snapshots__/jsfmt.spec.js.snap @@ -13,6 +13,16 @@ var a, b, c; let superSuperSuperLong1, superSuperSuperLong2, superSuperSuperLong3, superSuperSuperLong4; for (var i = 0, len = arr.length; i < len; i++) {} + +var templateTagsMapping = { + '%{itemIndex}': 'index', + '%{itemContentMetaTextViews}': 'views' + }, + separator = '', + templateTagsList = $.map(templateTagsMapping, function(value, key) { + return key; + }), + data; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ var assert = require("assert"), lookup = require("../lookup"); @@ -30,6 +40,16 @@ let superSuperSuperLong1, for (var i = 0, len = arr.length; i < len; i++) {} +var templateTagsMapping = { + "%{itemIndex}": "index", + "%{itemContentMetaTextViews}": "views" + }, + separator = '', + templateTagsList = $.map(templateTagsMapping, function(value, key) { + return key; + }), + data; + `; exports[`string.js 1`] = ` diff --git a/tests/variable_declarator/multiple.js b/tests/variable_declarator/multiple.js index f96dbdb2..8fe19e3f 100644 --- a/tests/variable_declarator/multiple.js +++ b/tests/variable_declarator/multiple.js @@ -10,3 +10,13 @@ var a, b, c; let superSuperSuperLong1, superSuperSuperLong2, superSuperSuperLong3, superSuperSuperLong4; for (var i = 0, len = arr.length; i < len; i++) {} + +var templateTagsMapping = { + '%{itemIndex}': 'index', + '%{itemContentMetaTextViews}': 'views' + }, + separator = '', + templateTagsList = $.map(templateTagsMapping, function(value, key) { + return key; + }), + data;