prevent crash in locStart/locEnd when node location is undefined
Prettier's formatWithCursor can crash if a node is missing a valid location object.
This patch adds null-safe checks and fallback handling in locStart and locEnd to avoid TypeErrors and ensure graceful degradation.
Can you give me a text XML file where this happens? I have not found an example. If there is a test you could add, that would be great. I don't want to be needlessly defensive here.
@kddnewton no worries. It happens with this test file, with my Prettier extension for Nova.
The error message I get can be found in the issue in the first comment: https://github.com/stonerl/nova-prettier-extension/issues/41#issue-2988303953
It could also be me implementing formatWithCursor incorrect, but I only get this error with the xml-plugin. Everything else works.
I don't think you're doing it wrong, but is it possible you're using an earlier version of the plugin? I cannot get it to crash with the latest version.
I'm using the 3.4.1 that's the latest one AFAIK.
I currently apply this patch when installing all npm packages, and it circumvents the error and allows formatting XML files.
This could be something that happens only in combination with Nova. I don't mind if this patch won't go into upstream, I can keep it as part of my extension.
I think I might know what's going on here. Nova is using Apple's JavaScript Core engine.
I assume you're using node.js for testing? It could be that this is just a platform specific error.
I don't think so, if I run this in bun or safari it passes. I would be shocked if this had anything to do with the runtime as it's a logic error. Are you 100% sure you're on the latest version?
Pretty sure:
nova-prettier-extension/prettier.novaextension on feature/config-file [!] is 📦 3.5.16 via ⬢ v23.11.0
➜ npm list
[email protected] /Users/toni/Developer/nova-prettier-extension/prettier.novaextension
├── @prettier/[email protected]
├── @prettier/[email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
Just an update. I ran into the same error while implementing pretter-plugin-astro and prettier-plugin-sh and had to fix it the same way.
I think I will leave this as part of your extension, because I cannot figure out how to reproduce this.