Delete K*FunctionNImpl classes
In favor of KFunctionImpl, KMemberFunctionImpl and KExtensionFunctionImpl
This commit is contained in:
@@ -34,16 +34,15 @@ enum class FunctionKind(
|
||||
K_EXTENSION_FUNCTION : FunctionKind("KExtensionFunction", true, "ExtensionFunction")
|
||||
|
||||
fun getFileName() = (if (isReflection()) "reflect/" else "") + classNamePrefix + "s.kt"
|
||||
fun getImplFileName() = "reflect/jvm/internal/${classNamePrefix}sImpl.kt"
|
||||
fun getClassName(i: Int) = classNamePrefix + i
|
||||
fun getImplClassName(i: Int) = classNamePrefix + i + "Impl"
|
||||
fun getSuperClassName(i: Int) = superClassNamePrefix?.plus(i)
|
||||
fun getPackage() = if (isReflection()) "kotlin.reflect" else "kotlin"
|
||||
|
||||
fun isReflection() = superClassNamePrefix != null
|
||||
fun isReflection() = name() startsWith "K"
|
||||
}
|
||||
|
||||
abstract class GenerateFunctionsBase(out: PrintWriter, val kind: FunctionKind): BuiltInsSourceGenerator(out) {
|
||||
override fun getPackage() = if (kind.isReflection()) "kotlin.reflect" else "kotlin"
|
||||
class GenerateFunctions(out: PrintWriter, val kind: FunctionKind) : BuiltInsSourceGenerator(out) {
|
||||
override fun getPackage() = kind.getPackage()
|
||||
|
||||
fun generateTypeParameters(i: Int, variance: Boolean) {
|
||||
out.print("<")
|
||||
@@ -60,9 +59,7 @@ abstract class GenerateFunctionsBase(out: PrintWriter, val kind: FunctionKind):
|
||||
if (variance) out.print("out ")
|
||||
out.print("R>")
|
||||
}
|
||||
}
|
||||
|
||||
class GenerateFunctions(out: PrintWriter, kind: FunctionKind) : GenerateFunctionsBase(out, kind) {
|
||||
override fun generateBody() {
|
||||
for (i in 0..MAX_PARAM_COUNT) {
|
||||
out.print("public trait " + kind.getClassName(i))
|
||||
@@ -102,27 +99,3 @@ class GenerateFunctions(out: PrintWriter, kind: FunctionKind) : GenerateFunction
|
||||
out.println("): R")
|
||||
}
|
||||
}
|
||||
|
||||
class GenerateKFunctionsImpl(out: PrintWriter, kind: FunctionKind) : GenerateFunctionsBase(out, kind) {
|
||||
override fun getPackage() = "kotlin.reflect.jvm.internal"
|
||||
|
||||
override fun generateBody() {
|
||||
out.println("import java.io.Serializable")
|
||||
out.println()
|
||||
for (i in 0..MAX_PARAM_COUNT) {
|
||||
out.print("public abstract class " + kind.getImplClassName(i))
|
||||
generateTypeParameters(i, true)
|
||||
out.print(" : ")
|
||||
out.print(kind.getClassName(i))
|
||||
generateTypeParameters(i, false)
|
||||
out.println(", Serializable {")
|
||||
generateToStringForFunctionImpl()
|
||||
out.println("}")
|
||||
}
|
||||
}
|
||||
|
||||
fun generateToStringForFunctionImpl() {
|
||||
// TODO: don't generate this in every function, create a common superclass for all functions / extension functions
|
||||
out.println(" override fun toString() = \"\${getClass().getGenericSuperclass()}\"")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,13 +59,7 @@ fun generateBuiltIns(generate: (File, (PrintWriter) -> BuiltInsSourceGenerator)
|
||||
assertExists(RUNTIME_JVM_DIR)
|
||||
|
||||
for (kind in FunctionKind.values()) {
|
||||
if (kind.isReflection()) {
|
||||
generate(File(REFLECTION_DIR, kind.getFileName())) { GenerateFunctions(it, kind) }
|
||||
generate(File(RUNTIME_JVM_DIR, kind.getImplFileName()), { GenerateKFunctionsImpl(it, kind) })
|
||||
}
|
||||
else {
|
||||
generate(File(BUILT_INS_SRC_DIR, kind.getFileName())) { GenerateFunctions(it, kind) }
|
||||
}
|
||||
generate(File(if (kind.isReflection()) REFLECTION_DIR else BUILT_INS_SRC_DIR, kind.getFileName())) { GenerateFunctions(it, kind) }
|
||||
}
|
||||
|
||||
generate(File(BUILT_INS_NATIVE_DIR, "Arrays.kt")) { GenerateArrays(it) }
|
||||
|
||||
Reference in New Issue
Block a user