fix(emit): arrow functions in metadata lose default parameter values and `async`
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 58/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- rust, typescript
- Ambito
- compilers
Direzione di ricerca
Start in crates/oxc_angular_compiler/src/output/oxc_converter.rs, especially convert_arrow_function_expression, and inspect ArrowFunctionExpr in output/ast.rs; the issue notes that the function-expression path may have the same problem. Reproduce with the TypeScript examples and compare emitted arrows against the expected output shown. Done means defaults and async are preserved or the documented raw-source fallback is used.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Arrows copied from decorator metadata into the output lose parameter defaults and the async keyword. This changes runtime behavior: an async factory returns a value instead of a Promise, and a default value is no longer applied.
Repro
import {Component, Directive, Input} from '@angular/core';
@Directive({selector: '[d]'})
export class D {
@Input({transform: (v: string = 'a') => v.length}) a = 0;
@Input({transform: async (v: any) => 1}) b: any;
}
@Component({selector: 'c', template: '', providers: [{provide: 'T', useFactory: async (x: number = 1) => x}]})
export class C {}
OXC (main and #504 tip)
inputs:{a:[2,"a","a",(v) =>v.length],b:[2,"b","b",(v) =>1]}
// setClassMetadata
{a:[{type:Input,args:[{transform:(v) =>v.length}]}],b:[{type:Input,args:[{transform:(v) =>1}]}]}
i0.ɵɵProvidersFeature([{provide:"T",useFactory:(x) =>x}])
ngtsc 22.1.7
inputs: { a: [2, "a", "a", (v = 'a') => v.length], b: [2, "b", "b", async (v) => 1] }
{ a: [{ type: Input, args: [{ transform: (v = 'a') => v.length }] }], b: [{ type: Input, args: [{ transform: async (v) => 1 }] }] }
i0.ɵɵProvidersFeature([{ provide: 'T', useFactory: async (x = 1) => x }])
The .d.ts is already correct on the stack (ngAcceptInputType_a: string, ngAcceptInputType_b: any).
Where
crates/oxc_angular_compiler/src/output/oxc_converter.rs (main), convert_arrow_function_expression:
- It reads only
param.pattern(aBindingIdentifier) and ignores the parameter's default value. - It ignores
arrow.r#async.
ArrowFunctionExpr (output/ast.rs) has no field for either. The function-expression path is worth checking for the same issue.
On main?
Yes.
Direction
Add async and default values to the output AST, or fall back to raw source (types stripped) when the arrow uses either, as is already done for destructured params.
- Lingua principale
- Rust
- Stelle
- 232
- Fork
- 21
- Merge medio
- 1g 16h
- PR unite (30g)
- 62
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
- 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 voidzero-dev/oxc-angular-compiler
-
fix(directive): input names with lone surrogates are emitted in oxc's internal U+FFFD encodingApertabug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
voidzero-dev/oxc-angular-compiler#505 ·
I maintainer di solito rispondono entro 1 giorno
-
bug rust
Difficoltà 4/5 3-5 giorni Idoneità per principianti 56/100
voidzero-dev/oxc-angular-compiler#313 ·
I maintainer di solito rispondono entro 1 giorno
-
Support useDefineForClassFields: false (Class Field Lowering)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
voidzero-dev/oxc-angular-compiler#73 · 11 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Angular 21.2.0 + @oxc-angular/vite 0.0.7 SSR runtime parity regressions (RouterLinkActive, Forms DI, Apollo DI) require app-level shimsForse di nuovo libera @Brooooooklyn l’ha presa 218 giorni fa e non c’è nessuna pull request aperta. Aperta
voidzero-dev/oxc-angular-compiler#61 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Angular 21.2.0 + @oxc-angular/vite 0.0.7 SSR: AngularNodeAppEngine is unusable (missing app-engine manifest)Forse di nuovo libera @Brooooooklyn l’ha presa 218 giorni fa e non c’è nessuna pull request aperta. Aperta
voidzero-dev/oxc-angular-compiler#60 · 4 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di voidzero-dev/oxc-angular-compiler
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
element-hq/lk-jwt-service#248 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
pact-foundation/pact-cli#154 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
antithesishq/bombadil#361 ·
I maintainer di solito rispondono entro 1 giorno
-
test(executor_l0): assert execute() TaskOutcome, not only bus events / 断言 execute() 返回的 TaskOutcomeApertatype:debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
skaiy/wild_agentos#425 ·
I maintainer di solito rispondono entro 1 giorno