[P2] Compiler: generic class-expression lexical super leaves constructor this unbound
I maintainer di solito rispondono entro 1 giorno
Una pull request collegata è già stata integrata.
- #3510 di @nickna — integrata
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 30/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- csharp, typescript
Direzione di ricerca
Start with the reported failure through $ClassDefinition.InitializeReceiver and the generic-owner guard; compare the behavior with the retained evidence in artifacts/p3-compiler/lexical-generic-boundary.ts, .log, .dll, and check-lexical-boundary-oracles.cjs. Reproduce the saved-IL execution failure and trace how lexical super() binds constructor this for generic class expressions. Done means the stated acceptance cases pass while complete saved-IL verification and native admission behavior are preserved.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Generic class-expression constructors still leave this unbound when super() runs through a lexical arrow.
const C = class<T> extends class { constructor() {} } {
value: T;
constructor(value: T) {
const initialize = () => super();
initialize();
this.value = value;
}
};
console.log(new C<number>(7).value);
TypeScript 6.0.3 ES2022 transpilation executed by Node prints 7. SharpTS accepts this TypeScript source, saves the assembly, and passes complete IL verification, but executing it throws guest ReferenceError: Must call super constructor before accessing this through $ClassDefinition.InitializeReceiver.
Verified with the CLI built from the open P3 batch after the managed nongeneric element transport work for #3477. Evidence is retained in artifacts/p3-compiler/lexical-generic-boundary.ts, .log, .dll, and check-lexical-boundary-oracles.cjs. No introducing-commit claim is made.
This is distinct from #3477's nongeneric user-class field/accessor/private-brand and constructor-parameter transport. The existing generic-owner guard was deliberately retained: invoking a helper on an open generic CLR owner from a nongeneric arrow needs an explicit canonical closed-owner binding, not removal of the guard or reliance on raw reflection lookup.
Acceptance: generic class-expression lexical super binds the same constructor this cell, initializes own elements once, preserves current constructor parameter bindings and new.target, and retains complete saved-IL verification. Cover different closed instantiations and inherited generic owners without broadening native admission.
- Lingua principale
- C#
- Stelle
- 156
- Fork
- 4
- Merge medio
- 16h 37m
- PR unite (30g)
- 41
Preparare l'ambiente
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 nickna/SharpTS
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 50/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di nickna/SharpTS
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
criticalmanufacturing/cli#909 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
RadicalCSG/com.chisel#312 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
eyalgolan/statecraft-israel#3093 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
DeveloperAcademy-POSTECH/2026-C6-M10-MUSA#677 ·
I maintainer di solito rispondono entro 1 giorno
-
REQ-13 : une demande En cours perd son responsable par un simple enregistrement, et reste En coursApertaa-corriger bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
christian-raj/S-Aloha#301 ·