scala/scala-parser-combinators

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

i10416 opened this issue · 0 comments

i10416 commented

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)`*/)