Skip to content

Commit c3160a3

Browse files
committed
Fix check file
... and some polishings
1 parent 3f31087 commit c3160a3

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

tests/run/typeclass-derivation2.check

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ ListBuffer(0, 11, 0, 22, 0, 33, 1)
22
Cons(11,Cons(22,Cons(33,Nil)))
33
ListBuffer(0, 0, 11, 0, 22, 0, 33, 1, 0, 0, 11, 0, 22, 1, 1)
44
Cons(Cons(11,Cons(22,Cons(33,Nil))),Cons(Cons(11,Cons(22,Nil)),Nil))
5+
ListBuffer(1, 2)
6+
Pair(1,2)

tests/run/typeclass-derivation2.scala

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import scala.collection.mutable
44
object Deriving {
55

66
enum Shape {
7-
case Sum[Alts <: Tuple]
7+
case Cases[Alts <: Tuple]
88
case Case[T, Elems <: Tuple]
99
}
1010

@@ -29,7 +29,7 @@ object Lst {
2929
// common compiler-generated infrastructure
3030
import Deriving._
3131

32-
type LstShape[T] = Shape.Sum[(
32+
type LstShape[T] = Shape.Cases[(
3333
Shape.Case[Cons[T], (T, Lst[T])],
3434
Shape.Case[Nil.type, Unit]
3535
)]
@@ -96,7 +96,7 @@ object Eq {
9696
inline def equalsCase[T, Elems <: Tuple](mapper: GenericMapper[T], x: T, y: T) =
9797
equalsElems[Elems](mapper.toGenericCase(x).elems, mapper.toGenericCase(y).elems, 0)
9898

99-
inline def equalsSum[T, Alts <: Tuple](mapper: GenericMapper[T], x: T, y: T): Boolean =
99+
inline def equalsCases[T, Alts <: Tuple](mapper: GenericMapper[T], x: T, y: T): Boolean =
100100
inline erasedValue[Alts] match {
101101
case _: (Shape.Case[alt, elems] *: alts1) =>
102102
x match {
@@ -105,16 +105,16 @@ object Eq {
105105
case y: `alt` => equalsCase[T, elems](mapper, x, y)
106106
case _ => false
107107
}
108-
case _ => equalsSum[T, alts1](mapper, x, y)
108+
case _ => equalsCases[T, alts1](mapper, x, y)
109109
}
110110
case _: Unit =>
111111
false
112112
}
113113

114114
inline def derived[T, S <: Shape](implicit ev: HasShape[T, S]): Eq[T] = new {
115115
def equals(x: T, y: T): Boolean = inline erasedValue[S] match {
116-
case _: Shape.Sum[alts] =>
117-
equalsSum[T, alts](ev, x, y)
116+
case _: Shape.Cases[alts] =>
117+
equalsCases[T, alts](ev, x, y)
118118
case _: Shape.Case[alt, elems] =>
119119
equalsCase[T, elems](ev, x, y)
120120
}
@@ -152,15 +152,15 @@ object Pickler {
152152
inline def pickleCase[T, Elems <: Tuple](mapper: GenericMapper[T], buf: mutable.ListBuffer[Int], x: T): Unit =
153153
pickleElems[Elems](buf, mapper.toGenericCase(x).elems, 0)
154154

155-
inline def pickleSum[T, Alts <: Tuple](mapper: GenericMapper[T], buf: mutable.ListBuffer[Int], x: T, n: Int): Unit =
155+
inline def pickleCases[T, Alts <: Tuple](mapper: GenericMapper[T], buf: mutable.ListBuffer[Int], x: T, n: Int): Unit =
156156
inline erasedValue[Alts] match {
157157
case _: (Shape.Case[alt, elems] *: alts1) =>
158158
x match {
159159
case x: `alt` =>
160160
buf += n
161161
pickleCase[T, elems](mapper, buf, x)
162162
case _ =>
163-
pickleSum[T, alts1](mapper, buf, x, n + 1)
163+
pickleCases[T, alts1](mapper, buf, x, n + 1)
164164
}
165165
case _: Unit =>
166166
}
@@ -183,25 +183,25 @@ object Pickler {
183183
mapper.fromGenericCase(GenericCase(ordinal, elems))
184184
}
185185

186-
inline def unpickleSum[T, Alts <: Tuple](mapper: GenericMapper[T], buf: mutable.ListBuffer[Int], ordinal: Int, n: Int): T =
186+
inline def unpickleCases[T, Alts <: Tuple](mapper: GenericMapper[T], buf: mutable.ListBuffer[Int], ordinal: Int, n: Int): T =
187187
inline erasedValue[Alts] match {
188188
case _: (Shape.Case[alt, elems] *: alts1) =>
189189
if (n == ordinal) unpickleCase[T, elems](mapper, buf, ordinal)
190-
else unpickleSum[T, alts1](mapper, buf, ordinal, n + 1)
190+
else unpickleCases[T, alts1](mapper, buf, ordinal, n + 1)
191191
case _ =>
192192
throw new IndexOutOfBoundsException(s"unexpected ordinal number: $ordinal")
193193
}
194194

195195
inline def derived[T, S <: Shape](implicit ev: HasShape[T, S]): Pickler[T] = new {
196196
def pickle(buf: mutable.ListBuffer[Int], x: T): Unit = inline erasedValue[S] match {
197-
case _: Shape.Sum[alts] =>
198-
pickleSum[T, alts](ev, buf, x, 0)
197+
case _: Shape.Cases[alts] =>
198+
pickleCases[T, alts](ev, buf, x, 0)
199199
case _: Shape.Case[alt, elems] =>
200200
pickleCase[T, elems](ev, buf, x)
201201
}
202202
def unpickle(buf: mutable.ListBuffer[Int]): T = inline erasedValue[S] match {
203-
case _: Shape.Sum[alts] =>
204-
unpickleSum[T, alts](ev, buf, nextInt(buf), 0)
203+
case _: Shape.Cases[alts] =>
204+
unpickleCases[T, alts](ev, buf, nextInt(buf), 0)
205205
case _: Shape.Case[alt, elems] =>
206206
unpickleCase[T, elems](ev, buf, 0)
207207
}
@@ -260,6 +260,7 @@ object Test extends App {
260260
pklp.pickle(buf, p1)
261261
println(buf)
262262
val p1a = pklp.unpickle(buf)
263+
println(p1a)
263264
assert(p1 == p1a)
264265
assert(eqp.equals(p1, p1a))
265266
}

0 commit comments

Comments
 (0)