File tree Expand file tree Collapse file tree 1 file changed +16
-0
lines changed
library/src/scala/runtime Expand file tree Collapse file tree 1 file changed +16
-0
lines changed Original file line number Diff line number Diff line change
1
+ package scala .runtime
2
+
3
+ /** A concrete subclass of `scala.deriving.Mirror.Product`, enabling reduction of bytecode size.
4
+ * as we do not need to synthesize an anonymous Mirror class at every callsite.
5
+ */
6
+ final class TupleMirror (arity : Int ) extends scala.deriving.Mirror .Product with Serializable :
7
+ assert(arity > 0 ) // EmptyTuple is not a valid `MirroredType` for TupleMirror
8
+
9
+ override type MirroredMonoType <: NonEmptyTuple
10
+
11
+ final def fromProduct (product : Product ): MirroredMonoType =
12
+ if product.productArity != arity then
13
+ throw IllegalArgumentException (s " expected Product with $arity elements, got ${product.productArity}" )
14
+ runtime.Tuples .fromProduct(product).asInstanceOf [MirroredMonoType ]
15
+
16
+ override final def toString : String = s " <tuple-mirror@ ${Integer .toHexString(hashCode).nn.take(6 )}> "
You can’t perform that action at this time.
0 commit comments