UNNECESSARY_LATEINIT warning introduced #KT-13295 Fixed

(cherry picked from commit 88f9938)
This commit is contained in:
Mikhail Glukhikh
2016-09-26 11:17:42 +03:00
committed by Mikhail Glukhikh
parent b0ed6adce3
commit 4da9a101cf
27 changed files with 316 additions and 3 deletions
@@ -0,0 +1,9 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class Foo {
<!UNNECESSARY_LATEINIT!>lateinit<!> var bar: String
constructor(baz: Int) {
bar = ""
}
}
@@ -0,0 +1,9 @@
package
public final class Foo {
public constructor Foo(/*0*/ baz: kotlin.Int)
public final lateinit var bar: kotlin.String
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
}
@@ -0,0 +1,11 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class Foo {
<!UNNECESSARY_LATEINIT!>lateinit<!> var x: String
constructor() {
x = "Foo"
}
constructor(x: String, y: String): <!NONE_APPLICABLE!>this<!>(y.hashCode())
}
@@ -0,0 +1,10 @@
package
public final class Foo {
public constructor Foo()
public constructor Foo(/*0*/ x: kotlin.String, /*1*/ y: kotlin.String)
public final lateinit var x: kotlin.String
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
}
@@ -0,0 +1,7 @@
class Foo {
<!UNNECESSARY_LATEINIT!>lateinit<!> var bar: String
init {
bar = ""
}
}
@@ -0,0 +1,9 @@
package
public final class Foo {
public constructor Foo()
public final lateinit var bar: kotlin.String
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
}
@@ -0,0 +1,13 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class Foo {
<!UNNECESSARY_LATEINIT!>lateinit<!> var bar: String
constructor() {
bar = ""
}
constructor(baz: Int) {
bar = ""
}
}
@@ -0,0 +1,10 @@
package
public final class Foo {
public constructor Foo()
public constructor Foo(/*0*/ baz: kotlin.Int)
public final lateinit var bar: kotlin.String
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
}
@@ -0,0 +1,15 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class Foo {
<!UNNECESSARY_LATEINIT!>lateinit<!> var bar: String
constructor() {
bar = ""
}
constructor(a: Int) : this() {
}
constructor(a: Int, b: Int) : this(a) {
}
}
@@ -0,0 +1,11 @@
package
public final class Foo {
public constructor Foo()
public constructor Foo(/*0*/ a: kotlin.Int)
public constructor Foo(/*0*/ a: kotlin.Int, /*1*/ b: kotlin.Int)
public final lateinit var bar: kotlin.String
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
}
@@ -0,0 +1,10 @@
class Foo {
// Erroneous case: after lateinit removal, we'll have error at 'bar += baz', not here
// However, looks like we must have error at 'bar += baz' even with lateinit
// because nobody can initialize this 'bar' before constructor is called
<!UNNECESSARY_LATEINIT!>lateinit<!> var bar: String
constructor(baz: Int) {
bar += baz
}
}
@@ -0,0 +1,9 @@
package
public final class Foo {
public constructor Foo(/*0*/ baz: kotlin.Int)
public final lateinit var bar: kotlin.String
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
}
@@ -0,0 +1,9 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class Foo() {
lateinit var bar: String
constructor(baz: Int) : this() {
bar = ""
}
}
@@ -0,0 +1,10 @@
package
public final class Foo {
public constructor Foo()
public constructor Foo(/*0*/ baz: kotlin.Int)
public final lateinit var bar: kotlin.String
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
}
@@ -0,0 +1,7 @@
class Foo {
lateinit var bar: String
fun init() {
bar = ""
}
}
@@ -0,0 +1,10 @@
package
public final class Foo {
public constructor Foo()
public final lateinit var bar: kotlin.String
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 final fun init(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,9 @@
class Foo {
lateinit var x: String
constructor(y: String) {
x = y
}
constructor()
}
@@ -0,0 +1,10 @@
package
public final class Foo {
public constructor Foo()
public constructor Foo(/*0*/ y: kotlin.String)
public final lateinit var x: kotlin.String
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
}
@@ -0,0 +1,13 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class Foo {
<!UNNECESSARY_LATEINIT!>lateinit<!> var bar: String
constructor() {
bar = ""
}
constructor(a: Int) : <!CYCLIC_CONSTRUCTOR_DELEGATION_CALL!>this<!>(a) {
bar = "a"
}
}
@@ -0,0 +1,10 @@
package
public final class Foo {
public constructor Foo()
public constructor Foo(/*0*/ a: kotlin.Int)
public final lateinit var bar: kotlin.String
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
}
@@ -0,0 +1,18 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class Foo {
<!UNNECESSARY_LATEINIT!>lateinit<!> var bar: String
constructor() {
bar = ""
}
constructor(a: Int) : <!CYCLIC_CONSTRUCTOR_DELEGATION_CALL!>this<!>(a, 0, 0) {
}
constructor(a: Int, b: Int) : <!CYCLIC_CONSTRUCTOR_DELEGATION_CALL!>this<!>(a) {
}
constructor(a: Int, b: Int, c: Int) : <!CYCLIC_CONSTRUCTOR_DELEGATION_CALL!>this<!>(a, b) {
}
}
@@ -0,0 +1,12 @@
package
public final class Foo {
public constructor Foo()
public constructor Foo(/*0*/ a: kotlin.Int)
public constructor Foo(/*0*/ a: kotlin.Int, /*1*/ b: kotlin.Int)
public constructor Foo(/*0*/ a: kotlin.Int, /*1*/ b: kotlin.Int, /*2*/ c: kotlin.Int)
public final lateinit var bar: kotlin.String
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
}