Allow to use "static" part of class in own constructors by short name, including in primary constructor

This commit is contained in:
Zalim Bashorov
2015-12-08 20:57:45 +03:00
parent f319b1b93a
commit 5bf8b4d946
30 changed files with 1017 additions and 25 deletions
@@ -0,0 +1,65 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
import kotlin.reflect.*
annotation class Ann(
val kc1: KClass<*>,
val kc2: KClass<*>,
val kc3: KClass<*>,
val c: Int,
val cc: Int,
val cn: Int,
val ci: Int,
val t1: Int,
val t2: Int
)
class A
@Ann(
Nested::class,
Inner::class,
Interface::class,
CONST,
Companion.CONST,
Nested.CONST,
Interface.CONST,
<!UNRESOLVED_REFERENCE!>a<!>,
<!UNRESOLVED_REFERENCE!>b<!>()
)
constructor() {
@Ann(
Nested::class,
Inner::class,
Interface::class,
CONST,
Companion.CONST,
Nested.CONST,
Interface.CONST,
<!UNRESOLVED_REFERENCE!>a<!>,
<!UNRESOLVED_REFERENCE!>b<!>()
)
constructor(dummy: Int) : this()
class Nested {
companion object {
const val CONST = 2
}
}
inner class Inner
interface Interface {
companion object {
const val CONST = 3
}
}
val a = 1
fun b() = 2
companion object {
const val CONST = 1
fun foo(): Nested = null!!
}
}