#496 prints the transform's parameter type into .d.ts. It keeps a single-line block comment in front of a list element. ngtsc keeps more than that, and in some U+2028/U+2029 cases prints the comment twice. Only the comments in the .d.ts text differ. The type is the same.
Repro (each line is the parameter type of @Input({transform: (v: <TYPE>) => 1}) a)
| # |
<TYPE> in source |
OXC (#504 tip) |
ngtsc 22.1.7 |
| a |
string /** doc */ |
string |
string /** doc */ |
| b |
string | number /** doc */ |
string | number |
string | number /** doc */ |
| c |
\n /** doc */\n string (comment on its own line) |
string |
\n /** doc */\n string |
| d |
string | /* a\n b */ number |
string | number |
string | /* a\n b */ number |
| e |
Array</* a\n b */ string> |
Array<string> |
Array</* a\n b */ string> |
| f |
Array<
/* c */\nstring | number> |
Array<string | number> |
Array</* c */ /* c */ string | number> |
| g |
Array<
/* c */\nstring | number> |
Array<string | number> |
Array</* c */ /* c */ string | number> |
Cases where they already match: Array</* c */ string>, string /* keep */ \| number, /* a\n b */ string (both drop it), string /* a\n b */ (both drop it), and { a: 1; // x
b: ... }.
Full source for case a:
import {Directive, Input} from '@angular/core';
@Directive({selector: '[d]'})
export class D {
@Input({transform: (v: string /** doc */) => 1}) a = 0;
}
Where
crates/oxc_angular_compiler/src/directive/dts_type.rs (added in #496): leading_comments / same_line_comments. Only the comments on the same line in front of a list element are kept. Trailing comments, comments on their own line and comments that span lines are dropped.
On main?
No. Main prints unknown for these fields. This gap comes with #496.
Direction
Copy the rules of TypeScript's emitter for leading and trailing comments on type nodes, including the U+2028/U+2029 line-break cases. Test against ngtsc output.
#496 prints the transform's parameter type into
.d.ts. It keeps a single-line block comment in front of a list element. ngtsc keeps more than that, and in some U+2028/U+2029 cases prints the comment twice. Only the comments in the.d.tstext differ. The type is the same.Repro (each line is the parameter type of
@Input({transform: (v: <TYPE>) => 1}) a)<TYPE>in sourcestring /** doc */stringstring /** doc */string | number /** doc */string | numberstring | number /** doc */\n /** doc */\n string(comment on its own line)string\n /** doc */\n stringstring | /* a\n b */ numberstring | numberstring | /* a\n b */ numberArray</* a\n b */ string>Array<string>Array</* a\n b */ string>Array< /* c */\nstring | number>Array<string | number>Array</* c */ /* c */ string | number>Array< /* c */\nstring | number>Array<string | number>Array</* c */ /* c */ string | number>Cases where they already match:
Array</* c */ string>,string /* keep */ \| number,/* a\n b */ string(both drop it),string /* a\n b */(both drop it), and{ a: 1; // x b: ... }.Full source for case a:
Where
crates/oxc_angular_compiler/src/directive/dts_type.rs(added in #496):leading_comments/same_line_comments. Only the comments on the same line in front of a list element are kept. Trailing comments, comments on their own line and comments that span lines are dropped.On main?
No. Main prints
unknownfor these fields. This gap comes with #496.Direction
Copy the rules of TypeScript's emitter for leading and trailing comments on type nodes, including the U+2028/U+2029 line-break cases. Test against ngtsc output.