Scala: ошибка «слишком много аргументов» в IntelliJ IDEA 11 с использованием Scala 2.7.7 - PullRequest
0 голосов
/ 13 октября 2011

IntelliJ 10.5 и 11 подсвечивают приведенное ниже выражение x (0) как ошибку, заявляя, что оно использует «Too many arguments». Однако при компиляции и запуске примера ошибки нет. Из-за обратной совместимости я должен использовать Scala 2.7.7. При использовании Scala 2.8 и выше IntelliJ перестает жаловаться.

object HelloWorld {
  def main(args: Array[String]) {
    val x = List("Hello World!")
    println(x(0))
  }
}

Есть предложения? Мой проект заполнен этими правильными выражениями, которые IntelliJ неправильно подсвечивает.

Ответы [ 2 ]

2 голосов
/ 14 октября 2011

Это из-за другого способа хранения специфичной для scala информации в байт-коде. До Scala 2.8 это был ScalaAttribute, теперь это ScalaAnnotation. Текущая версия декомпилятора не может работать должным образом с сгенерированным байт-кодом Scala 2.7. Если вы попытаетесь открыть любой такой файл класса в IntelliJ IDEA, вы увидите, что все методы не имеют параметров. Вы можете попытаться поместить в каталог плагинов Scala scalap.jar из старых дистрибутивов плагинов, но я не уверен насчет двоичной совместимости, поэтому единственный способ - использовать более ранние версии IDEA, использовать другую IDE или не использовать Scala 2.7.

2 голосов
/ 13 октября 2011

Если в любом случае scalac все правильно скомпилирует, это звучит как ошибка в плагине IDEA для Scala (что встречается довольно часто). Может случиться так, что он не слишком хорошо работает с Scala 2.7.7, и в этом случае может помочь использование более старой версии плагина (для более старого плагина может также потребоваться более старая версия IDEA; например, попробуйте IDEA 9 и его Scala плагин).

...