bijection-clojure/codegen/GeneratorWorkaroundScala.scala (17 lines of code) (raw):

// This is a generator to forward to the generated java methods // as a workaround for scala bug#11770 // // Run this generator like a script: // scala GeneratorWorkaroundScala.scala > ../src/main/scala-2.13+/com/twitter/bijection/clojure/GenertedIFnBijections.scala val letters = (('A' to 'Z').toList.inits.toList.reverse.tail).take(23) def rot(l: List[Char]) = l.tail :+ l.head val methods = letters.zipWithIndex.map { case (range, i) => s"""implicit def function${i}ToIFn[${range.mkString(", ")}]: Bijection[Function${i}[${rot(range).mkString(", ")}], IFn] = Workaround11770.function${i}ToIFn[${range.mkString(", ")}] """ } println("// Autogenerated code DO NOT EDIT BY HAND") println("// Generated by bijection-clojure/codegen/GeneratorWorkaroundScala.scala") println("package com.twitter.bijection.clojure") println("import clojure.lang.{ AFn, IFn }") println("import com.twitter.bijection.{ AbstractBijection, Bijection, CastInjection }") println("\ntrait GeneratedIFnBijections {") methods.foreach(method => { println(method) println }) println("}")