Initial support for classes in scripts and REPL

This commit is contained in:
Alexander Udalov
2014-07-07 03:53:02 +04:00
parent c873806b54
commit 415fe7a5e6
18 changed files with 177 additions and 5 deletions
@@ -0,0 +1,6 @@
>>> open class A(val result: String) {
... fun foo() = result
... }
>>> class B : A("OK")
>>> B().foo()
OK
@@ -0,0 +1,13 @@
>>> class A {
... fun foo() = "Old"
... }
>>> val oldA = A()
>>> class A {
... fun foo() = "New"
... }
>>> oldA.foo()
Old
>>> A().foo()
New
>>> oldA.javaClass == javaClass<A>()
false
@@ -0,0 +1,2 @@
>>> class A
>>> class B {}
@@ -0,0 +1,2 @@
>>> class A
>>> class A
@@ -0,0 +1,11 @@
>>> enum class E {
... FIRST {
... override fun foo() = "HELLO"
... }
... SECOND {
... override fun foo() = "WORLD"
... }
... open fun foo() = "E"
... }
>>> E.FIRST.foo() + " " + E.SECOND.foo()
HELLO WORLD
@@ -0,0 +1,5 @@
>>> import java.util.Collections
>>> Collections.emptyList<Nothing>()
[]
>>> Collections.singletonList(":|||:")
[:|||:]
@@ -0,0 +1,6 @@
>>> class A { override fun toString() = "A" }
>>> val a = A()
>>> a
A
>>> a.toString()
A
@@ -0,0 +1,8 @@
>>> enum class E {
... FIRST
... SECOND
... }
>>> E.values().toList()
[FIRST, SECOND]
>>> E.FIRST.javaClass == E.SECOND.javaClass // check that no artificial classes are generated for simple enum entries
true
@@ -0,0 +1,6 @@
>>> trait A
>>> trait B : A {
... fun foo() = 45
... }
>>> javaClass<A>().isAssignableFrom(javaClass<B>())
true