diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/context/CodegenContext.java b/compiler/backend/src/org/jetbrains/jet/codegen/context/CodegenContext.java index 22bb09dfd80..3b37de3c402 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/context/CodegenContext.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/context/CodegenContext.java @@ -31,10 +31,7 @@ import org.jetbrains.jet.storage.LockBasedStorageManager; import org.jetbrains.jet.storage.NullableLazyValue; import org.jetbrains.org.objectweb.asm.Type; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import static org.jetbrains.jet.codegen.AsmUtil.CAPTURED_THIS_FIELD; import static org.jetbrains.jet.codegen.AsmUtil.getVisibilityAccessFlag; @@ -231,7 +228,7 @@ public abstract class CodegenContext { @NotNull public DeclarationDescriptor getAccessor(@NotNull DeclarationDescriptor descriptor, boolean isForBackingFieldInOuterClass, @Nullable JetType delegateType) { if (accessors == null) { - accessors = new HashMap(); + accessors = new LinkedHashMap(); } descriptor = descriptor.getOriginal(); DeclarationDescriptor accessor = accessors.get(descriptor); diff --git a/compiler/tests/org/jetbrains/jet/codegen/MethodOrderTest.kt b/compiler/tests/org/jetbrains/jet/codegen/MethodOrderTest.kt index 7b1c0881035..d3803a43e9d 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/MethodOrderTest.kt +++ b/compiler/tests/org/jetbrains/jet/codegen/MethodOrderTest.kt @@ -80,6 +80,26 @@ public class MethodOrderTest: CodegenTestCase() { ) } + public fun testMemberAccessor() { + doTest( + """ + class Outer(private val a: Int, private var b: String) { + private fun c() { + } + + inner class Inner() { + { + b = b + a + c() + } + } + } + """, + "Outer", + listOf("()V", "c()V", "(ILjava/lang/String;)V", "getB\$b$0(LOuter;)Ljava/lang/String;", "setB\$b$0(LOuter;Ljava/lang/String;)V", "getA\$b$1(LOuter;)I", "c\$b$2(LOuter;)V") + ) + } + private fun doTest(sourceText: String, classSuffix: String, expectedOrder: List) { createEnvironmentWithMockJdkAndIdeaAnnotations(ConfigurationKind.JDK_AND_ANNOTATIONS) myFiles = CodegenTestFiles.create("file.kt", sourceText, myEnvironment!!.getProject())