KT-3553 Problem with propagation for extension functions

#KT-3553 fixed
This commit is contained in:
Evgeny Gerashchenko
2013-05-07 16:04:17 +04:00
parent dd87c38ea3
commit d56494ebd3
10 changed files with 140 additions and 28 deletions
@@ -0,0 +1,18 @@
package test
public trait Sub : test.Super1, test.Super2 {
public abstract override /*1*/ fun bar(/*0*/ vararg p: jet.String /*jet.Array<jet.String>*/): jet.Unit
public abstract override /*1*/ fun foo(/*0*/ p: jet.String): jet.Unit
public abstract override /*1*/ /*fake_override*/ fun jet.Array<jet.String>.bar(): jet.Unit
public abstract override /*1*/ /*fake_override*/ fun jet.String.foo(): jet.Unit
}
public trait Super1 {
public abstract fun jet.Array<jet.String>.bar(): jet.Unit
public abstract fun jet.String.foo(): jet.Unit
}
public trait Super2 {
public abstract fun bar(/*0*/ vararg p: jet.String /*jet.Array<jet.String>*/): jet.Unit
public abstract fun foo(/*0*/ p: jet.String): jet.Unit
}
@@ -0,0 +1,11 @@
package test;
import org.jetbrains.jet.jvm.compiler.annotation.ExpectLoadError;
public interface Sub extends Super1, Super2 {
@ExpectLoadError("Incompatible super methods: some are extension functions, some are not")
void foo(String p);
@ExpectLoadError("Incompatible super methods: some are extension functions, some are not|Incompatible super methods: some have vararg parameter, some have not")
void bar(String... p);
}
@@ -0,0 +1,12 @@
package test
public trait Super1 {
public fun String.foo()
public fun Array<String>.bar()
}
public trait Super2 {
public fun foo(p: String)
public fun bar(vararg p: String)
}
@@ -0,0 +1,13 @@
package test
public open class Sub : test.Super {
public constructor Sub()
public open override /*1*/ fun jet.String.bar(/*0*/ param: jet.String): jet.String
public final override /*1*/ /*fake_override*/ fun jet.String.foo(): jet.Unit
}
public open class Super {
public constructor Super()
public abstract fun jet.String.bar(/*0*/ p: jet.String): jet.Unit
public final fun jet.String.foo(): jet.Unit
}
@@ -0,0 +1,6 @@
package test;
public class Sub extends Super {
public String bar(String recv, String param) {
}
}
@@ -0,0 +1,6 @@
package test
public open class Super {
public fun String.foo() = Unit.VALUE
public abstract fun String.bar(p: String)
}