vmironov
01/28/2016, 11:18 PMfun main(args: Array<String>) {
arrayListOf("hello", "world").forEach {
println(it)
}
String.CASE_INSENSITIVE_ORDER.reversed()
}
compiles to
Compiled from "Main.kt"
public final class com.github.vmironov.MainKt {
public static final void main(java.lang.String[]);
Code:
0: aload_0
1: ldc #9 // String args
3: invokestatic #15 // Method kotlin/jvm/internal/Intrinsics.checkParameterIsNotNull:(Ljava/lang/Object;Ljava/lang/String;)V
6: iconst_2
7: anewarray #17 // class java/lang/String
10: dup
11: iconst_0
12: ldc #19 // String hello
14: aastore
15: dup
16: iconst_1
17: ldc #21 // String world
19: aastore
20: invokestatic #27 // Method kotlin/collections/CollectionsKt.arrayListOf:([Ljava/lang/Object;)Ljava/util/ArrayList;
23: checkcast #29 // class java/lang/Iterable
26: astore_1
27: nop
28: aload_1
29: invokeinterface #33, 1 // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
34: astore_2
35: aload_2
36: invokeinterface #39, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z
41: ifeq 69
44: aload_2
45: invokeinterface #43, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
50: astore_3
51: aload_3
52: checkcast #17 // class java/lang/String
55: astore 4
57: aload 4
59: invokestatic #49 // Method kotlin/io/ConsoleKt.println:(Ljava/lang/Object;)V
62: getstatic #55 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
65: pop
66: goto 35
69: getstatic #60 // Field kotlin/jvm/internal/StringCompanionObject.INSTANCE:Lkotlin/jvm/internal/StringCompanionObject;
72: invokestatic #66 // Method kotlin/text/StringsKt.getCASE_INSENSITIVE_ORDER:(Lkotlin/jvm/internal/StringCompanionObject;)Ljava/util/Comparator;
75: invokeinterface #72, 1 // InterfaceMethod java/util/Comparator.reversed:()Ljava/util/Comparator;
80: pop
81: return
}
in case of forEach
call extension method takes precedence over instance method, but in case of reversed
the instance method is used