Как передать функцию в качестве параметра с многострочным массивом в IDEA?

Предположим, у меня есть эта функция в файле coffeescript

test = (arr, fn) ->
    console.log item for item in arr
    fn()

Вот как я это называю

test [1, 2, 3, 4, 5], ->
    console.log "start"
    # function body
    console.log "finish" 

Все в порядке, пока массив не станет слишком длинным, и я хочу разбить его на несколько строк. Как это

test ["first element here",
      "second element here",
      "third element here",
      "fourth element here",
      "fifth element here"], ->
    console.log "start"
    # function body
    console.log "finish"

Это верно, так как компилятор coffeescript компилирует его именно так, как я ожидаю, но IDEA говорит, что неожиданный отступ в console.log "start" линия. Я нажимаю Ctrl+Alt+L, и IDEA дает мне это

test ["first element here",
      "second element here",
      "third element here",
      "fourth element here",
      "fifth element here"], ->
console.log "start"
# function body
console.log "finish"

что неверно, так как в этом случае пустая функция передается в качестве параметра. Это ошибка, или я могу исправить это самостоятельно?

3 ответа

Решение

Поддержка JetBrains сказала мне, что это ошибка, поэтому я открыл здесь проблему.

Возможно, вам придется добавить немного отступ в тело функции, чтобы оно заработало:

test ["first element here",
      "second element here",
      "third element here",
      "fourth element here",
      "fifth element here"], ->
       console.log "start"
       # function body
       console.log "finish"
#      ^ This column is indented two from the start of the array
#    ^ Array starts here

По крайней мере, это работает для меня в IntelliJ.

Возможно, ошибка в плагине CoffeeScript IDEA, как упомянуто пользователем1737909.

Но если вы хотите решить эту проблему прямо сейчас, я бы рекомендовал просто использовать переменную для массива и двигаться дальше:

arr = [
  "first element here"
  "second element here"
  "third element here"
  "fourth element here"
  "fifth element here"
]

test arr, ->
  console.log "start"
  # function body
  console.log "finish"
Другие вопросы по тегам