🐛 Register-reference validation is incomplete in the parser
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 66/100
Direzione di ricerca
Inizia tracciando preprocessCode e i punti di ingresso menzionati validateTargets, parseBitRegisterRef e parseClassicConditionExpression, usando definedRegisters per comprendere i controlli esistenti sui qubit. Aggiungi la validazione dell’identificatore, dell’esistenza del registro, dei limiti dell’indice e dell’intervallo di expectedValue per entrambi i percorsi rilevanti. Il lavoro è completato quando i riferimenti malformati e i confronti impossibili vengono rifiutati, mentre i casi elencati come fuori ambito rimangono invariati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
🤖 AI text below 🤖
Problem statement
The parser has three related gaps in how it validates register references and comparison values:
-
Well-formed identifier checking. Neither
validateTargets(for qubit targets in gate calls) norparseBitRegisterRef(for classical bits inifconditions) rejects malformed register names on lexical grounds. Inputs likec2](dangling]) or@#(not an identifier at all) slip through the shape check. On the qubit side the eventualdefinedRegisterslookup rejects them indirectly with an "unknown register" error; on the classical side there is no lookup, so the error surfaces even later in the DD backend. -
Classical bit reference against declared registers.
validateTargetsverifies that qubit targets exist indefinedRegistersand that the bit index fits within the register size. Nothing analogous runs for the register mentioned in anifcondition:if (nonexistent == 1)andif (c[999] == 1)(withcreg c[3]) both parse without complaint. -
expectedValuewithin the register's representable range.if (c == 999)oncreg c[3](3 bits, values 0 to 7) is impossible to satisfy but the parser accepts it. The comparison always evaluates to false at runtime.
Surfaced during the review of PR #463.
Proposed solution
Add the three missing checks and share them where the same code path applies to qubits and classical bits:
- Extract a small
isValidIdentifierhelper (letter or underscore followed by letters, digits, or underscores). Use it invalidateTargets(before thedefinedRegisterslookup) and inparseBitRegisterRef(before returning the reference). - Extend
preprocessCodeso it also runs an existence + bounds check on the register mentioned in the condition of anif, using the samedefinedRegistersmap already available there. The exact placement (insideparseClassicConditionExpressionor a separatevalidateClassicConditionpass) is an implementation detail. - Reject
expectedValuevalues that exceed what the referenced register can hold (whole register or single bit).
Out of scope
- Reserved-word checking (
qreg,creg,measure, etc.). Separate semantic concern. - Compound expressions in the condition (out of scope of the parser as a whole today).
- Lingua principale
- C++
- Stelle
- 21
- Fork
- 8
- Merge medio
- 5h 17m
- PR unite (30g)
- 21
Preparare l'ambiente
- Nessun Dockerfile né 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 munich-quantum-toolkit/debugger
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 84/100
munich-quantum-toolkit/debugger#469 ·
I maintainer di solito rispondono entro 1 giorno
-
✨ Improve CLI UX: line editing, function-key shortcuts, and help barForse già presa @rturrado l’ha presa 31 giorni fa. Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
munich-quantum-toolkit/debugger#467 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
munich-quantum-toolkit/debugger#465 ·
I maintainer di solito rispondono entro 1 giorno
-
c++ enhancement help wanted
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
munich-quantum-toolkit/debugger#168 ·
I maintainer di solito rispondono entro 1 giorno
-
Dependency DashboardApertadependencies
Difficoltà 5/5 Più di una settimana Idoneità per principianti 10/100
munich-quantum-toolkit/debugger#55 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di munich-quantum-toolkit/debugger
Issue simili
-
agent:Windows bug code-review LOW testing
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
I maintainer di solito rispondono entro 1 giorno
-
[Cleanup] Include the public header in work_split.cppForse già presa @blozano-tt l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
tenstorrent/tt-metal#60850 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
beehive-lab/TornadoVM#1248 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
SimVascular/svZeroDSolver#253 ·
-
core: RAC_LLM_OPTIONS_DEFAULT.min_p disagrees with the IDL's annotated defaultForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug core p3
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
RunanywhereAI/runanywhere-sdks#1083 ·
I maintainer di solito rispondono entro 5 giorni