Escape ' in generated dbscheme names - #22636
Open
GiangTran-FinX wants to merge 1 commit into
Open
GiangTran-FinX wants to merge 1 commit into
GiangTran-FinX wants to merge 1 commit into
Conversation
`escape_name` maps `"` to `dquote` but leaves `'` untouched, so a grammar whose
node types contain a single quote generates an invalid dbscheme identifier.
Lua hits this: its `string` node has `'` as a delimiter token, and the generator
emits `@lua_string_'`, which the dbscheme parser rejects with
ERROR: token recognition error at: '''
No shipped language contains a bare `'` in a node type, which is why this has
not surfaced before. Found while building an out-of-tree extractor.
Adds the missing mapping and a test covering both string delimiters.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
escape_nameinshared/tree-sitter-extractor/src/node_types.rsmaps"todquotebut has no mapping for', so the character is passed through into the generated dbscheme identifier.A grammar whose node types contain a bare single quote therefore generates an invalid dbscheme. Lua is one: its
stringnode has'as a delimiter token, and the generator emitswhich the dbscheme parser rejects at database creation:
No language in this repository has a bare
'in its node types, which is presumably why this has not come up. I hit it while building an out-of-tree Lua extractor onshared/tree-sitter-extractor.Change
Adds the
squotemapping next todquote, plus a test covering both string delimiters.Testing
cargo testinshared/tree-sitter-extractorpasses (12 tests), andcargo fmt --checkis clean. With this applied, the Lua dbscheme generates andcodeql database create --language=luacompletes.