Initializer default values in 'tailrec' method in proper order
#KT-31540 Fixed
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
//!LANGUAGE: +ProperComputationOrderOfTailrecDefaultParameters
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
fun withEffects(): String = "OK"
|
||||
|
||||
const val Z = "123"
|
||||
|
||||
enum class EnumA {
|
||||
A
|
||||
}
|
||||
|
||||
tailrec fun foo(i: Int = 1, c: Char = '2', s: String = "1234", b: Boolean = true, d: Double = 1.0, l: Long = 1L, y: String = withEffects()) {
|
||||
foo(i, c, s, b, d, l, y)
|
||||
}
|
||||
|
||||
|
||||
tailrec fun foo2(x: Int = 1, y: String = withEffects(), z: String = Z) {
|
||||
foo2(x, y, z)
|
||||
}
|
||||
|
||||
tailrec fun foo3(y: String = withEffects()) {
|
||||
foo3(y)
|
||||
}
|
||||
|
||||
tailrec fun foo4(x: String = withEffects(), y: String = withEffects()) {
|
||||
foo4(x, y)
|
||||
}
|
||||
|
||||
tailrec fun foo5(x: String = withEffects(), y: String = withEffects(), z: String = withEffects()) {
|
||||
foo5(x, y, z)
|
||||
}
|
||||
|
||||
tailrec fun foo6(x: String = withEffects(), y: EnumA = EnumA.A) {
|
||||
foo6(x, y)
|
||||
}
|
||||
|
||||
tailrec fun foo7(x: String = withEffects(), y: KClass<out EnumA> = EnumA.A::class) {
|
||||
foo7(x, y)
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package
|
||||
|
||||
public const val Z: kotlin.String = "123"
|
||||
public tailrec fun foo(/*0*/ i: kotlin.Int = ..., /*1*/ c: kotlin.Char = ..., /*2*/ s: kotlin.String = ..., /*3*/ b: kotlin.Boolean = ..., /*4*/ d: kotlin.Double = ..., /*5*/ l: kotlin.Long = ..., /*6*/ y: kotlin.String = ...): kotlin.Unit
|
||||
public tailrec fun foo2(/*0*/ x: kotlin.Int = ..., /*1*/ y: kotlin.String = ..., /*2*/ z: kotlin.String = ...): kotlin.Unit
|
||||
public tailrec fun foo3(/*0*/ y: kotlin.String = ...): kotlin.Unit
|
||||
public tailrec fun foo4(/*0*/ x: kotlin.String = ..., /*1*/ y: kotlin.String = ...): kotlin.Unit
|
||||
public tailrec fun foo5(/*0*/ x: kotlin.String = ..., /*1*/ y: kotlin.String = ..., /*2*/ z: kotlin.String = ...): kotlin.Unit
|
||||
public tailrec fun foo6(/*0*/ x: kotlin.String = ..., /*1*/ y: EnumA = ...): kotlin.Unit
|
||||
public tailrec fun foo7(/*0*/ x: kotlin.String = ..., /*1*/ y: kotlin.reflect.KClass<out EnumA> = ...): kotlin.Unit
|
||||
public fun withEffects(): kotlin.String
|
||||
|
||||
public final enum class EnumA : kotlin.Enum<EnumA> {
|
||||
enum entry A
|
||||
|
||||
private constructor EnumA()
|
||||
public final override /*1*/ /*fake_override*/ val name: kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
|
||||
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: EnumA): kotlin.Int
|
||||
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
|
||||
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<EnumA!>!
|
||||
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): EnumA
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<EnumA>
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
//!LANGUAGE: -ProperComputationOrderOfTailrecDefaultParameters
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
fun withEffects(): String = "OK"
|
||||
|
||||
const val Z = "123"
|
||||
|
||||
enum class EnumA {
|
||||
A
|
||||
}
|
||||
|
||||
tailrec fun foo(i: Int = 1, c: Char = '2', s: String = "1234", b: Boolean = true, d: Double = 1.0, l: Long = 1L, y: String = withEffects()) {
|
||||
foo(i, c, s, b, d, l, y)
|
||||
}
|
||||
|
||||
tailrec fun foo2(x: Int = 1, y: String = withEffects(), z: String = Z) {
|
||||
foo2(x, y, z)
|
||||
}
|
||||
|
||||
tailrec fun foo3(y: String = withEffects()) {
|
||||
foo3(y)
|
||||
}
|
||||
|
||||
<!TAILREC_WITH_DEFAULTS!>tailrec fun foo4(x: String = withEffects(), y: String = withEffects())<!> {
|
||||
foo4(x, y)
|
||||
}
|
||||
|
||||
<!TAILREC_WITH_DEFAULTS!>tailrec fun foo5(x: String = withEffects(), y: String = withEffects(), z: String = withEffects())<!> {
|
||||
foo5(x, y, z)
|
||||
}
|
||||
|
||||
<!TAILREC_WITH_DEFAULTS!>tailrec fun foo6(x: String = withEffects(), y: EnumA = EnumA.A)<!> {
|
||||
foo6(x, y)
|
||||
}
|
||||
|
||||
<!TAILREC_WITH_DEFAULTS!>tailrec fun foo7(x: String = withEffects(), y: KClass<out EnumA> = EnumA.A::class)<!> {
|
||||
foo7(x, y)
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package
|
||||
|
||||
public const val Z: kotlin.String = "123"
|
||||
public tailrec fun foo(/*0*/ i: kotlin.Int = ..., /*1*/ c: kotlin.Char = ..., /*2*/ s: kotlin.String = ..., /*3*/ b: kotlin.Boolean = ..., /*4*/ d: kotlin.Double = ..., /*5*/ l: kotlin.Long = ..., /*6*/ y: kotlin.String = ...): kotlin.Unit
|
||||
public tailrec fun foo2(/*0*/ x: kotlin.Int = ..., /*1*/ y: kotlin.String = ..., /*2*/ z: kotlin.String = ...): kotlin.Unit
|
||||
public tailrec fun foo3(/*0*/ y: kotlin.String = ...): kotlin.Unit
|
||||
public tailrec fun foo4(/*0*/ x: kotlin.String = ..., /*1*/ y: kotlin.String = ...): kotlin.Unit
|
||||
public tailrec fun foo5(/*0*/ x: kotlin.String = ..., /*1*/ y: kotlin.String = ..., /*2*/ z: kotlin.String = ...): kotlin.Unit
|
||||
public tailrec fun foo6(/*0*/ x: kotlin.String = ..., /*1*/ y: EnumA = ...): kotlin.Unit
|
||||
public tailrec fun foo7(/*0*/ x: kotlin.String = ..., /*1*/ y: kotlin.reflect.KClass<out EnumA> = ...): kotlin.Unit
|
||||
public fun withEffects(): kotlin.String
|
||||
|
||||
public final enum class EnumA : kotlin.Enum<EnumA> {
|
||||
enum entry A
|
||||
|
||||
private constructor EnumA()
|
||||
public final override /*1*/ /*fake_override*/ val name: kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
|
||||
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: EnumA): kotlin.Int
|
||||
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
|
||||
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<EnumA!>!
|
||||
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): EnumA
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<EnumA>
|
||||
}
|
||||
Reference in New Issue
Block a user