diff --git a/compiler/testData/codegen/functions/defaultargs.jet b/compiler/testData/codegen/functions/defaultargs.jet index 4278ca81773..00029f6a156 100644 --- a/compiler/testData/codegen/functions/defaultargs.jet +++ b/compiler/testData/codegen/functions/defaultargs.jet @@ -1,63 +1,12 @@ -fun reformat( - str : String, - normalizeCase : Boolean = true, - uppercaseFirstLetter : Boolean = true, - divideByCamelHumps : Boolean = true, - wordSeparator : String = " " -) = - #(normalizeCase, uppercaseFirstLetter, divideByCamelHumps, wordSeparator) - -trait A { - fun bar2(arg: Int = 239) : Int - - fun bar(arg: Int = 240) : Int = bar2(arg/2) -} - -open abstract class B() : A, java.lang.Object() { +open abstract class B() : java.lang.Object() { fun foo(arg: Int = 239 + 1) : Int = arg - - abstract fun foo2(arg: Int = 239) : Int - - override fun bar2(arg: Int) : Int = arg } class C() : B() { - override fun foo2(arg: Int) : Int = arg - - fun Any.toMyPrefixedString(prefix: String = "", suffix: String="") : String = prefix + " " + suffix - - fun testReceiver() : String { - val res : String = "mama".toMyPrefixedString("111", "222") - System.out?.println(res) - return res - } - - override fun toString() : String = "CCC" } -fun T.toPrefixedString(prefix: String = "", suffix: String="") = prefix + (this as java.lang.Object).toString() + suffix - fun box() : String { - val expected = #(true, true, true, " ") - - if("mama".toPrefixedString(suffix="321", prefix="papa") != "papamama321") return "fail" - if("mama".toPrefixedString(prefix="papa") != "papamama") return "fail" - if("mama".toPrefixedString("papa", "239") != "papamama239") return "fail" - if("mama".toPrefixedString("papa") != "papamama") return "fail" - if("mama".toPrefixedString() != "mama") return "fail" - if(C().testReceiver() != "111 222") return "fail" - if(C().bar(10) != 5) return "fail" - if(C().bar() != 120) return "fail" if(C().foo(10) != 10) return "fail" if(C().foo() != 240) return "fail" - if(C().foo2() != 239) return "fail" - if(C().foo2(10) != 10) return "fail" - if(C().bar2() != 239) return "fail" - if(C().bar2(10) != 10) return "fail" - if(reformat("", true, true, true, " ") != expected) return "fail" - if(reformat("", true, true, true) != expected) return "fail" - if(reformat("", true, true) != expected) return "fail" - if(reformat("", true) != expected) return "fail" - if(reformat("") != expected) return "fail" return "OK" } diff --git a/compiler/testData/codegen/functions/defaultargs1.jet b/compiler/testData/codegen/functions/defaultargs1.jet new file mode 100644 index 00000000000..54fa86ad1c0 --- /dev/null +++ b/compiler/testData/codegen/functions/defaultargs1.jet @@ -0,0 +1,10 @@ +fun T.toPrefixedString(prefix: String = "", suffix: String="") = prefix + (this as java.lang.Object).toString() + suffix + +fun box() : String { + if("mama".toPrefixedString(suffix="321", prefix="papa") != "papamama321") return "fail" + if("mama".toPrefixedString(prefix="papa") != "papamama") return "fail" + if("mama".toPrefixedString("papa", "239") != "papamama239") return "fail" + if("mama".toPrefixedString("papa") != "papamama") return "fail" + if("mama".toPrefixedString() != "mama") return "fail" + return "OK" +} diff --git a/compiler/testData/codegen/functions/defaultargs2.jet b/compiler/testData/codegen/functions/defaultargs2.jet new file mode 100644 index 00000000000..1f2fa12d7b3 --- /dev/null +++ b/compiler/testData/codegen/functions/defaultargs2.jet @@ -0,0 +1,19 @@ +fun reformat( + str : String, + normalizeCase : Boolean = true, + uppercaseFirstLetter : Boolean = true, + divideByCamelHumps : Boolean = true, + wordSeparator : String = " " +) = + #(normalizeCase, uppercaseFirstLetter, divideByCamelHumps, wordSeparator) + + +fun box() : String { + val expected = #(true, true, true, " ") + if(reformat("", true, true, true, " ") != expected) return "fail" + if(reformat("", true, true, true) != expected) return "fail" + if(reformat("", true, true) != expected) return "fail" + if(reformat("", true) != expected) return "fail" + if(reformat("") != expected) return "fail" + return "OK" +} diff --git a/compiler/testData/codegen/functions/defaultargs3.jet b/compiler/testData/codegen/functions/defaultargs3.jet new file mode 100644 index 00000000000..373dda9d48a --- /dev/null +++ b/compiler/testData/codegen/functions/defaultargs3.jet @@ -0,0 +1,16 @@ + +class C() { + fun Any.toMyPrefixedString(prefix: String = "", suffix: String="") : String = prefix + " " + suffix + + fun testReceiver() : String { + val res : String = "mama".toMyPrefixedString("111", "222") + System.out?.println(res) + return res + } + +} + +fun box() : String { + if(C().testReceiver() != "111 222") return "fail" + return "OK" +} diff --git a/compiler/testData/codegen/functions/defaultargs4.jet b/compiler/testData/codegen/functions/defaultargs4.jet new file mode 100644 index 00000000000..0ca787e85b6 --- /dev/null +++ b/compiler/testData/codegen/functions/defaultargs4.jet @@ -0,0 +1,20 @@ +trait A { + fun bar2(arg: Int = 239) : Int + + fun bar(arg: Int = 240) : Int = bar2(arg/2) +} + +open abstract class B() : A, java.lang.Object() { + override fun bar2(arg: Int) : Int = arg +} + +class C() : B() { +} + +fun box() : String { + if(C().bar(10) != 5) return "fail" + if(C().bar() != 120) return "fail" + if(C().bar2() != 239) return "fail" + if(C().bar2(10) != 10) return "fail" + return "OK" +} diff --git a/compiler/testData/codegen/functions/defaultargs5.jet b/compiler/testData/codegen/functions/defaultargs5.jet new file mode 100644 index 00000000000..fa64285d75d --- /dev/null +++ b/compiler/testData/codegen/functions/defaultargs5.jet @@ -0,0 +1,13 @@ +open abstract class B() : java.lang.Object() { + abstract fun foo2(arg: Int = 239) : Int +} + +class C() : B() { + override fun foo2(arg: Int) : Int = arg +} + +fun box() : String { + if(C().foo2() != 239) return "fail" + if(C().foo2(10) != 10) return "fail" + return "OK" +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/FunctionGenTest.java b/compiler/tests/org/jetbrains/jet/codegen/FunctionGenTest.java index bb27eff7ef9..1fd882c1fd0 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/FunctionGenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/FunctionGenTest.java @@ -12,6 +12,31 @@ public class FunctionGenTest extends CodegenTestCase { // System.out.println(generateToText()); } + public void testDefaultArgs1() throws Exception { + blackBoxFile("functions/defaultargs1.jet"); +// System.out.println(generateToText()); + } + + public void testDefaultArgs2() throws Exception { + blackBoxFile("functions/defaultargs2.jet"); +// System.out.println(generateToText()); + } + + public void testDefaultArgs3() throws Exception { + blackBoxFile("functions/defaultargs3.jet"); +// System.out.println(generateToText()); + } + + public void testDefaultArgs4() throws Exception { + blackBoxFile("functions/defaultargs4.jet"); +// System.out.println(generateToText()); + } + + public void testDefaultArgs5() throws Exception { + blackBoxFile("functions/defaultargs5.jet"); +// System.out.println(generateToText()); + } + public void testNoThisNoClosure() throws Exception { blackBoxFile("functions/nothisnoclosure.jet"); // System.out.println(generateToText());