// MODULE: lib // FILE: A.kt // VERSION: 1 fun foo_a(a: String) = a fun foo_b(b: String = "foo_b default") = b fun foo_c(vararg c: String) = c.joinToString(", ") fun foo_d(a: String, b: String) = a + b fun foo_e(a: String = "foo_e default a", b: String = "foo_e default b") = a + b fun foo_f(vararg a: String, b: String) = a.joinToString(", ") + b class X() { fun bar_a(a: String) = a fun bar_b(b: String = "foo_b default") = b fun bar_c(vararg c: String) = c.joinToString(", ") fun bar_d(a: String, b: String) = a + b fun bar_e(a: String = "foo_e default a", b: String = "foo_e default b") = a + b fun bar_f(vararg a: String, b: String) = a.joinToString(", ") + b } class qux_a(a: String) { val x = a } class qux_b(b: String = "foo_b default") { val x = b } class qux_c(vararg c: String) { val x = c.joinToString(", ") } // swap order class qux_d(a: String, b: String) { val x = a + b } class qux_e(a: String = "foo_e default a", b: String = "foo_e default b") { val x = a + b } class qux_f(vararg a: String, b: String) { val x= a.joinToString(", ") + b } // FILE: B.kt // VERSION: 2 fun foo_a(a1: String) = a1 fun foo_b(b1: String = "foo_b default") = b1 fun foo_c(vararg c1: String) = c1.joinToString(", ") // swap order fun foo_d(b: String, a: String) = b + a fun foo_e(b: String = "foo_e default a", a: String = "foo_e default b") = b + a fun foo_f(vararg b: String, a: String) = b.joinToString(", ") + a class X() { fun bar_a(a1: String) = a1 fun bar_b(b1: String = "foo_b default") = b1 fun bar_c(vararg c1: String) = c1.joinToString(", ") fun bar_d(b: String, a: String) = b + a fun bar_e(b: String = "foo_e default a", a: String = "foo_e default b") = b + a fun bar_f(vararg b: String, a: String) = b.joinToString(", ") + a } class qux_a(a1: String) { val x = a1 } class qux_b(b1: String = "foo_b default") { val x = b1 } class qux_c(vararg c1: String) { val x = c1.joinToString(", ") } // swap order class qux_d(b: String, a: String) { val x = b + a } class qux_e(b: String = "foo_e default a", a: String = "foo_e default b") { val x = b + a } class qux_f(vararg b: String, a: String) { val x= b.joinToString(", ") + a } // MODULE: mainLib(lib) // FILE: mainLib.kt fun lib(): String { val x = X() return when { foo_a("first") != "first" -> "fail 1" foo_b() != "foo_b default" -> "fail 2" foo_c("first", "second") != "first, second" -> "fail 3" foo_d("first", "second") != "firstsecond" -> "fail 4" foo_d(a = "first", b = "second") != "firstsecond" -> "fail 5" foo_e() != "foo_e default afoo_e default b" -> "fail 6" foo_e(a = "first", b = "second") != "firstsecond" -> "fail 7" foo_f("second", "third", b = "first") != "second, thirdfirst" -> "fail 8" x.bar_a("first") != "first" -> "fail 11" x.bar_b() != "foo_b default" -> "fail 12" x.bar_c("first", "second") != "first, second" -> "fail 13" x.bar_d("first", "second") != "firstsecond" -> "fail 14" x.bar_d(a = "first", b = "second") != "firstsecond" -> "fail 15" x.bar_e() != "foo_e default afoo_e default b" -> "fail 16" x.bar_e(a = "first", b = "second") != "firstsecond" -> "fail 17" x.bar_f("second", "third", b = "first") != "second, thirdfirst" -> "fail 18" qux_a("first").x != "first" -> "fail 21" qux_b().x != "foo_b default" -> "fail 22" qux_c("first", "second").x != "first, second" -> "fail 23" qux_d("first", "second").x != "firstsecond" -> "fail 24" qux_d(a = "first", b = "second").x != "firstsecond" -> "fail 25" qux_e().x != "foo_e default afoo_e default b" -> "fail 26" qux_e(a = "first", b = "second").x != "firstsecond" -> "fail 27" qux_f("second", "third", b = "first").x != "second, thirdfirst" -> "fail 28" else -> "OK" } } // MODULE: main(mainLib) // FILE: main.kt fun box(): String = lib()