scala-parser-combinators icon indicating copy to clipboard operation
scala-parser-combinators copied to clipboard

`phrase` method loses error context when successful parse result has lastFailure

Open i10416 opened this issue 2 years ago • 0 comments

When phrase is applied to successful parse result which has lastFailure, it returns only the original failure. I think it would be better to add a message that indicates the EOF is expected in the same way as it does when lastFailure is None.

For example, the following p fails because there are trailing spaces after d, but error message comes from c parse failure which doesn't have any hint for EOF.

val input = "a b d  "
val p = phase(/* a parser that parses `a b (c or d)`*/)

https://github.com/scala/scala-parser-combinators/blob/82d8524c7be74d15f29f5166293d8a7c7f3641ce/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala#L996

i10416 avatar May 30 '23 16:05 i10416