in elitzur-core/src/main/scala/com/spotify/elitzur/validators/DerivedValidator.scala [27:51]
override def validateRecord(a: PreValidation[T],
path: String = "",
outermostClassName: Option[String] = None,
config: ValidationRecordConfig = DefaultRecordConfig)
: PostValidation[T] = {
val ps = caseClass.parameters
val as = new Array[ValidatorAccessor[Any]](ps.length)
var i = 0
// Loop through parameters once to dereference and avoid leaking magnolia types in APIs
while (i < ps.length) {
val p = ps(i)
val deref = p.dereference(a.forceGet)
as.update(i, ValidatorAccessor(p.typeclass, deref, p.label)
.asInstanceOf[ValidatorAccessor[Any]])
i = i + 1
}
Validator.validationLoop(
as,
caseClass.rawConstruct,
if (outermostClassName.isEmpty) caseClass.typeName.full else outermostClassName.get,
path,
config
)
}