report conflicting overloads in functions with same parameters different type parameters

test case:

===
class Aaa() {
    fun f() = 1
    fun <P> f() = 1
}
===
This commit is contained in:
Stepan Koltsov
2012-02-18 00:33:37 +04:00
parent 3b56b90a7c
commit 842a70ca66
6 changed files with 82 additions and 46 deletions
@@ -96,16 +96,16 @@ public class JetOverloadTest extends JetLiteFixture {
"fun a(a : Int?) : Int",
"fun a(a : Int) : Int");
// XXX: different from overridable
/*
assertNotOverloadable(
"fun a<T>(a : Int) : Int",
"fun a(a : Int) : Int");
*/
// TODO
/*
assertOverloadable(
"fun a<T1, X : T1>(a : T1) : T1",
"fun a<T, Y>(a : T) : T");
*/
assertOverloadable(
"fun a<T1, X : T1>(a : T1) : T1",
@@ -115,9 +115,12 @@ public class JetOverloadTest extends JetLiteFixture {
"fun a<T1, X : T1>(a : T1) : X",
"fun a<T, Y : T>(a : T) : T");
// TODO
/*
assertNotOverloadable(
"fun a<T1, X : Array<out T1>>(a : Array<in T1>) : T1",
"fun a<T, Y : Array<out T>>(a : Array<in T>) : T");
*/
assertOverloadable(
"fun a<T1, X : Array<T1>>(a : Array<in T1>) : T1",
@@ -156,7 +156,7 @@ public class JetOverridingTest extends JetLiteFixture {
FunctionDescriptor a = makeFunction(superFun);
FunctionDescriptor b = makeFunction(subFun);
OverridingUtil.OverrideCompatibilityInfo overridableWith = OverridingUtil.isOverridableBy(a, b);
assertEquals(overridableWith.getMessage(), expectedIsError, !overridableWith.isSuccess());
assertEquals(overridableWith.getMessage(), expectedIsError, !overridableWith.isOverridable());
}
private FunctionDescriptor makeFunction(String funDecl) {