Prohibit accessing nested classes/objects of class object using class literal

The fqname of class should be clear from code
Example: can't shorten A.Default.B.Default.C to A.B.C
Also fixes problem when nested class of enum class could be accessed via enum entry
This commit is contained in:
Pavel V. Talanov
2015-02-18 19:22:25 +03:00
parent 86bbb117ef
commit ffabe19229
25 changed files with 480 additions and 44 deletions
@@ -8,6 +8,6 @@ class Outer() {
}
fun box (): String {
val inner = Outer.Inner()
val inner = Outer.Default.Inner()
return "OK"
}
@@ -1,4 +1,4 @@
fun box() = if(Context.operatingSystemType == Context.OsType.OTHER) "OK" else "fail"
fun box() = if(Context.operatingSystemType == Context.Default.OsType.OTHER) "OK" else "fail"
public class Context
{
@@ -13,17 +13,17 @@ class A {
fun foo(x : A.Default.Season) : String {
return when (x) {
A.Season.WINTER -> "winter"
A.Season.SPRING -> "spring"
A.Season.SUMMER -> "summer"
A.Default.Season.WINTER -> "winter"
A.Default.Season.SPRING -> "spring"
A.Default.Season.SUMMER -> "summer"
else -> "other"
}
}
fun box() : String {
assertEquals("winter", foo(A.Season.WINTER))
assertEquals("spring", foo(A.Season.SPRING))
assertEquals("summer", foo(A.Season.SUMMER))
assertEquals("other", foo(A.Season.AUTUMN))
assertEquals("winter", foo(A.Default.Season.WINTER))
assertEquals("spring", foo(A.Default.Season.SPRING))
assertEquals("summer", foo(A.Default.Season.SUMMER))
assertEquals("other", foo(A.Default.Season.AUTUMN))
return "OK"
}