Skip to content
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

bug(linter) incorrect fixer for no-useless-escape #5227

Open
camc314 opened this issue Aug 26, 2024 · 2 comments
Open

bug(linter) incorrect fixer for no-useless-escape #5227

camc314 opened this issue Aug 26, 2024 · 2 comments
Labels
C-bug Category - Bug good first issue Experience Level - Good for newcomers

Comments

@camc314
Copy link
Collaborator

camc314 commented Aug 26, 2024

const regex = /(https?:\/\/github\.com\/(([^\s]+)\/([^\s]+))\/([^\s]+\/)?(issues|pull)\/([0-9]+))|(([^\s]+)\/([^\s]+))?#([1-9][0-9]*)($|[\s\:\;\-\(\=])/;

is being fixed to

const regex = /(https?:\/\/github\.com\/(([^\s]+)\/([^\s]+))\/([^\s]+\/)?(issues|pull)\/([0-9]+))|(([^\s]+)\/([^\s]+))?#([1-9][0-9]*)($|[\s:;-(=])/;

which is an invalid regex


  × Invalid regular expression: Character class range out of order
   ╭─[./src/vs/workbench/api/test/browser/extHostDocumentData.test.ts:2:142]
 1 │ const regex = /(https?:\/\/github\.com\/(([^\s]+)\/([^\s]+))\/([^\s]+\/)?(issues|pull)\/([0-9]+))|(([^\s]+)\/([^\s]+))?#([1-9][0-9]*)($|[\s:;-(=])/;
   ·                                                                                                                                              ──
   ╰────

Finished in 3ms on 1 file with 93 rules using 12 threads.
Found 0 warnings and 1 error.
@camc314 camc314 added the C-bug Category - Bug label Aug 26, 2024
@camc314 camc314 self-assigned this Aug 26, 2024
@camc314
Copy link
Collaborator Author

camc314 commented Aug 26, 2024

looks like eslint doesn't report an error for this case (escacpe on the \-), but we do.

gonna leave the fixer alone and fix this false positive

oxlint >> https://oxc-project.github.io/oxc/playground/?code=3YCAAICggICAgICAgICxG0qZRraXTnShZDZHIj18ztvE%2FrAEWU6BK3tu8l%2BruCZLm6bBN39t5QCA

eslint >> https://eslint.org/play/#eyJ0ZXh0IjoiY29uc3QgcmVnZXgwID0gL1tcXHNcXDpcXDtcXC1cXChcXD1dLzsiLCJvcHRpb25zIjp7InJ1bGVzIjp7Im5vLXVzZWxlc3MtZXNjYXBlIjpbImVycm9yIl19LCJsYW5ndWFnZU9wdGlvbnMiOnsicGFyc2VyT3B0aW9ucyI6eyJlY21hRmVhdHVyZXMiOnt9fX19fQ==

Screenshot 2024-08-26 at 15 43 11

minimal test case:

/[\s\-(]/;

update: i think it's going to be better if we wait till the linter has access to the pared regex ast and do it that way, else it's just going to be duplicating some of the regex parsing code

@camc314 camc314 removed their assignment Aug 26, 2024
@Boshen
Copy link
Member

Boshen commented Sep 9, 2024

I think it's going to be better if we wait till the linter has access to the pared regex ast and do it that way, else it's just going to be duplicating some of the regex parsing code

We do now 😁

@Boshen Boshen added the good first issue Experience Level - Good for newcomers label Sep 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category - Bug good first issue Experience Level - Good for newcomers
Projects
None yet
Development

No branches or pull requests

2 participants