Extension function type is not allowed as supertype

This commit is contained in:
Michael Nedzelsky
2015-10-15 20:46:15 +03:00
parent d3e2dd5942
commit 8e9f1ac31a
10 changed files with 370 additions and 37 deletions
@@ -0,0 +1,24 @@
class A : <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>Double.() -> Unit<!> {
override fun invoke(p1: Double) {}
}
class B : <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>Int.(Double) -> Unit<!> {
override fun invoke(p1: Int, p2: Double) {}
}
open class C {}
abstract class A0 : <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>C.() -> Int<!>
abstract class A1 : <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>C.(Int) -> Int<!>
abstract class A2 : <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>C.(Int, String) -> Int<!>
open class D<T> {}
abstract class B0<T> : <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>D<T>.() -> Int<!>
abstract class B1<T> : <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>D<T>.(C) -> Int<!>
abstract class B2<T> : <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>D<T>.(T, C) -> T<!>
interface E<T> {}
abstract class C0: C(), <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>Int.() -> Double<!>
abstract class C1<T>: C(), E<T>, <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>Int.(C) -> Double<!>
@@ -0,0 +1,101 @@
package
public final class A : kotlin.Double.() -> kotlin.Unit {
public constructor A()
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*/ fun invoke(/*0*/ p1: kotlin.Double): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class A0 : C.() -> kotlin.Int {
public constructor A0()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: C): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class A1 : C.(kotlin.Int) -> kotlin.Int {
public constructor A1()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: C, /*1*/ p2: kotlin.Int): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class A2 : C.(kotlin.Int, kotlin.String) -> kotlin.Int {
public constructor A2()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: C, /*1*/ p2: kotlin.Int, /*2*/ p3: kotlin.String): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class B : kotlin.Int.(kotlin.Double) -> kotlin.Unit {
public constructor B()
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*/ fun invoke(/*0*/ p1: kotlin.Int, /*1*/ p2: kotlin.Double): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class B0</*0*/ T> : D<T>.() -> kotlin.Int {
public constructor B0</*0*/ T>()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: D<T>): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class B1</*0*/ T> : D<T>.(C) -> kotlin.Int {
public constructor B1</*0*/ T>()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: D<T>, /*1*/ p2: C): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class B2</*0*/ T> : D<T>.(T, C) -> T {
public constructor B2</*0*/ T>()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: D<T>, /*1*/ p2: T, /*2*/ p3: C): T
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class C {
public constructor C()
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 abstract class C0 : C, kotlin.Int.() -> kotlin.Double {
public constructor C0()
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: kotlin.Int): kotlin.Double
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class C1</*0*/ T> : C, E<T>, kotlin.Int.(C) -> kotlin.Double {
public constructor C1</*0*/ T>()
public open override /*3*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*3*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: kotlin.Int, /*1*/ p2: C): kotlin.Double
public open override /*3*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class D</*0*/ T> {
public constructor D</*0*/ T>()
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 interface E</*0*/ T> {
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,45 @@
class A : () -> Unit {
override fun invoke() {}
}
class AA : Function0<Unit> {
override fun invoke() {}
}
class B : (Double) -> Unit {
override fun invoke(p1: Double) {}
}
class BB : Function1<Double, Unit> {
override fun invoke(p1: Double) {}
}
open class C {}
abstract class A0 : (C) -> Int
abstract class A1 : Function1<C, Int>
abstract class A2 : (C, Int) -> Int
abstract class A3 : Function2<C, Int, Int>
abstract class A4 : (Int, C, String) -> Int
abstract class A5 : Function3<Int, C, String, Int>
open class D<T> {}
abstract class B0<T> : (D<T>) -> Int
abstract class B1<T> : Function1<D<T>, Int>
abstract class B2<T> : (D<T>, C) -> Int
abstract class B3<T> : Function2<D<T>, C, Int>
abstract class B4<T> : (D<T>, C) -> T
abstract class B5<T> : Function2<D<T>, C, T>
interface E<T> {}
abstract class C0: C(), (Int) -> Double
abstract class C1: C(), Function1<Int, Double>
abstract class C2<T>: C(), E<T>, (Int, C) -> Double
abstract class C3<T>: C(), E<T>, Function2<Int, C, Double>
@@ -0,0 +1,181 @@
package
public final class A : () -> kotlin.Unit {
public constructor A()
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*/ fun invoke(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class A0 : (C) -> kotlin.Int {
public constructor A0()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: C): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class A1 : (C) -> kotlin.Int {
public constructor A1()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: C): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class A2 : (C, kotlin.Int) -> kotlin.Int {
public constructor A2()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: C, /*1*/ p2: kotlin.Int): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class A3 : (C, kotlin.Int) -> kotlin.Int {
public constructor A3()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: C, /*1*/ p2: kotlin.Int): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class A4 : (kotlin.Int, C, kotlin.String) -> kotlin.Int {
public constructor A4()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: kotlin.Int, /*1*/ p2: C, /*2*/ p3: kotlin.String): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class A5 : (kotlin.Int, C, kotlin.String) -> kotlin.Int {
public constructor A5()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: kotlin.Int, /*1*/ p2: C, /*2*/ p3: kotlin.String): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class AA : () -> kotlin.Unit {
public constructor AA()
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*/ fun invoke(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class B : (kotlin.Double) -> kotlin.Unit {
public constructor B()
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*/ fun invoke(/*0*/ p1: kotlin.Double): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class B0</*0*/ T> : (D<T>) -> kotlin.Int {
public constructor B0</*0*/ T>()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: D<T>): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class B1</*0*/ T> : (D<T>) -> kotlin.Int {
public constructor B1</*0*/ T>()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: D<T>): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class B2</*0*/ T> : (D<T>, C) -> kotlin.Int {
public constructor B2</*0*/ T>()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: D<T>, /*1*/ p2: C): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class B3</*0*/ T> : (D<T>, C) -> kotlin.Int {
public constructor B3</*0*/ T>()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: D<T>, /*1*/ p2: C): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class B4</*0*/ T> : (D<T>, C) -> T {
public constructor B4</*0*/ T>()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: D<T>, /*1*/ p2: C): T
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class B5</*0*/ T> : (D<T>, C) -> T {
public constructor B5</*0*/ T>()
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 abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: D<T>, /*1*/ p2: C): T
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class BB : (kotlin.Double) -> kotlin.Unit {
public constructor BB()
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*/ fun invoke(/*0*/ p1: kotlin.Double): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class C {
public constructor C()
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 abstract class C0 : C, (kotlin.Int) -> kotlin.Double {
public constructor C0()
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: kotlin.Int): kotlin.Double
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class C1 : C, (kotlin.Int) -> kotlin.Double {
public constructor C1()
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: kotlin.Int): kotlin.Double
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class C2</*0*/ T> : C, E<T>, (kotlin.Int, C) -> kotlin.Double {
public constructor C2</*0*/ T>()
public open override /*3*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*3*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: kotlin.Int, /*1*/ p2: C): kotlin.Double
public open override /*3*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class C3</*0*/ T> : C, E<T>, (kotlin.Int, C) -> kotlin.Double {
public constructor C3</*0*/ T>()
public open override /*3*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*3*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: kotlin.Int, /*1*/ p2: C): kotlin.Double
public open override /*3*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class D</*0*/ T> {
public constructor D</*0*/ T>()
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 interface E</*0*/ T> {
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
}