partial: host binding map keys are not always quoted like ngtsc (`click:` vs `"click":`)

Aperta Adatta ai principianti
#686 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
76/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
angular, rust
Ambito
compilers, testing

Direzione di ricerca

Inizia con partial/directive.rs e partial/component.rs, in particolare con is_unsafe_object_key, e confronta la gestione delle chiavi dei binding host con il comportamento di ngtsc descritto nell’issue. Poi aggiorna le aspettative in partial_directive_test.rs e partial_component_test.rs; il lavoro è concluso quando le chiavi semplici dei binding host sono racchiuse tra virgolette nell’output parziale e i test lo rispecchiano.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Found while reviewing #682. Text-only difference: both linkers read the result the same way.

Angular (compileHostMetadata → toOptionalLiteralMap, compiler.mjs:28098) sets quoted: true on every key of host.attributes / listeners / properties.

Oxc (partial/directive.rs / partial/component.rs, is_unsafe_object_key) only quotes keys with . or -, or keys the emitter finds are not identifiers.

@Directive({ selector: '[d]', host: { '(click)': 'a()', '[disabled]': 'b', 'role': 'x' } })
export class D {}
compilationMode: 'partial' output
ngtsc 22.2.2 host: { attributes: { "role": "x" }, listeners: { "click": "a()" }, properties: { "disabled": "b" } }
Oxc host:{attributes:{role:"x"},listeners:{click:"a()"},properties:{disabled:"b"}}

Impact: a byte-for-byte diff against ngtsc output (parity tests, fuzz diffing) flags every directive with a simple host binding. The tests in partial_directive_test.rs / partial_component_test.rs pin the unquoted form, so they would change with a fix.

Lingua principale
Rust
Stelle
245
Fork
26
Merge medio
1g 42m
PR unite (30g)
83

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di voidzero-dev/oxc-angular-compiler

Tutte le issue di voidzero-dev/oxc-angular-compiler

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.