object declarations need trait methods to be generated too (KT-2399)

This commit is contained in:
Dmitry Jemerov
2012-07-12 17:45:41 +02:00
parent f271d7363e
commit 40e4e32eab
3 changed files with 55 additions and 8 deletions
@@ -0,0 +1,43 @@
import java.util.Collection
import java.util.ArrayList
class JsonObject {
}
class JsonArray {
}
class ProjectInfo {
public fun toString(): String = "OK"
}
public trait Parser<in IN: Any, out OUT: Any> {
public fun parse(source: IN): OUT
}
public trait MultiParser<in IN: Any, out OUT: Any> {
public fun parse(source: IN): Collection<OUT>
}
public trait JsonParser<T: Any>: Parser<JsonObject, T>, MultiParser<JsonArray, T> {
public override fun parse(source: JsonArray): Collection<T> {
return ArrayList<T>()
}
}
public abstract class ProjectInfoJsonParser(): JsonParser<ProjectInfo> {
public override fun parse(source: JsonObject): ProjectInfo {
return ProjectInfo()
}
}
class ProjectApiContext {
public val projectInfoJsonParser: ProjectInfoJsonParser = object : ProjectInfoJsonParser(){
}
}
fun box(): String {
val context = ProjectApiContext()
val array = context.projectInfoJsonParser.parse(JsonArray())
return if (array != null) "OK" else "fail"
}