h0tk3y / better-parse

A nice parser combinator library for Kotlin
Apache License 2.0
421 stars 42 forks source link

Parser works in JS development mode but not in JS production mode #66

Open avwie opened 1 year ago

avwie commented 1 year ago

I've made a toy language: https://github.com/avwie/borklang

Everything works correctly on the JVM and when running jvmTest and jsTest. Also my web project is working correctly when I use browserDevelopmentRun.

However, when I use browserDistributionRun or make a web-distributable, the tokenizer/parsers don't work correctly.

For instance:

fn fib = (n) ->  {
  if (n < 2) n else fib(n - 1) + fib(n - 2)
}

fib(10)

This returns 55 in development mode, but in production mode I get: Invalid number format: 'fi'

I found no way on how to debug this, because I loose a lot of information with productionRun.

avwie commented 1 year ago

It's actually pretty easy to reproduce. Just pick the BooleanExpression demo and run it in a nodeJS target in production.

ParseException: Could not parse input: UnparsedRemainder(startsWith=id@2 for " &" at 1 (1:2))

So this library does not work in JS production environments.

avwie commented 1 year ago

Fixed in https://github.com/h0tk3y/better-parse/pull/67