override def validateRecord()

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
    )
  }