@@ -13,166 +13,9 @@ sealed trait TupledFunction[F, G] {
1313 def untupled (g : G ): F
1414}
1515
16- package internal {
17-
18- object TupledFunction {
19-
20- def tupledFunction0 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
21- def tupled (f : F ): G = ((args : Unit ) => f.asInstanceOf [() => Any ].apply()).asInstanceOf [G ]
22- def untupled (g : G ): F = (() => g.asInstanceOf [Unit => Any ].apply(())).asInstanceOf [F ]
23- }
24-
25- def tupledFunction1 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
26- def tupled (f : F ): G = ((args : Tuple1 [Any ]) => f.asInstanceOf [Any => Any ].apply(args._1)).asInstanceOf [G ]
27- def untupled (g : G ): F = ((x1 : Any ) => g.asInstanceOf [Tuple1 [_] => Any ].apply(Tuple1 (x1))).asInstanceOf [F ]
28- }
29-
30- def tupledFunction2 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
31- def tupled (f : F ): G = f.asInstanceOf [Function2 [_, _, _]].tupled.asInstanceOf [G ]
32- def untupled (g : G ): F = Function .untupled(g.asInstanceOf [Tuple2 [_, _] => Any ]).asInstanceOf [F ]
33- }
34-
35- def tupledFunction3 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
36- def tupled (f : F ): G = f.asInstanceOf [Function3 [_, _, _, _]].tupled.asInstanceOf [G ]
37- def untupled (g : G ): F = Function .untupled(g.asInstanceOf [Tuple3 [_, _, _] => Any ]).asInstanceOf [F ]
38- }
39-
40- def tupledFunction4 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
41- def tupled (f : F ): G = f.asInstanceOf [Function4 [_, _, _, _, _]].tupled.asInstanceOf [G ]
42- def untupled (g : G ): F = Function .untupled(g.asInstanceOf [Tuple4 [_, _, _, _] => Any ]).asInstanceOf [F ]
43- }
44-
45- def tupledFunction5 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
46- def tupled (f : F ): G = f.asInstanceOf [Function5 [_, _, _, _, _, _]].tupled.asInstanceOf [G ]
47- def untupled (g : G ): F = Function .untupled(g.asInstanceOf [Tuple5 [_, _, _, _, _] => Any ]).asInstanceOf [F ]
48- }
49-
50- def tupledFunction6 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
51- def tupled (f : F ): G = f.asInstanceOf [Function6 [_, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
52- def untupled (g : G ): F =
53- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any ) =>
54- g.asInstanceOf [Tuple6 [_, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6))).asInstanceOf [F ]
55- }
56-
57- def tupledFunction7 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
58- def tupled (f : F ): G = f.asInstanceOf [Function7 [_, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
59- def untupled (g : G ): F =
60- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any ) =>
61- g.asInstanceOf [Tuple7 [_, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7))).asInstanceOf [F ]
62- }
63-
64- def tupledFunction8 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
65- def tupled (f : F ): G = f.asInstanceOf [Function8 [_, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
66- def untupled (g : G ): F =
67- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any ) =>
68- g.asInstanceOf [Tuple8 [_, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8))).asInstanceOf [F ]
69- }
70-
71- def tupledFunction9 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
72- def tupled (f : F ): G = f.asInstanceOf [Function9 [_, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
73- def untupled (g : G ): F =
74- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any ) =>
75- g.asInstanceOf [Tuple9 [_, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9))).asInstanceOf [F ]
76- }
77-
78- def tupledFunction10 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
79- def tupled (f : F ): G = f.asInstanceOf [Function10 [_, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
80- def untupled (g : G ): F =
81- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any ) =>
82- g.asInstanceOf [Tuple10 [_, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10))).asInstanceOf [F ]
83- }
84-
85- def tupledFunction11 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
86- def tupled (f : F ): G = f.asInstanceOf [Function11 [_, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
87- def untupled (g : G ): F =
88- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any ) =>
89- g.asInstanceOf [Tuple11 [_, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11))).asInstanceOf [F ]
90- }
91-
92- def tupledFunction12 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
93- def tupled (f : F ): G = f.asInstanceOf [Function12 [_, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
94- def untupled (g : G ): F =
95- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any ) =>
96- g.asInstanceOf [Tuple12 [_, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12))).asInstanceOf [F ]
97- }
98-
99- def tupledFunction13 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
100- def tupled (f : F ): G = f.asInstanceOf [Function13 [_, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
101- def untupled (g : G ): F =
102- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any ) =>
103- g.asInstanceOf [Tuple13 [_, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13))).asInstanceOf [F ]
104- }
105-
106- def tupledFunction14 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
107- def tupled (f : F ): G = f.asInstanceOf [Function14 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
108- def untupled (g : G ): F =
109- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any ) =>
110- g.asInstanceOf [Tuple14 [_, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14))).asInstanceOf [F ]
111- }
112-
113- def tupledFunction15 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
114- def tupled (f : F ): G = f.asInstanceOf [Function15 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
115- def untupled (g : G ): F =
116- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any ) =>
117- g.asInstanceOf [Tuple15 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15))).asInstanceOf [F ]
118- }
119-
120- def tupledFunction16 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
121- def tupled (f : F ): G = f.asInstanceOf [Function16 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
122- def untupled (g : G ): F =
123- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any ) =>
124- g.asInstanceOf [Tuple16 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16))).asInstanceOf [F ]
125- }
126-
127- def tupledFunction17 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
128- def tupled (f : F ): G = f.asInstanceOf [Function17 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
129- def untupled (g : G ): F =
130- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any , x17 : Any ) =>
131- g.asInstanceOf [Tuple17 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17))).asInstanceOf [F ]
132- }
133-
134- def tupledFunction18 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
135- def tupled (f : F ): G = f.asInstanceOf [Function18 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
136- def untupled (g : G ): F =
137- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any , x17 : Any , x18 : Any ) =>
138- g.asInstanceOf [Tuple18 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18))).asInstanceOf [F ]
16+ private [scala] object TupledFunction
17+ def apply [F , G ](tupledImpl : F => G , untupledImpl : G => F ): TupledFunction [F , G ] =
18+ new TupledFunction [F , G ] {
19+ def tupled (f : F ): G = tupledImpl(f)
20+ def untupled (g : G ): F = untupledImpl(g)
13921 }
140-
141- def tupledFunction19 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
142- def tupled (f : F ): G = f.asInstanceOf [Function19 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
143- def untupled (g : G ): F =
144- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any , x17 : Any , x18 : Any , x19 : Any ) =>
145- g.asInstanceOf [Tuple19 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19))).asInstanceOf [F ]
146- }
147-
148- def tupledFunction20 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
149- def tupled (f : F ): G = f.asInstanceOf [Function20 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
150- def untupled (g : G ): F =
151- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any , x17 : Any , x18 : Any , x19 : Any , x20 : Any ) =>
152- g.asInstanceOf [Tuple20 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20))).asInstanceOf [F ]
153- }
154-
155- def tupledFunction21 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
156- def tupled (f : F ): G = f.asInstanceOf [Function21 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
157- def untupled (g : G ): F =
158- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any , x17 : Any , x18 : Any , x19 : Any , x20 : Any , x21 : Any ) =>
159- g.asInstanceOf [Tuple21 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21))).asInstanceOf [F ]
160- }
161-
162- def tupledFunction22 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
163- def tupled (f : F ): G = f.asInstanceOf [Function22 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
164- def untupled (g : G ): F =
165- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any , x17 : Any , x18 : Any , x19 : Any , x20 : Any , x21 : Any , x22 : Any ) =>
166- g.asInstanceOf [Tuple22 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22))).asInstanceOf [F ]
167- }
168-
169- def tupledFunctionXXL [F , G ]: TupledFunction [F , G ] = new TupledFunction {
170- def tupled (f : F ): G = ((args : TupleXXL ) => f.asInstanceOf [FunctionXXL ].apply(args.elems)).asInstanceOf [G ]
171- def untupled (g : G ): F = new FunctionXXL {
172- override def apply (xs : IArray [Object ]): AnyRef = g.asInstanceOf [TupleXXL => AnyRef ].apply(TupleXXL .fromIArray(xs))
173- }.asInstanceOf [F ]
174- }
175-
176- }
177-
178- }
0 commit comments