Files
kotlin/compiler/testData/diagnostics/tests/overload/defaultParameters.kt
Dmitry Petrov 74c13906ed Drop "substitute with upper bounds" mode for calls with mapped arguments
(we don't need it since we build constraint system for generic types).
Cleanup tests.
2015-12-30 10:44:01 +03:00

58 lines
1.4 KiB
Kotlin
Vendored

// !CHECK_TYPE
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE
fun simple() = 1
fun simple(a: Int = 3) = ""
fun twoDefault(a: Int = 2) = 1
fun twoDefault(a: Any = 2, b: String = "") = ""
fun <T> withGeneric(a: T) = 1
fun <T> withGeneric(a: T, b: Int = 4) = ""
fun <T> discriminateGeneric(a: T) = 1
fun discriminateGeneric(a: Int, b: String = "") = ""
fun <T: CharSequence> withDefaultGeneric(t: T, d: T? = null) = 1
fun <T: Any> withDefaultGeneric(t: T, d: T? = null, a: Int = 1) = ""
fun withDefaults(a: Any = 2) = 1
fun withDefaults(a: Int = 2, b: String = "") = ""
fun <T: Any> withGenericDefaults(t: T, d: T? = null) = 1
fun <T: CharSequence> withGenericDefaults(t: T, d: T? = null, a: Int = 1) = ""
fun wrong(a: Int = 1) {}
fun wrong(a: String = "", b: Int = 1) {}
fun test() {
val a = simple()
a checkType { _<Int>() }
val b = simple(1)
b checkType { _<String>() }
val c = twoDefault()
c checkType { _<Int>() }
val d = twoDefault(1)
d checkType { _<Int>() }
val e = twoDefault(1, "")
e checkType { _<String>() }
val f = withGeneric(3)
f checkType { _<Int>() }
val g = discriminateGeneric(1)
g checkType { _<String>() }
val h = withDefaultGeneric("")
h checkType { _<Int>() }
withDefaults(1)
withGenericDefaults("")
<!UNREACHABLE_CODE!><!OVERLOAD_RESOLUTION_AMBIGUITY!>wrong<!>(<!>null!!<!UNREACHABLE_CODE!>)<!>
}