GitNexus/docs/languages
Mick Cooney abcc165088 fix(r): decode string literals in the rename dynamic-lookup guard
The R rename guard compared the raw text of each `string_content` node with the
old and new name. An escaped spelling (`"f\u006fo"`, `'f\x6fo'`, octal) keeps
its escape inside string_content, and a raw string (`r"(foo)"`) has no
string_content node at all, so renaming `foo` proceeded while a get() or
do.call() on the escaped or raw spelling still resolved the old name.

Reproduction: 10 cases in the new test/unit/r-rename-string-guard.test.ts
returned 'ok' instead of unsupported_occurrence on the unfixed provider, and the
two new fixtures string-lookup-escaped and string-lookup-raw (rename-provider-r)
renamed successfully on the unfixed build. The guard now decodes each `string`
node (escapes, octal, raw strings) and compares the value.

docs/languages/r-provider.md said "spelled as a string literal"; it now states
the whole-value rule and what is still not detected (substring, paste0(),
non-indexed files).
2026-10-15 20:42:05 +01:00
..
jupyter-notebook.md feat: index Jupyter notebooks as Python (#3381) 2026-09-27 05:54:37 +00:00
local-import-scoping.md fix(scope): resolve local imports by lexical ownership (#3532) 2026-10-10 08:13:55 +03:00
objective-c-provider.md feat(indexing): add Objective-C semantic indexing support (#3179) 2026-09-09 09:40:21 +00:00
r-provider.md fix(r): decode string literals in the rename dynamic-lookup guard 2026-10-15 20:42:05 +01:00