@@ -79,41 +79,64 @@ package object quoted {
79
79
def (list : List [Expr [T ]]) toExprOfList[T ] given Type [T ], QuoteContext : Expr [List [T ]] =
80
80
if (list.isEmpty) ' { Nil } else ' { List ($ {list.toExprOfSeq}: _* ) }
81
81
82
- /** Lifts this sequence of expressions into an expression of a tuple
82
+ /** Lifts this sequence of expressions into an expression of a tuple
83
83
*
84
84
* Transforms a sequence of expression
85
85
* `Seq(e1, e2, ...)` where `ei: Expr[_]`
86
86
* to an expression equivalent to
87
87
* `'{ ($e1, $e2, ...) }` typed as an `Expr[Tuple]`
88
88
*/
89
89
def (seq : Seq [Expr [_]]) toExprOfTuple given QuoteContext : Expr [Tuple ] = {
90
- seq.size match {
91
- case 0 => Expr .unitExpr
92
- case 1 => ' { Tuple1 ( $ {seq(0 )}) }
93
- case 2 => ' { Tuple2 ( $ {seq(0 )}, $ {seq(1 )}) }
94
- case 3 => ' { Tuple3 ( $ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}) }
95
- case 4 => ' { Tuple4 ( $ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}) }
96
- case 5 => ' { Tuple5 ( $ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}) }
97
- case 6 => ' { Tuple6 ( $ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}) }
98
- case 7 => ' { Tuple7 ( $ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}) }
99
- case 8 => ' { Tuple8 ( $ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}) }
100
- case 9 => ' { Tuple9 ( $ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}) }
101
- case 10 => ' { Tuple10 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}) }
102
- case 11 => ' { Tuple11 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}, $ {seq(10 )}) }
103
- case 12 => ' { Tuple12 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}, $ {seq(10 )}, $ {seq(11 )}) }
104
- case 13 => ' { Tuple13 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}, $ {seq(10 )}, $ {seq(11 )}, $ {seq(12 )}) }
105
- case 14 => ' { Tuple14 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}, $ {seq(10 )}, $ {seq(11 )}, $ {seq(12 )}, $ {seq(13 )}) }
106
- case 15 => ' { Tuple15 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}, $ {seq(10 )}, $ {seq(11 )}, $ {seq(12 )}, $ {seq(13 )}, $ {seq(14 )}) }
107
- case 16 => ' { Tuple16 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}, $ {seq(10 )}, $ {seq(11 )}, $ {seq(12 )}, $ {seq(13 )}, $ {seq(14 )}, $ {seq(15 )}) }
108
- case 17 => ' { Tuple17 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}, $ {seq(10 )}, $ {seq(11 )}, $ {seq(12 )}, $ {seq(13 )}, $ {seq(14 )}, $ {seq(15 )}, $ {seq(16 )}) }
109
- case 18 => ' { Tuple18 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}, $ {seq(10 )}, $ {seq(11 )}, $ {seq(12 )}, $ {seq(13 )}, $ {seq(14 )}, $ {seq(15 )}, $ {seq(16 )}, $ {seq(17 )}) }
110
- case 19 => ' { Tuple19 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}, $ {seq(10 )}, $ {seq(11 )}, $ {seq(12 )}, $ {seq(13 )}, $ {seq(14 )}, $ {seq(15 )}, $ {seq(16 )}, $ {seq(17 )}, $ {seq(18 )}) }
111
- case 20 => ' { Tuple20 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}, $ {seq(10 )}, $ {seq(11 )}, $ {seq(12 )}, $ {seq(13 )}, $ {seq(14 )}, $ {seq(15 )}, $ {seq(16 )}, $ {seq(17 )}, $ {seq(18 )}, $ {seq(19 )}) }
112
- case 21 => ' { Tuple21 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}, $ {seq(10 )}, $ {seq(11 )}, $ {seq(12 )}, $ {seq(13 )}, $ {seq(14 )}, $ {seq(15 )}, $ {seq(16 )}, $ {seq(17 )}, $ {seq(18 )}, $ {seq(19 )}, $ {seq(20 )}) }
113
- case 22 => ' { Tuple22 ($ {seq(0 )}, $ {seq(1 )}, $ {seq(2 )}, $ {seq(3 )}, $ {seq(4 )}, $ {seq(5 )}, $ {seq(6 )}, $ {seq(7 )}, $ {seq(8 )}, $ {seq(9 )}, $ {seq(10 )}, $ {seq(11 )}, $ {seq(12 )}, $ {seq(13 )}, $ {seq(14 )}, $ {seq(15 )}, $ {seq(16 )}, $ {seq(17 )}, $ {seq(18 )}, $ {seq(19 )}, $ {seq(20 )}, $ {seq(21 )}) }
114
- case _ => ' { Tuple .fromIArray(IArray ($ {seq.toExprOfSeq}: _* )) }
90
+ seq match {
91
+ case Seq () =>
92
+ Expr .unitExpr
93
+ case Seq (' { $x1 : $t1 }) =>
94
+ ' { Tuple1 ($x1) }
95
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }) =>
96
+ ' { Tuple2 ($x1, $x2) }
97
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }) =>
98
+ ' { Tuple3 ($x1, $x2, $x3) }
99
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }) =>
100
+ ' { Tuple4 ($x1, $x2, $x3, $x4) }
101
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }) =>
102
+ ' { Tuple5 ($x1, $x2, $x3, $x4, $x5) }
103
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }) =>
104
+ ' { Tuple6 ($x1, $x2, $x3, $x4, $x5, $x6) }
105
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }) =>
106
+ ' { Tuple7 ($x1, $x2, $x3, $x4, $x5, $x6, $x7) }
107
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }) =>
108
+ ' { Tuple8 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8) }
109
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }) =>
110
+ ' { Tuple9 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9) }
111
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }) =>
112
+ ' { Tuple10 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10) }
113
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }, ' { $x11 : $t11 }) =>
114
+ ' { Tuple11 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11) }
115
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }, ' { $x11 : $t11 }, ' { $x12 : $t12 }) =>
116
+ ' { Tuple12 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12) }
117
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }, ' { $x11 : $t11 }, ' { $x12 : $t12 }, ' { $x13 : $t13 }) =>
118
+ ' { Tuple13 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13) }
119
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }, ' { $x11 : $t11 }, ' { $x12 : $t12 }, ' { $x13 : $t13 }, ' { $x14 : $t14 }) =>
120
+ ' { Tuple14 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14) }
121
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }, ' { $x11 : $t11 }, ' { $x12 : $t12 }, ' { $x13 : $t13 }, ' { $x14 : $t14 }, ' { $x15 : $t15 }) =>
122
+ ' { Tuple15 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15) }
123
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }, ' { $x11 : $t11 }, ' { $x12 : $t12 }, ' { $x13 : $t13 }, ' { $x14 : $t14 }, ' { $x15 : $t15 }, ' { $x16 : $t16 }) =>
124
+ ' { Tuple16 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x16) }
125
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }, ' { $x11 : $t11 }, ' { $x12 : $t12 }, ' { $x13 : $t13 }, ' { $x14 : $t14 }, ' { $x15 : $t15 }, ' { $x16 : $t16 }, ' { $x17 : $t17 }) =>
126
+ ' { Tuple17 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x16, $x17) }
127
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }, ' { $x11 : $t11 }, ' { $x12 : $t12 }, ' { $x13 : $t13 }, ' { $x14 : $t14 }, ' { $x15 : $t15 }, ' { $x16 : $t16 }, ' { $x17 : $t17 }, ' { $x18 : $t18 }) =>
128
+ ' { Tuple18 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x16, $x17, $x18) }
129
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }, ' { $x11 : $t11 }, ' { $x12 : $t12 }, ' { $x13 : $t13 }, ' { $x14 : $t14 }, ' { $x15 : $t15 }, ' { $x16 : $t16 }, ' { $x17 : $t17 }, ' { $x18 : $t18 }, ' { $x19 : $t19 }) =>
130
+ ' { Tuple19 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x16, $x17, $x18, $x19) }
131
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }, ' { $x11 : $t11 }, ' { $x12 : $t12 }, ' { $x13 : $t13 }, ' { $x14 : $t14 }, ' { $x15 : $t15 }, ' { $x16 : $t16 }, ' { $x17 : $t17 }, ' { $x18 : $t18 }, ' { $x19 : $t19 }, ' { $x20 : $t20 }) =>
132
+ ' { Tuple20 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x16, $x17, $x18, $x19, $x20) }
133
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }, ' { $x11 : $t11 }, ' { $x12 : $t12 }, ' { $x13 : $t13 }, ' { $x14 : $t14 }, ' { $x15 : $t15 }, ' { $x16 : $t16 }, ' { $x17 : $t17 }, ' { $x18 : $t18 }, ' { $x19 : $t19 }, ' { $x20 : $t20 }, ' { $x21 : $t21 }) =>
134
+ ' { Tuple21 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x16, $x17, $x18, $x19, $x20, $x21) }
135
+ case Seq (' { $x1 : $t1 }, ' { $x2 : $t2 }, ' { $x3 : $t3 }, ' { $x4 : $t4 }, ' { $x5 : $t5 }, ' { $x6 : $t6 }, ' { $x7 : $t7 }, ' { $x8 : $t8 }, ' { $x9 : $t9 }, ' { $x10 : $t10 }, ' { $x11 : $t11 }, ' { $x12 : $t12 }, ' { $x13 : $t13 }, ' { $x14 : $t14 }, ' { $x15 : $t15 }, ' { $x16 : $t16 }, ' { $x17 : $t17 }, ' { $x18 : $t18 }, ' { $x19 : $t19 }, ' { $x20 : $t20 }, ' { $x21 : $t21 }, ' { $x22 : $t22 }) =>
136
+ ' { Tuple22 ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x16, $x17, $x18, $x19, $x20, $x21, $x22) }
137
+ case _ =>
138
+ ' { Tuple .fromIArray(IArray ($ {seq.toExprOfSeq}: _* )) }
115
139
}
116
-
117
140
}
118
141
}
119
142
0 commit comments