scala-ide / scalariform

Scala source code formatter
http://scala-ide.github.com/scalariform/
MIT License
527 stars 148 forks source link

Expected token SEMI but got Token(ARROW,=>,32,=>) #217

Closed landism closed 8 years ago

landism commented 8 years ago

the parser blows up on this code:

object Foo {
  Some(1) map { _ =>
    Some(2) getOrElse[Int](3)
  }
}
[info]   scalariform.parser.ScalaParserException: Expected token SEMI but got Token(ARROW,=>,32,=>)
[info]   at scalariform.parser.ScalaParser.scalariform$parser$ScalaParser$$accept(ScalaParser.scala:80)
[info]   at scalariform.parser.ScalaParser.acceptStatSep(ScalaParser.scala:84)
[info]   at scalariform.parser.ScalaParser.blockStatSeq(ScalaParser.scala:1688)
[info]   at scalariform.parser.ScalaParser.scalariform$parser$ScalaParser$$block(ScalaParser.scala:853)
[info]   at scalariform.parser.ScalaParser$$anonfun$38.apply(ScalaParser.scala:848)
[info]   at scalariform.parser.ScalaParser$$anonfun$38.apply(ScalaParser.scala:847)
[info]   at scalariform.parser.ScalaParser.inBraces(ScalaParser.scala:45)
[info]   at scalariform.parser.ScalaParser.scalariform$parser$ScalaParser$$blockExpr(ScalaParser.scala:846)
[info]   at scalariform.parser.ScalaParser.simpleExpr(ScalaParser.scala:769)
[info]   at scalariform.parser.ScalaParser.prefixExpr(ScalaParser.scala:749)
[info]   ...

It parses fine if you add a . before the getOrElse, i.e. Some(2).getOrElse

It would also be helpful if the line number could be included when such errors are thrown.

matthewfarwell commented 8 years ago

I'm getting this sort of error from users of scalastyle as well, for instance https://github.com/scalastyle/scalastyle/issues/195, https://github.com/scalastyle/scalastyle/issues/191.

jkinkead commented 8 years ago

Known issue (#163) - thanks for the report!