Do not check receiver for protected constructor calls

Checks for protected constructors should be performed manually,
because they are rather complex
This commit is contained in:
Denis Zharkov
2016-03-28 16:19:35 +03:00
parent 5bf336474d
commit 5056c43975
6 changed files with 145 additions and 0 deletions
@@ -0,0 +1,22 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
open class A protected constructor(x: Int) {
protected constructor() : this(1)
protected constructor(x: String) : this(2)
public constructor(x: Double) : this(3)
}
fun foo() {
<!INVISIBLE_MEMBER!>A<!>()
A(1.0)
}
class B1 : A(1) {}
class B2 : A() {}
class B3 : A("") {}
class B4 : A {
constructor() : super(1)
constructor(x: Int) : super()
constructor(x: Int, y: Int) : super("")
}
@@ -0,0 +1,43 @@
package
public fun foo(): kotlin.Unit
public open class A {
protected constructor A()
public constructor A(/*0*/ x: kotlin.Double)
protected constructor A(/*0*/ x: kotlin.Int)
protected constructor A(/*0*/ 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
}
public final class B1 : A {
public constructor B1()
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
}
public final class B2 : A {
public constructor B2()
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
}
public final class B3 : A {
public constructor B3()
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
}
public final class B4 : A {
public constructor B4()
public constructor B4(/*0*/ x: kotlin.Int)
public constructor B4(/*0*/ x: kotlin.Int, /*1*/ 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
}
@@ -0,0 +1,19 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
open class Outer {
inner open class A protected constructor(x: Int) {
protected constructor() : this(1)
protected constructor(x: String) : this(2)
}
inner class B1 : A(1) {}
inner class B2 : A() {}
inner class B3 : A("") {}
inner class B4 : A {
constructor() : super(1)
constructor(x: Int) : super()
constructor(x: Int, y: Int) : super("")
}
}
@@ -0,0 +1,47 @@
package
public open class Outer {
public constructor Outer()
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
public open inner class A {
protected constructor A()
protected constructor A(/*0*/ x: kotlin.Int)
protected constructor A(/*0*/ 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
}
public final inner class B1 : Outer.A {
public constructor B1()
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
}
public final inner class B2 : Outer.A {
public constructor B2()
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
}
public final inner class B3 : Outer.A {
public constructor B3()
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
}
public final inner class B4 : Outer.A {
public constructor B4()
public constructor B4(/*0*/ x: kotlin.Int)
public constructor B4(/*0*/ x: kotlin.Int, /*1*/ 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
}
}