Delete K*FunctionNImpl classes

In favor of KFunctionImpl, KMemberFunctionImpl and KExtensionFunctionImpl
This commit is contained in:
Alexander Udalov
2014-05-16 20:55:04 +04:00
parent 8f7c0f0b65
commit 54c21ffbf3
5 changed files with 5 additions and 311 deletions
@@ -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) }