-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Native and WASM parsers behave differently #69
Comments
That's interesting, you can try running a |
Not quite sure how to run a -DDEBUG build? You should be able to run these tests yourself, though. Lemme dig up the commands. |
Check out #68 and run |
I'll give it a go. I've documented |
Parsing |
I've created a list of the (smallest to largest) files that fail to parse under wasm:
output: here The first file passes when you delete the If you can spot anything that those files have in common, and others don't, let me know |
One likely reason for the behavior difference is that tree-sitter’s get_column function currently returns a byte count, not a character count. The JavaScript bindings encode strings as UTF16, so most characters are 2 bytes instead of 1, as in UTF8. The get_column method is still a bit experimental, and we’ve talked about changing it back to returning a character count. In the meantime, scanners should make sure to not make assumptions about the absolute values that method returns, but instead just compare the values to each other. Not sure if that’s the problem here, but wanted to raise it, since it’s gotcha currently, and this is one of the few grammars affected. |
Thanks @maxbrunsfeld, that sounds very plausible. I wonder if I edit they didn't |
It's about time I get off my butt and write good tests for my codepoint-based |
I can confirm that this is mostly fixed using the latest version, the only file that doesn't parse using the web assembly bindings is <examples/haskell-language-server/test/testdata/format/BrittanyCRLF.formatted_range.hs>. |
Ok great! If anyone gets a chance, it'd be super useful to extract from that file a minimal example of how the WASM and native parsers behave differently. At this point, if they still behave differently, that seems most likely to be a bug in Tree-sitter. |
For instance, if we parse
examples/postgrest/test/Main.hs
:haskell
;ERROR
.In this case, the problem seems to be absent module headers.
The text was updated successfully, but these errors were encountered: