Control flow changes for secondary constructors
This commit is contained in:
+19
@@ -0,0 +1,19 @@
|
||||
package
|
||||
|
||||
internal final class A {
|
||||
public constructor A()
|
||||
public constructor A(/*0*/ w: kotlin.Char)
|
||||
public constructor A(/*0*/ a: kotlin.Int, /*1*/ b: kotlin.Int = ...)
|
||||
internal final val overinitialized: kotlin.Int
|
||||
internal final val uninitialized: kotlin.Int
|
||||
internal final val useInitialized: kotlin.Int
|
||||
internal final val useUnitialized: kotlin.Int
|
||||
internal final val v: kotlin.Int = -1
|
||||
internal final val w: kotlin.Char
|
||||
internal final val x: kotlin.Int
|
||||
internal final var y: kotlin.Int
|
||||
internal final val z: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package
|
||||
|
||||
internal final class A {
|
||||
public constructor A()
|
||||
public constructor A(/*0*/ a: kotlin.Double, /*1*/ b: kotlin.Int = ...)
|
||||
public constructor A(/*0*/ a: kotlin.Int, /*1*/ b: kotlin.Int = ...)
|
||||
public constructor A(/*0*/ x: kotlin.String)
|
||||
public constructor A(/*0*/ a: kotlin.String, /*1*/ b: kotlin.Int = ...)
|
||||
internal final val overinitialized: kotlin.Int
|
||||
internal final val uninitialized: kotlin.Int
|
||||
internal final val useInitialized: kotlin.Int
|
||||
internal final val useUnitialized: kotlin.Int
|
||||
internal final val v: kotlin.Int = -1
|
||||
internal final val x: kotlin.Int
|
||||
internal final var y: kotlin.Int
|
||||
internal final val z: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
class A(val w: Char) {
|
||||
val x: Int
|
||||
var y: Int
|
||||
val z: Int
|
||||
val v = -1
|
||||
|
||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val uninitialized: Int<!>
|
||||
val overinitialized: Int
|
||||
|
||||
constructor(): this('a') {
|
||||
y = 1
|
||||
|
||||
<!VAL_REASSIGNMENT!>overinitialized<!> = 2
|
||||
<!VAL_REASSIGNMENT!>uninitialized<!> = 3
|
||||
}
|
||||
|
||||
// anonymous
|
||||
init {
|
||||
x = 4
|
||||
z = 5
|
||||
overinitialized = 6
|
||||
}
|
||||
|
||||
constructor(a: Int): this('b') {
|
||||
y = 7
|
||||
}
|
||||
|
||||
// anonymous
|
||||
init {
|
||||
y = 8
|
||||
}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package
|
||||
|
||||
internal final class A {
|
||||
public constructor A()
|
||||
public constructor A(/*0*/ w: kotlin.Char)
|
||||
public constructor A(/*0*/ a: kotlin.Int)
|
||||
internal final val overinitialized: kotlin.Int
|
||||
internal final val uninitialized: kotlin.Int
|
||||
internal final val v: kotlin.Int = -1
|
||||
internal final val w: kotlin.Char
|
||||
internal final val x: kotlin.Int
|
||||
internal final var y: kotlin.Int
|
||||
internal final val z: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
class A {
|
||||
val x: Int
|
||||
var y: Int
|
||||
val z: Int
|
||||
val v = -1
|
||||
|
||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val uninitialized: Int<!>
|
||||
val overinitialized: Int
|
||||
|
||||
constructor() {
|
||||
x = 1
|
||||
y = 2
|
||||
|
||||
<!VAL_REASSIGNMENT!>overinitialized<!> = 3
|
||||
uninitialized = 4
|
||||
}
|
||||
|
||||
constructor(a: Int): super() {
|
||||
x = 5
|
||||
y = 6
|
||||
}
|
||||
|
||||
constructor(x: String): this() {
|
||||
y = 7
|
||||
<!VAL_REASSIGNMENT!>uninitialized<!> = 8
|
||||
}
|
||||
|
||||
//anonymous
|
||||
init {
|
||||
z = 9
|
||||
overinitialized = 10
|
||||
}
|
||||
|
||||
// anonymous
|
||||
init {
|
||||
y = 12
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package
|
||||
|
||||
internal final class A {
|
||||
public constructor A()
|
||||
public constructor A(/*0*/ a: kotlin.Int)
|
||||
public constructor A(/*0*/ x: kotlin.String)
|
||||
internal final val overinitialized: kotlin.Int
|
||||
internal final val uninitialized: kotlin.Int
|
||||
internal final val v: kotlin.Int = -1
|
||||
internal final val x: kotlin.Int
|
||||
internal final var y: kotlin.Int
|
||||
internal final val z: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
@@ -1,17 +1,16 @@
|
||||
|
||||
class A {
|
||||
init {
|
||||
<!RETURN_NOT_ALLOWED!>return<!>
|
||||
<!RETURN_NOT_ALLOWED!>return 1<!>
|
||||
<!RETURN_NOT_ALLOWED, UNREACHABLE_CODE!>return 1<!>
|
||||
}
|
||||
constructor() {
|
||||
constructor() <!UNREACHABLE_CODE!>{
|
||||
if (1 == 1) {
|
||||
return
|
||||
return <!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>
|
||||
}
|
||||
return
|
||||
return <!TYPE_MISMATCH!>foo()<!>
|
||||
}
|
||||
}<!>
|
||||
|
||||
fun foo(): Int = 1
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
class A0 {
|
||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val x: Int<!>
|
||||
constructor() {
|
||||
if (1 == 1) {
|
||||
return
|
||||
}
|
||||
x = 1
|
||||
}
|
||||
constructor(arg: Int) {
|
||||
x = arg
|
||||
}
|
||||
}
|
||||
|
||||
class A1 {
|
||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val x: Int<!>
|
||||
constructor() {
|
||||
if (1 == 1) {
|
||||
return
|
||||
} else null!!
|
||||
<!UNREACHABLE_CODE!>x = 1<!>
|
||||
}
|
||||
}
|
||||
|
||||
class A2 {
|
||||
val x: Int
|
||||
constructor() {
|
||||
if (1 == 1) {
|
||||
x = 1
|
||||
return
|
||||
}
|
||||
else {
|
||||
x = 2
|
||||
}
|
||||
}
|
||||
constructor(arg: Int) {
|
||||
x = arg
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package
|
||||
|
||||
internal final class A0 {
|
||||
public constructor A0()
|
||||
public constructor A0(/*0*/ arg: kotlin.Int)
|
||||
internal final val x: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class A1 {
|
||||
public constructor A1()
|
||||
internal final val x: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class A2 {
|
||||
public constructor A2()
|
||||
public constructor A2(/*0*/ arg: kotlin.Int)
|
||||
internal final val x: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
class A(val w: Int) {
|
||||
val x: Int
|
||||
val useUnitialized = <!UNINITIALIZED_VARIABLE!>x<!> +
|
||||
<!UNINITIALIZED_VARIABLE!>y<!> +
|
||||
<!UNINITIALIZED_VARIABLE!>v<!>
|
||||
var y: Int
|
||||
val v = -1
|
||||
val useInitialized = useUnitialized + v + w
|
||||
|
||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val uninitialized: Int<!>
|
||||
|
||||
constructor(): this(1) {
|
||||
x + y + v + uninitialized + w
|
||||
}
|
||||
|
||||
// anonymous
|
||||
init {
|
||||
<!UNINITIALIZED_VARIABLE!>x<!> + <!UNINITIALIZED_VARIABLE!>y<!> + v + <!UNINITIALIZED_VARIABLE!>uninitialized<!> + w
|
||||
x = 1
|
||||
x + <!UNINITIALIZED_VARIABLE!>y<!> + v + <!UNINITIALIZED_VARIABLE!>uninitialized<!> + w
|
||||
}
|
||||
|
||||
// anonymous
|
||||
init {
|
||||
x + <!UNINITIALIZED_VARIABLE!>y<!> + v + <!UNINITIALIZED_VARIABLE!>uninitialized<!> + w
|
||||
y = 7
|
||||
x + y + v + <!UNINITIALIZED_VARIABLE!>uninitialized<!> + w
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package
|
||||
|
||||
internal final class A {
|
||||
public constructor A()
|
||||
public constructor A(/*0*/ w: kotlin.Int)
|
||||
internal final val uninitialized: kotlin.Int
|
||||
internal final val useInitialized: kotlin.Int
|
||||
internal final val useUnitialized: kotlin.Int
|
||||
internal final val v: kotlin.Int = -1
|
||||
internal final val w: kotlin.Int
|
||||
internal final val x: kotlin.Int
|
||||
internal final var y: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
class A {
|
||||
val x: Int
|
||||
val useUnitialized = <!UNINITIALIZED_VARIABLE, UNINITIALIZED_VARIABLE!>x<!> + // reported on each secondary constructor
|
||||
<!UNINITIALIZED_VARIABLE, UNINITIALIZED_VARIABLE!>y<!> +
|
||||
<!UNINITIALIZED_VARIABLE, UNINITIALIZED_VARIABLE!>v<!>
|
||||
var y: Int
|
||||
val v = -1
|
||||
|
||||
val useInitialized = useUnitialized + v
|
||||
|
||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val uninitialized: Int<!>
|
||||
|
||||
constructor() {
|
||||
x = 1
|
||||
y = 2
|
||||
|
||||
x + y + v + <!UNINITIALIZED_VARIABLE!>uninitialized<!>
|
||||
|
||||
uninitialized = 3
|
||||
|
||||
x + y + v + uninitialized
|
||||
}
|
||||
|
||||
constructor(a: Int): super() {
|
||||
<!UNINITIALIZED_VARIABLE!>x<!> + y + v + <!UNINITIALIZED_VARIABLE!>uninitialized<!>
|
||||
x = 4
|
||||
y = 5
|
||||
|
||||
x + y + v + <!UNINITIALIZED_VARIABLE!>uninitialized<!>
|
||||
}
|
||||
|
||||
constructor(x: String): this() {
|
||||
x + y + v + uninitialized
|
||||
}
|
||||
|
||||
//anonymous
|
||||
init {
|
||||
<!UNINITIALIZED_VARIABLE, UNINITIALIZED_VARIABLE!>y<!>
|
||||
}
|
||||
|
||||
// anonymous
|
||||
init {
|
||||
y = 9
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package
|
||||
|
||||
internal final class A {
|
||||
public constructor A()
|
||||
public constructor A(/*0*/ a: kotlin.Int)
|
||||
public constructor A(/*0*/ x: kotlin.String)
|
||||
internal final val uninitialized: kotlin.Int
|
||||
internal final val useInitialized: kotlin.Int
|
||||
internal final val useUnitialized: kotlin.Int
|
||||
internal final val v: kotlin.Int = -1
|
||||
internal final val x: kotlin.Int
|
||||
internal final var y: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user