Bug Report
Code that used to compile fine in 5.0.0 now produces invalid declarations with type names suffixed in _1 which are not defined (see code below).
🔎 Search Terms
Branded type, suffix, emit
🕗 Version & Regression Information
- This changed between versions 5.0.0 and 5.1.3
⏯ Playground Link
Playground link with relevant code
💻 Code
// A simple branded type definitionexporttypeBrand<Base,Branding,ReservedNameextendsstring="__type__">=Base&{[KinReservedName]: Branding}&{__witness__: Base};// Defining a branded typeexporttypeBoundedInteger<LowerBoundextendsnumber,UpperBoundextendsnumber>=Brand<number,"BoundedInteger">;// Using in in a functionexportconsttoBoundedInteger=<LowerBoundextendsnumber,UpperBoundextendsnumber>(bounds: {lowerBound: LowerBound;upperBound: UpperBound;})=>(n: number): BoundedInteger<LowerBound,UpperBound>=>// Implementation doesn't matter here({}asany)🙁 Actual behavior
// v5.1.3// in D.TSexporttypeBrand<Base,Branding,ReservedNameextendsstring="__type__">=Base&{[KinReservedName]: Branding;}&{__witness__: Base;};exporttypeBoundedInteger<LowerBoundextendsnumber,UpperBoundextendsnumber>=Brand<number,"BoundedInteger">;exportdeclareconsttoBoundedInteger: <LowerBoundextendsnumber,UpperBoundextendsnumber>(bounds: {lowerBound: LowerBound;upperBound: UpperBound;// ❌ Cannot find name 'LowerBound_1'. Did you mean 'LowerBound'?})=>(n: number)=>BoundedInteger<LowerBound_1,UpperBound_1>;// 👆 This line🙂 Expected behavior
// v5.0.4// in D.TSexporttypeBrand<Base,Branding,ReservedNameextendsstring="__type__">=Base&{[KinReservedName]: Branding;}&{__witness__: Base;};exporttypeBoundedInteger<LowerBoundextendsnumber,UpperBoundextendsnumber>=Brand<number,"BoundedInteger">;exportdeclareconsttoBoundedInteger: <LowerBoundextendsnumber,UpperBoundextendsnumber>(bounds: {lowerBound: LowerBound;upperBound: UpperBound;})=>(n: number)=>BoundedInteger<LowerBound,UpperBound>;// 👆 This line
Bug Report
Code that used to compile fine in 5.0.0 now produces invalid declarations with type names suffixed in
_1which are not defined (see code below).🔎 Search Terms
Branded type, suffix, emit
🕗 Version & Regression Information
⏯ Playground Link
Playground link with relevant code
💻 Code
🙁 Actual behavior
🙂 Expected behavior