Checks for default parameter value consistency

Inheriting default values from multiple superclasses is prohibited
This commit is contained in:
Andrey Breslav
2012-04-26 17:32:37 +04:00
parent 07c5f8e12a
commit 058e4b833b
10 changed files with 138 additions and 9 deletions
@@ -0,0 +1,15 @@
trait Y {
fun foo(a : Int = 1)
}
trait YSub : Y {
}
class Z2 : Y, YSub {
override fun foo(a : Int) {}
}
class Z2O : Y, YSub {
override fun foo(a : Int) {}
}
@@ -0,0 +1,15 @@
trait X {
fun foo(a : Int = 1)
}
trait Y {
fun foo(a : Int = 1)
}
class Z : X, Y {
override fun foo(<!MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES!>a<!> : Int) {}
}
object ZO : X, Y {
override fun foo(<!MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES!>a<!> : Int) {}
}
@@ -0,0 +1,15 @@
trait X {
fun foo(a : Int = 1)
}
trait Y {
fun foo(a : Int = 1)
}
class Z : X, Y {
fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>(a : Int) {}
}
object ZO : X, Y {
fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>(a : Int) {}
}
@@ -0,0 +1,10 @@
trait X {
fun foo(a : Int = 1)
}
trait Y {
fun foo(a : Int = 1)
}
class <!MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES_WHEN_NO_EXPLICIT_OVERRIDE!>Z1<!> : X, Y {} // BUG
object <!MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES_WHEN_NO_EXPLICIT_OVERRIDE!>Z1O<!> : X, Y {} // BUG
@@ -0,0 +1,11 @@
trait X {
fun foo(a : Int = 1)
}
trait Y {
fun foo(a : Int)
}
class Z : X, Y {
override fun foo(a : Int) {}
}