fstirlitz / luaparse

A Lua parser written in JavaScript
https://fstirlitz.github.io/luaparse/
MIT License
459 stars 91 forks source link

Change parse error type from SyntaxError to something else #67

Open fstirlitz opened 5 years ago

fstirlitz commented 5 years ago

The SyntaxError type is reserved for errors raised by the host runtime (i.e. JavaScript), not errors raised by user code. Using SyntaxError to signal errors in inputs to the Lua parser causes problems in some engines, like the one worked around in 8536fdfafc7b1823d16e3012ad0ba26dbc795d5b.

Fixing this will be a breaking change, given that some downstream users already rely on the error to be an instance of SyntaxError, e.g. the ACE editor.

Related PR: #33.

fstirlitz commented 5 years ago

I think I am going to solve this and #9 in one go. In other words, I will create a callback that shall receive diagnostics from the parser as a structured object; if the callback is absent, the parser will fall back to throwing a SyntaxError as before.

fstirlitz commented 3 years ago

As of 6f8a7ea28c04f4e31d6ab88b9ce56f39359589d9, the error type thrown by the parser is exported as a SyntaxError export. Users are encouraged to use that export instead of directly referring to the engine’s SyntaxError to detect errors thrown by luaparse, to minimise future breakage.