[✓] Proguard - nothing blows up spectacularly during assemble gradle task
[✓] Proguard - make sure the primary dex file does not become bloated because of Kotlin
[✓] Proguard - stacktraces from Kotlin code can be easily deobfuscated
[✓] Proguard - stacktraces from Java code which is called from Kotlin code can be easily deobfuscated
[✓] compilation time - app can be built in finite amount of time (sidenote: this is quite tricky to assess - the compilation time might be a non-linear function of Kotlin code size; think hard if we can somehow make sure we won't have this issue in few months)
[✓] make sure the incremental builds are fast
[✓] Dagger 2 - you can have Kotlin components & modules
[✓] Dagger 2 - you can have mix of Kotlin & Java components & modules
[✓] Dagger 2 - you can use @Import annotation in Kotlin classes
[✓] Dagger 2 - you can @Provide Kotlin classes in Java modules
[✓] apt - you can use Kotlin with other annotation processors
[✓] apt - you can use the same annotation processor with regular Java apt and with Kotlin kapt
[✓] reflection - you can have a Kotlin POJO (POKO?) using Gson annotations
[✗] codestyle settings - prepare and commit IntelliJ/AndroidStudio formatter configuration
Some formatter I'd like to have are missing (e.g. https://youtrack.jetbrains.com/issue/KT-14126)
[✗] Lint - standard Android checks are performed on Kotlin
Only the ones that operate on .class files
[✗] Lint - there are no false positives because of Kotlin code
You get the UnusedResources false positive, because Kotlin sources are not processed. (https://youtrack.jetbrains.com/issue/KT-12499)
[✗] Lint - our custom lint checks are performed on Kotlin code
Only the ones that operate on .class files
[✗] Instant Run - works with Kotlin
JRebel works fine.
[✓] Custom Android Views in Kotlin - there is no bunch of boxing/unboxing in onDraw calls
[✓] AOP - check if code weaving works with Kotlin code
[✗] Find a mindblowing example of Kotlin code that would look like shit when written in plain old Java
Nothing mindblowing, but I like sealed classes + when
expressions instead of Visitor pattern; I also like the fact that for (val (k, v) in map)
is based on language mechanisms and is not some special built-in syntax sugar.