Skip to content

Commit f3d9330

Browse files
committed
Rename HasShape -> Shaped, GenericCase -> CaseMirror
and some related renamings
1 parent ed9d001 commit f3d9330

File tree

1 file changed

+31
-31
lines changed

1 file changed

+31
-31
lines changed

tests/run/typeclass-derivation2.scala

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ object Deriving {
1717
* @param ordinal The ordinal value of the case in the list of the ADT's cases
1818
* @param elems The elements of the case
1919
*/
20-
class GenericCase[+T](val ordinal: Int, val elems: Product) {
20+
class CaseMirror[+T](val ordinal: Int, val elems: Product) {
2121

2222
/** A generic case with elements given as an array */
2323
def this(ordinal: Int, elems: Array[AnyRef]) =
@@ -54,15 +54,15 @@ object Deriving {
5454
/** A class for mapping between an ADT value and
5555
* the generic case that represents the value
5656
*/
57-
abstract class GenericMapper[T] {
58-
def toGenericCase(x: T): GenericCase[T]
59-
def fromGenericCase(c: GenericCase[T]): T
57+
abstract class MirrorMapper[T] {
58+
def toMirror(x: T): CaseMirror[T]
59+
def fromMirror(c: CaseMirror[T]): T
6060
}
6161

6262
/** Every generic derivation starts with a typeclass instance of this type.
6363
* It informs that type `T` has shape `S` and is backed by the extended generic mapper.
6464
*/
65-
abstract class HasShape[T, S <: Shape] extends GenericMapper[T]
65+
abstract class Shaped[T, S <: Shape] extends MirrorMapper[T]
6666
}
6767

6868
// An algebraic datatype
@@ -76,19 +76,19 @@ object Lst {
7676
// common compiler-generated infrastructure
7777
import Deriving._
7878

79-
type LstShape[T] = Shape.Cases[(
79+
type Shape[T] = Shape.Cases[(
8080
Shape.Case[Cons[T], (T, Lst[T])],
8181
Shape.Case[Nil.type, Unit]
8282
)]
8383

84-
val NilCase = new GenericCase[Nil.type](1)
84+
val NilMirror = new CaseMirror[Nil.type](1)
8585

86-
implicit def lstShape[T]: HasShape[Lst[T], LstShape[T]] = new {
87-
def toGenericCase(xs: Lst[T]): GenericCase[Lst[T]] = xs match {
88-
case xs: Cons[T] => new GenericCase[Cons[T]](0, xs)
89-
case Nil => NilCase
86+
implicit def lstShape[T]: Shaped[Lst[T], Shape[T]] = new {
87+
def toMirror(xs: Lst[T]): CaseMirror[Lst[T]] = xs match {
88+
case xs: Cons[T] => new CaseMirror[Cons[T]](0, xs)
89+
case Nil => NilMirror
9090
}
91-
def fromGenericCase(c: GenericCase[Lst[T]]): Lst[T] = c.ordinal match {
91+
def fromMirror(c: CaseMirror[Lst[T]]): Lst[T] = c.ordinal match {
9292
case 0 => Cons[T](c(0).asInstanceOf, c(1).asInstanceOf)
9393
case 1 => Nil
9494
}
@@ -106,12 +106,12 @@ object Pair {
106106
// common compiler-generated infrastructure
107107
import Deriving._
108108

109-
type PairShape[T] = Shape.Case[Pair[T], (T, T)]
109+
type Shape[T] = Shape.Case[Pair[T], (T, T)]
110110

111-
implicit def pairShape[T]: HasShape[Pair[T], PairShape[T]] = new {
112-
def toGenericCase(xy: Pair[T]) =
113-
new GenericCase[Pair[T]](0, xy)
114-
def fromGenericCase(c: GenericCase[Pair[T]]): Pair[T] =
111+
implicit def pairShape[T]: Shaped[Pair[T], Shape[T]] = new {
112+
def toMirror(xy: Pair[T]) =
113+
new CaseMirror[Pair[T]](0, xy)
114+
def fromMirror(c: CaseMirror[Pair[T]]): Pair[T] =
115115
Pair(c(0).asInstanceOf, c(1).asInstanceOf)
116116
}
117117

@@ -133,7 +133,7 @@ object Eq {
133133
case eq: Eq[T] => eq.eql(x, y)
134134
}
135135

136-
inline def eqlElems[Elems <: Tuple](xs: GenericCase[_], ys: GenericCase[_], n: Int): Boolean =
136+
inline def eqlElems[Elems <: Tuple](xs: CaseMirror[_], ys: CaseMirror[_], n: Int): Boolean =
137137
inline erasedValue[Elems] match {
138138
case _: (elem *: elems1) =>
139139
tryEql[elem](xs(n).asInstanceOf, ys(n).asInstanceOf) &&
@@ -142,10 +142,10 @@ object Eq {
142142
true
143143
}
144144

145-
inline def eqlCase[T, Elems <: Tuple](mapper: GenericMapper[T], x: T, y: T) =
146-
eqlElems[Elems](mapper.toGenericCase(x), mapper.toGenericCase(y), 0)
145+
inline def eqlCase[T, Elems <: Tuple](mapper: MirrorMapper[T], x: T, y: T) =
146+
eqlElems[Elems](mapper.toMirror(x), mapper.toMirror(y), 0)
147147

148-
inline def eqlCases[T, Alts <: Tuple](mapper: GenericMapper[T], x: T, y: T): Boolean =
148+
inline def eqlCases[T, Alts <: Tuple](mapper: MirrorMapper[T], x: T, y: T): Boolean =
149149
inline erasedValue[Alts] match {
150150
case _: (Shape.Case[alt, elems] *: alts1) =>
151151
x match {
@@ -160,7 +160,7 @@ object Eq {
160160
false
161161
}
162162

163-
inline def derived[T, S <: Shape](implicit ev: HasShape[T, S]) <: Eq[T] = new {
163+
inline def derived[T, S <: Shape](implicit ev: Shaped[T, S]) <: Eq[T] = new {
164164
def eql(x: T, y: T): Boolean = inline erasedValue[S] match {
165165
case _: Shape.Cases[alts] =>
166166
eqlCases[T, alts](ev, x, y)
@@ -190,18 +190,18 @@ object Pickler {
190190
case pkl: Pickler[T] => pkl.pickle(buf, x)
191191
}
192192

193-
inline def pickleElems[Elems <: Tuple](buf: mutable.ListBuffer[Int], elems: GenericCase[_], n: Int): Unit =
193+
inline def pickleElems[Elems <: Tuple](buf: mutable.ListBuffer[Int], elems: CaseMirror[_], n: Int): Unit =
194194
inline erasedValue[Elems] match {
195195
case _: (elem *: elems1) =>
196196
tryPickle[elem](buf, elems(n).asInstanceOf[elem])
197197
pickleElems[elems1](buf, elems, n + 1)
198198
case _: Unit =>
199199
}
200200

201-
inline def pickleCase[T, Elems <: Tuple](mapper: GenericMapper[T], buf: mutable.ListBuffer[Int], x: T): Unit =
202-
pickleElems[Elems](buf, mapper.toGenericCase(x), 0)
201+
inline def pickleCase[T, Elems <: Tuple](mapper: MirrorMapper[T], buf: mutable.ListBuffer[Int], x: T): Unit =
202+
pickleElems[Elems](buf, mapper.toMirror(x), 0)
203203

204-
inline def pickleCases[T, Alts <: Tuple](mapper: GenericMapper[T], buf: mutable.ListBuffer[Int], x: T, n: Int): Unit =
204+
inline def pickleCases[T, Alts <: Tuple](mapper: MirrorMapper[T], buf: mutable.ListBuffer[Int], x: T, n: Int): Unit =
205205
inline erasedValue[Alts] match {
206206
case _: (Shape.Case[alt, elems] *: alts1) =>
207207
x match {
@@ -226,18 +226,18 @@ object Pickler {
226226
case _: Unit =>
227227
}
228228

229-
inline def unpickleCase[T, Elems <: Tuple](mapper: GenericMapper[T], buf: mutable.ListBuffer[Int], ordinal: Int): T = {
229+
inline def unpickleCase[T, Elems <: Tuple](mapper: MirrorMapper[T], buf: mutable.ListBuffer[Int], ordinal: Int): T = {
230230
inline val size = constValue[Tuple.Size[Elems]]
231231
inline if (size == 0)
232-
mapper.fromGenericCase(new GenericCase[T](ordinal))
232+
mapper.fromMirror(new CaseMirror[T](ordinal))
233233
else {
234234
val elems = new Array[Object](size)
235235
unpickleElems[Elems](buf, elems, 0)
236-
mapper.fromGenericCase(new GenericCase[T](ordinal, elems))
236+
mapper.fromMirror(new CaseMirror[T](ordinal, elems))
237237
}
238238
}
239239

240-
inline def unpickleCases[T, Alts <: Tuple](mapper: GenericMapper[T], buf: mutable.ListBuffer[Int], ordinal: Int, n: Int): T =
240+
inline def unpickleCases[T, Alts <: Tuple](mapper: MirrorMapper[T], buf: mutable.ListBuffer[Int], ordinal: Int, n: Int): T =
241241
inline erasedValue[Alts] match {
242242
case _: (Shape.Case[_, elems] *: alts1) =>
243243
if (n == ordinal) unpickleCase[T, elems](mapper, buf, ordinal)
@@ -246,7 +246,7 @@ object Pickler {
246246
throw new IndexOutOfBoundsException(s"unexpected ordinal number: $ordinal")
247247
}
248248

249-
inline def derived[T, S <: Shape](implicit ev: HasShape[T, S]): Pickler[T] = new {
249+
inline def derived[T, S <: Shape](implicit ev: Shaped[T, S]): Pickler[T] = new {
250250
def pickle(buf: mutable.ListBuffer[Int], x: T): Unit = inline erasedValue[S] match {
251251
case _: Shape.Cases[alts] =>
252252
pickleCases[T, alts](ev, buf, x, 0)

0 commit comments

Comments
 (0)