Recompile all enum usages when new entry is added

Original commit: 0cf2928761
This commit is contained in:
Alexey Tsvetkov
2015-12-23 15:27:58 +03:00
parent 7eb8c94ca8
commit d6b568005f
16 changed files with 129 additions and 4 deletions
@@ -0,0 +1,4 @@
enum class Enum {
A,
B
}
@@ -0,0 +1,5 @@
enum class Enum {
A,
B,
C
}
@@ -0,0 +1,27 @@
Cleaning output files:
out/production/module/Enum.class
End of files
Compiling files:
src/Enum.kt
End of files
Cleaning output files:
out/production/module/GetRandomEnumEntryKt.class
out/production/module/META-INF/module.kotlin_module
out/production/module/UseKt.class
End of files
Compiling files:
src/getRandomEnumEntry.kt
src/use.kt
End of files
COMPILATION FAILED
'when' expression must be exhaustive or contain an 'else' branch
Cleaning output files:
out/production/module/Enum.class
End of files
Compiling files:
src/Enum.kt
src/getRandomEnumEntry.kt
src/use.kt
End of files
@@ -0,0 +1,6 @@
import java.util.Random
fun getRandomEnumEntry() =
with (Enum.values()) {
get(Random().nextInt(size))
}
@@ -0,0 +1,7 @@
import Enum.*
fun use(e: Enum): String =
when (e) {
A -> "A"
B -> "B"
}
@@ -0,0 +1,8 @@
import Enum.*
fun use(e: Enum): String =
when (e) {
A -> "A"
B -> "B"
C -> "C"
}
@@ -0,0 +1,3 @@
fun useImplicit() {
println(use(getRandomEnumEntry()))
}
@@ -0,0 +1,7 @@
enum class Enum(x: String) {
A("a"),
B("b");
val becameNullable: Any = x
val unchanged: Any = x
}
@@ -0,0 +1,7 @@
enum class Enum(x: String) {
A("a"),
B("b");
val becameNullable: Any? = x
val unchanged: Any = x
}
@@ -0,0 +1,24 @@
Cleaning output files:
out/production/module/Enum.class
End of files
Compiling files:
src/Enum.kt
End of files
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/UseBecameNullableKt.class
End of files
Compiling files:
src/useBecameNullable.kt
End of files
COMPILATION FAILED
Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type kotlin.Any?
Cleaning output files:
out/production/module/Enum.class
End of files
Compiling files:
src/Enum.kt
src/useBecameNullable.kt
End of files
@@ -0,0 +1,5 @@
import Enum.*
fun useBecameNullable(e: Enum) {
println(e.becameNullable.hashCode())
}
@@ -0,0 +1,5 @@
import Enum.*
fun useBecameNullable(e: Enum) {
println(e.becameNullable?.hashCode())
}
@@ -0,0 +1,5 @@
import Enum.*
fun useUnchanged(e: Enum) {
println(e.unchanged.hashCode())
}