in buildSrc/artist-core/src/main/kotlin/com/uber/artist/KotlinArtistCodeGenerator.kt [63:81]
override fun generateTypeSpecFor(stencil: KotlinViewStencil, rPackageName: String, traitMap: Map<Class<out KotlinTrait>, KotlinTrait>, superinterfaceClassName: String?): TypeSpec.Builder {
val rClass = ClassName(rPackageName, "R")
val typeBuilder = TypeSpec.classBuilder(stencil.name())
.addModifiers(KModifier.OPEN)
.superclass(stencil.sourceType)
superinterfaceClassName?.let { typeBuilder.addSuperinterface(superinterface(superinterfaceClassName)) }
generateConstructorsFor(stencil, typeBuilder, rClass)
val initMethod = createInitBuilderFor(stencil, typeBuilder)
stencil.traits()
.map { traitName -> traitMap[traitName] }
.forEach { it?.generateFor(typeBuilder, initMethod, rClass, stencil.name()) }
typeBuilder.addFunction(initMethod.build())
stencil.typeHook(typeBuilder)
return typeBuilder
}