From 5ab043491b7ca54f2feeb479ca5638dbb1a81184 Mon Sep 17 00:00:00 2001 From: Teddy Katz Date: Tue, 29 Aug 2017 03:28:45 -0400 Subject: [PATCH] Fix: indent crash on sparse arrays with "off" option (fixes #9157) (#9166) --- lib/rules/indent.js | 11 ++++++++++- tests/lib/rules/indent.js | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/rules/indent.js b/lib/rules/indent.js index 8872836f4a4..07aa1e830a3 100644 --- a/lib/rules/indent.js +++ b/lib/rules/indent.js @@ -802,10 +802,19 @@ module.exports = { return; } elements.forEach((element, index) => { + if (!element) { + + // Skip holes in arrays + return; + } if (offset === "off") { + + // Ignore the first token of every element if the "off" option is used offsets.ignoreToken(getFirstToken(element)); } - if (index === 0 || !element) { + + // Offset the following elements correctly relative to the first element + if (index === 0) { return; } if (offset === "first" && tokenInfo.isFirstTokenOfLine(getFirstToken(element))) { diff --git a/tests/lib/rules/indent.js b/tests/lib/rules/indent.js index 7ea3c189053..1339c16f642 100644 --- a/tests/lib/rules/indent.js +++ b/tests/lib/rules/indent.js @@ -3222,6 +3222,10 @@ ruleTester.run("indent", rule, { code: "[,]", options: [2, { ArrayExpression: "first" }] }, + { + code: "[,]", + options: [2, { ArrayExpression: "off" }] + }, { code: unIndent` [