Skip to content

Commit 6876e98

Browse files
committed
add a test with a non-fixed sized tuple
1 parent c66fd92 commit 6876e98

3 files changed

+115
-33
lines changed

tests/baselines/reference/mappedTypeTupleConstraintTypeParameterInNameType.symbols

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ declare const i64Decoder: Decoder<bigint>;
8080
>i64Decoder : Symbol(i64Decoder, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 27, 13))
8181
>Decoder : Symbol(Decoder, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 0, 0))
8282

83-
const structDecoder = new StructDecoder([
84-
>structDecoder : Symbol(structDecoder, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 29, 5))
83+
const structDecoder1 = new StructDecoder([
84+
>structDecoder1 : Symbol(structDecoder1, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 29, 5))
8585
>StructDecoder : Symbol(StructDecoder, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 16, 2))
8686

8787
["a", i32Decoder],
@@ -92,22 +92,58 @@ const structDecoder = new StructDecoder([
9292

9393
]);
9494

95-
const struct = structDecoder.decode(new ArrayBuffer(100));
96-
>struct : Symbol(struct, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 34, 5))
97-
>structDecoder.decode : Symbol(Decoder.decode, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 2, 26))
98-
>structDecoder : Symbol(structDecoder, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 29, 5))
95+
const struct1 = structDecoder1.decode(new ArrayBuffer(100));
96+
>struct1 : Symbol(struct1, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 34, 5))
97+
>structDecoder1.decode : Symbol(Decoder.decode, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 2, 26))
98+
>structDecoder1 : Symbol(structDecoder1, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 29, 5))
9999
>decode : Symbol(Decoder.decode, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 2, 26))
100100
>ArrayBuffer : Symbol(ArrayBuffer, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
101101

102-
const v: number = struct.a;
103-
>v : Symbol(v, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 36, 5))
104-
>struct.a : Symbol(a)
105-
>struct : Symbol(struct, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 34, 5))
102+
const v1_1: number = struct1.a;
103+
>v1_1 : Symbol(v1_1, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 36, 5))
104+
>struct1.a : Symbol(a)
105+
>struct1 : Symbol(struct1, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 34, 5))
106106
>a : Symbol(a)
107107

108-
const v2: bigint = struct.b;
109-
>v2 : Symbol(v2, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 37, 5))
110-
>struct.b : Symbol(b)
111-
>struct : Symbol(struct, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 34, 5))
108+
const v1_2: bigint = struct1.b;
109+
>v1_2 : Symbol(v1_2, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 37, 5))
110+
>struct1.b : Symbol(b)
111+
>struct1 : Symbol(struct1, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 34, 5))
112112
>b : Symbol(b)
113113

114+
declare const descriptor2: [["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]
115+
>descriptor2 : Symbol(descriptor2, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 39, 13))
116+
>Decoder : Symbol(Decoder, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 0, 0))
117+
>Decoder : Symbol(Decoder, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 0, 0))
118+
>Decoder : Symbol(Decoder, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 0, 0))
119+
120+
const structDecoder2 = new StructDecoder(descriptor2);
121+
>structDecoder2 : Symbol(structDecoder2, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 40, 5))
122+
>StructDecoder : Symbol(StructDecoder, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 16, 2))
123+
>descriptor2 : Symbol(descriptor2, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 39, 13))
124+
125+
const struct2 = structDecoder2.decode(new ArrayBuffer(100));
126+
>struct2 : Symbol(struct2, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 42, 5))
127+
>structDecoder2.decode : Symbol(Decoder.decode, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 2, 26))
128+
>structDecoder2 : Symbol(structDecoder2, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 40, 5))
129+
>decode : Symbol(Decoder.decode, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 2, 26))
130+
>ArrayBuffer : Symbol(ArrayBuffer, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
131+
132+
const v2_1: number = struct2.a;
133+
>v2_1 : Symbol(v2_1, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 44, 5))
134+
>struct2.a : Symbol(a)
135+
>struct2 : Symbol(struct2, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 42, 5))
136+
>a : Symbol(a)
137+
138+
const v2_2: string = struct2.b;
139+
>v2_2 : Symbol(v2_2, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 45, 5))
140+
>struct2.b : Symbol(b)
141+
>struct2 : Symbol(struct2, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 42, 5))
142+
>b : Symbol(b)
143+
144+
const v2_3: bigint = struct2.c;
145+
>v2_3 : Symbol(v2_3, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 46, 5))
146+
>struct2.c : Symbol(c)
147+
>struct2 : Symbol(struct2, Decl(mappedTypeTupleConstraintTypeParameterInNameType.ts, 42, 5))
148+
>c : Symbol(c)
149+

tests/baselines/reference/mappedTypeTupleConstraintTypeParameterInNameType.types

Lines changed: 52 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ declare const i32Decoder: Decoder<number>;
5050
declare const i64Decoder: Decoder<bigint>;
5151
>i64Decoder : Decoder<bigint>
5252

53-
const structDecoder = new StructDecoder([
54-
>structDecoder : StructDecoder<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
53+
const structDecoder1 = new StructDecoder([
54+
>structDecoder1 : StructDecoder<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
5555
>new StructDecoder([ ["a", i32Decoder], ["b", i64Decoder],]) : StructDecoder<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
5656
>StructDecoder : typeof StructDecoder
5757
>[ ["a", i32Decoder], ["b", i64Decoder],] : [["a", Decoder<number>], ["b", Decoder<bigint>]]
@@ -68,25 +68,62 @@ const structDecoder = new StructDecoder([
6868

6969
]);
7070

71-
const struct = structDecoder.decode(new ArrayBuffer(100));
72-
>struct : StructTypeFor<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
73-
>structDecoder.decode(new ArrayBuffer(100)) : StructTypeFor<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
74-
>structDecoder.decode : (arrayBuffer: ArrayBuffer) => StructTypeFor<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
75-
>structDecoder : StructDecoder<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
71+
const struct1 = structDecoder1.decode(new ArrayBuffer(100));
72+
>struct1 : StructTypeFor<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
73+
>structDecoder1.decode(new ArrayBuffer(100)) : StructTypeFor<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
74+
>structDecoder1.decode : (arrayBuffer: ArrayBuffer) => StructTypeFor<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
75+
>structDecoder1 : StructDecoder<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
7676
>decode : (arrayBuffer: ArrayBuffer) => StructTypeFor<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
7777
>new ArrayBuffer(100) : ArrayBuffer
7878
>ArrayBuffer : ArrayBufferConstructor
7979
>100 : 100
8080

81-
const v: number = struct.a;
82-
>v : number
83-
>struct.a : number
84-
>struct : StructTypeFor<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
81+
const v1_1: number = struct1.a;
82+
>v1_1 : number
83+
>struct1.a : number
84+
>struct1 : StructTypeFor<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
8585
>a : number
8686

87-
const v2: bigint = struct.b;
88-
>v2 : bigint
89-
>struct.b : bigint
90-
>struct : StructTypeFor<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
87+
const v1_2: bigint = struct1.b;
88+
>v1_2 : bigint
89+
>struct1.b : bigint
90+
>struct1 : StructTypeFor<readonly [readonly ["a", Decoder<number>], readonly ["b", Decoder<bigint>]]>
9191
>b : bigint
9292

93+
declare const descriptor2: [["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]
94+
>descriptor2 : [["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]
95+
96+
const structDecoder2 = new StructDecoder(descriptor2);
97+
>structDecoder2 : StructDecoder<[["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]>
98+
>new StructDecoder(descriptor2) : StructDecoder<[["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]>
99+
>StructDecoder : typeof StructDecoder
100+
>descriptor2 : [["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]
101+
102+
const struct2 = structDecoder2.decode(new ArrayBuffer(100));
103+
>struct2 : StructTypeFor<[["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]>
104+
>structDecoder2.decode(new ArrayBuffer(100)) : StructTypeFor<[["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]>
105+
>structDecoder2.decode : (arrayBuffer: ArrayBuffer) => StructTypeFor<[["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]>
106+
>structDecoder2 : StructDecoder<[["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]>
107+
>decode : (arrayBuffer: ArrayBuffer) => StructTypeFor<[["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]>
108+
>new ArrayBuffer(100) : ArrayBuffer
109+
>ArrayBuffer : ArrayBufferConstructor
110+
>100 : 100
111+
112+
const v2_1: number = struct2.a;
113+
>v2_1 : number
114+
>struct2.a : number
115+
>struct2 : StructTypeFor<[["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]>
116+
>a : number
117+
118+
const v2_2: string = struct2.b;
119+
>v2_2 : string
120+
>struct2.b : string
121+
>struct2 : StructTypeFor<[["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]>
122+
>b : string
123+
124+
const v2_3: bigint = struct2.c;
125+
>v2_3 : bigint
126+
>struct2.c : bigint
127+
>struct2 : StructTypeFor<[["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]>
128+
>c : bigint
129+

tests/cases/compiler/mappedTypeTupleConstraintTypeParameterInNameType.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,21 @@ class StructDecoder<const Descriptor extends StructDescriptor> extends Decoder<
3030
declare const i32Decoder: Decoder<number>;
3131
declare const i64Decoder: Decoder<bigint>;
3232

33-
const structDecoder = new StructDecoder([
33+
const structDecoder1 = new StructDecoder([
3434
["a", i32Decoder],
3535
["b", i64Decoder],
3636
]);
3737

38-
const struct = structDecoder.decode(new ArrayBuffer(100));
38+
const struct1 = structDecoder1.decode(new ArrayBuffer(100));
3939

40-
const v: number = struct.a;
41-
const v2: bigint = struct.b;
40+
const v1_1: number = struct1.a;
41+
const v1_2: bigint = struct1.b;
42+
43+
declare const descriptor2: [["a", Decoder<number>], ["b", Decoder<string>], ...["c", Decoder<bigint>][]]
44+
const structDecoder2 = new StructDecoder(descriptor2);
45+
46+
const struct2 = structDecoder2.decode(new ArrayBuffer(100));
47+
48+
const v2_1: number = struct2.a;
49+
const v2_2: string = struct2.b;
50+
const v2_3: bigint = struct2.c;

0 commit comments

Comments
 (0)