Implement Kotlin usage classification

This commit is contained in:
Alexey Sedunov
2013-06-27 16:35:17 +04:00
parent 6e513f067f
commit 21d6666c26
26 changed files with 648 additions and 49 deletions
@@ -0,0 +1,34 @@
package client
import server.Server
class Client: Server {
var nextServer: Server? = null
val name = Server.NAME
fun foo(s: Server) {
val server: Server = s
println("Server: $server")
}
fun getNextServer(): Server? {
return nextServer
}
override fun work() {
super<Server>.work()
println("Client")
}
}
fun Client.bar(s: Server) {
foo(s)
}
fun Client.hasNextServer(): Boolean {
return getNextServer() != null
}
fun Any.asServer(): Server? {
return if (this is Server) this as Server else null
}
@@ -0,0 +1,11 @@
package server
open class <caret>Server {
class object {
val NAME = "Server"
}
open fun work() {
println("Server")
}
}
@@ -0,0 +1,8 @@
package client
import server.X
X("")
class Client {
}
@@ -0,0 +1,3 @@
package server
annotation class <caret>X(val x: String)
@@ -0,0 +1,9 @@
package client
import server.Data
class Client<T: Data, X> where X: Data {
}
val c = Client<Data>()
@@ -0,0 +1,3 @@
package server
data class <caret>Data
@@ -0,0 +1,12 @@
package client
import server.processRequest
class Client {
val methodRef = ::processRequest()
fun doProcessRequest() {
println("Process...")
processRequest()
}
}
@@ -0,0 +1,4 @@
package server;
fun <caret>processRequest() = "foo"
@@ -0,0 +1,9 @@
package client;
import server.O
class Client {
fun fooBar() {
println("foo = " + O.instance$.getFoo())
}
}
@@ -0,0 +1,6 @@
package server;
object <caret>O {
var foo: String = "foo"
}
@@ -0,0 +1,11 @@
package client
import server.O
class Client {
fun fooBar() {
println("foo = ${O.foo}")
val obj = O
println("length: ${obj.foo.length()}")
}
}
@@ -0,0 +1,6 @@
package server;
object <caret>O {
var foo: String = "foo"
}
@@ -0,0 +1,9 @@
package client;
import server.O
class Client {
fun fooBar() {
println("foo = " + O.instance$.getFoo())
}
}
@@ -0,0 +1,6 @@
package server;
object O {
var <caret>foo: String = "foo"
}
@@ -0,0 +1,10 @@
package client
import server.foo
class Client {
fun fooBar() {
println("foo = ${server.foo}")
println("length: ${server.foo.length()}")
}
}
@@ -0,0 +1,4 @@
package server;
var <caret>foo: String = "foo"