| /* |
| * Copyright 2010-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license |
| * that can be found in the LICENSE file. |
| */ |
| // JVM_ABI_K1_K2_DIFF: KT-63864 |
| // WITH_STDLIB |
| import kotlin.test.* |
| |
| val sb = StringBuilder() |
| |
| class ArraysConstructor { |
| private val memberArray: IntArray |
| constructor(int1: Int, int2: Int) { |
| memberArray = IntArray(2) |
| set(int1, int2) |
| } |
| fun set(int1: Int, int2: Int) { |
| memberArray[0] = int1 |
| memberArray[1] = int2 |
| } |
| fun log() { |
| sb.appendLine("Array (constructor init):") |
| sb.appendLine("Size: ${memberArray.size}") |
| sb.appendLine("Contents: ${memberArray.contentToString()}") |
| } |
| } |
| |
| class ArraysDefault { |
| private val memberArray = IntArray(2) |
| constructor(int1: Int, int2: Int) { |
| set(int1, int2) |
| } |
| fun set(int1: Int, int2: Int) { |
| memberArray[0] = int1 |
| memberArray[1] = int2 |
| } |
| fun log() { |
| sb.appendLine("Array (default value init):") |
| sb.appendLine("Size: ${memberArray.size}") |
| sb.appendLine("Contents: ${memberArray.contentToString()}") |
| } |
| } |
| |
| class ArraysInitBlock { |
| private val memberArray : IntArray |
| init { |
| memberArray = IntArray(2) |
| } |
| constructor(int1: Int, int2: Int) { |
| set(int1, int2) |
| } |
| fun set(int1: Int, int2: Int) { |
| memberArray[0] = int1 |
| memberArray[1] = int2 |
| } |
| fun log() { |
| sb.appendLine("Array (init block):") |
| sb.appendLine("Size: ${memberArray.size}") |
| sb.appendLine("Contents: ${memberArray.contentToString()}") |
| } |
| } |
| |
| fun box(): String { |
| val array1 = (::ArraysConstructor)(1, 2) |
| array1.log() |
| array1.set( 3, 4) |
| array1.log() |
| |
| val array2 = (::ArraysDefault)(1, 2) |
| array2.log() |
| array2.set( 3, 4) |
| array2.log() |
| |
| val array3 = (::ArraysInitBlock)(1, 2) |
| array3.log() |
| array3.set( 3, 4) |
| array3.log() |
| |
| assertEquals(""" |
| Array (constructor init): |
| Size: 2 |
| Contents: [1, 2] |
| Array (constructor init): |
| Size: 2 |
| Contents: [3, 4] |
| Array (default value init): |
| Size: 2 |
| Contents: [1, 2] |
| Array (default value init): |
| Size: 2 |
| Contents: [3, 4] |
| Array (init block): |
| Size: 2 |
| Contents: [1, 2] |
| Array (init block): |
| Size: 2 |
| Contents: [3, 4] |
| |
| """.trimIndent(), sb.toString()) |
| return "OK" |
| } |