Change override rules when type parameters have multiple bounds

Instead of constructing the magic intersection type, compare sets of upper
bounds instead as javac does, modulo the substitution
This commit is contained in:
Alexander Udalov
2015-10-22 22:40:26 +03:00
parent a59ca2ea9f
commit 477823b093
9 changed files with 244 additions and 38 deletions

View File

@@ -7,6 +7,7 @@ public/*package*/ open class NoSamForTypeParameter {
public/*package*/ open class NoSamForTypeParameterDerived1 : test.NoSamForTypeParameter {
public/*package*/ constructor NoSamForTypeParameterDerived1()
public/*package*/ open override /*1*/ /*fake_override*/ fun </*0*/ K : java.lang.Runnable!> foo(/*0*/ p0: K!, /*1*/ p1: java.lang.Runnable!): kotlin.Unit
public/*package*/ open fun foo(/*0*/ p0: java.lang.Runnable!, /*1*/ p1: java.lang.Runnable!): kotlin.Unit
}
@@ -17,5 +18,6 @@ public/*package*/ open class NoSamForTypeParameterDerived2 : test.NoSamForTypePa
public/*package*/ open class NoSamForTypeParameterDerived3 : test.NoSamForTypeParameterDerived1 {
public/*package*/ constructor NoSamForTypeParameterDerived3()
public/*package*/ open override /*1*/ /*fake_override*/ fun </*0*/ K : java.lang.Runnable!> foo(/*0*/ p0: K!, /*1*/ p1: java.lang.Runnable!): kotlin.Unit
public/*package*/ open override /*1*/ fun foo(/*0*/ p0: java.lang.Runnable!, /*1*/ p1: java.lang.Runnable!): kotlin.Unit
}