Lexer counts a leading tab as 4 columns in token spans; LSP rename then edits the wrong bytes
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 72/100
Direzione di ricerca
Start at the lexer’s token span and column tracking, then follow how the LSP rename operation consumes those spans. Run or extend the rename tests for a tab-indented identifier and an identifier after a leading tab inside an f-string. Done means both renames produce programs with identical output and token positions use source byte offsets.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Found by /code-review on PR #1331. The problem predates that PR, which extends it to f-strings.
At line start, the lexer counts a tab as 4 columns for indentation, and it records token columns in those units rather than in bytes. So the token spans that the LSP uses for rename, cursor lookup and semantic tokens are off by 3 per leading tab:
- on tab-indented lines (pre-existing);
- after #1331, for an identifier right after a leading tab inside an f-string's braces:
print of f"{<TAB>count}".
A rename then rewrites the wrong bytes.
Done when
- Token columns and lengths are byte offsets in the source (indentation width is tracked separately from the column), or the LSP converts them correctly.
- Rename tests: renaming an identifier on a tab-indented line, and after a leading tab inside
f"{...}", produces a program with identical output.
- Lingua principale
- C
- Stelle
- 3
- Fork
- 7
- Merge medio
- 3h 56m
- PR unite (30g)
- 102
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di InauguralSystems/EigenScript
-
area:lint-tooling bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
InauguralSystems/EigenScript#1340 ·
I maintainer di solito rispondono entro 1 giorno
-
area:stdlib found-by:code-review kind:silent-wrong
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
InauguralSystems/EigenScript#1338 ·
I maintainer di solito rispondono entro 1 giorno
-
area:lint-tooling found-by:critic kind:docs-drift
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
InauguralSystems/EigenScript#1335 ·
I maintainer di solito rispondono entro 1 giorno
-
area:ci found-by:critic kind:gate-defect
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
InauguralSystems/EigenScript#1311 ·
I maintainer di solito rispondono entro 1 giorno
-
enrolment: decide test_gc_runner_controls.py (exempt vs enrol) and whether floors need a ratchetApertaarea:gates found-by:critic kind:decision
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
InauguralSystems/EigenScript#1280 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di InauguralSystems/EigenScript
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
johnsonjh/emu2-cpm86#68 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Zenmap CrashApertaZenmap
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
fastfetch-cli/fastfetch#2619 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
Template: Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
betaflight/betaflight#15759 ·
I maintainer di solito rispondono entro 1 giorno