vscode-textmate icon indicating copy to clipboard operation
vscode-textmate copied to clipboard

JSON key `"id"` breaks the tokenizer

Open RedCMD opened this issue 5 months ago • 0 comments

The internal tokenizer uses the key "id" as a way to keep track of rules within a grammar However, the parser does not strip "id" keys from the grammar before parsing if a invalid "id" key is hit during tokenizing, it will lead to unpredictable tokenizing and the grammar partially failing

Luckily it seems no one has placed one in the wrong spot (having one at root is fine) tho I assume that's because they would have noticed their grammar no longer working when it is present https://github.com/search?q=path%3A*.tmLanguage.json+%22%5C%22id%5C%22%3A%22&type=code

{
	"scopeName": "source.lang",
	"patterns": [
		{
			"begin": "\"",
			"end": "\"",
			"name": "string",
			"patterns": [ { "include": "#backslash" } ]
		}
	],
	"repository": {
		"backslash": {
			"match": "\\\\.",
			"name": "constant.character.escape",
			"id": "JSON key \"id\" breaks this rule and its parent"
		}
	}
}

RedCMD avatar Mar 05 '24 09:03 RedCMD