From 6bbf1a61fed26647a762ffe4d935912db9b5f5d1 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Mon, 4 Jul 2011 13:27:24 +0400 Subject: [PATCH] Failing tests --- .../codegen/classes/doubleEnclosedLocalVariable.jet | 8 ++++++++ idea/testData/codegen/classes/enclosingThis.jet | 12 ++++++++++++ .../org/jetbrains/jet/codegen/ClosuresGenTest.java | 8 ++++++++ 3 files changed, 28 insertions(+) create mode 100644 idea/testData/codegen/classes/doubleEnclosedLocalVariable.jet create mode 100644 idea/testData/codegen/classes/enclosingThis.jet diff --git a/idea/testData/codegen/classes/doubleEnclosedLocalVariable.jet b/idea/testData/codegen/classes/doubleEnclosedLocalVariable.jet new file mode 100644 index 00000000000..5776a6abe16 --- /dev/null +++ b/idea/testData/codegen/classes/doubleEnclosedLocalVariable.jet @@ -0,0 +1,8 @@ +fun box() : String { + val cl = 39 + return if (sum(200, { val ff = {cl}; ff() }) == 239) "OK" else "FAIL" +} + +fun sum(arg:Int, f : {() : Int}) : Int { + return arg + f() +} diff --git a/idea/testData/codegen/classes/enclosingThis.jet b/idea/testData/codegen/classes/enclosingThis.jet new file mode 100644 index 00000000000..e54f26201a5 --- /dev/null +++ b/idea/testData/codegen/classes/enclosingThis.jet @@ -0,0 +1,12 @@ +class Point(val x:Int, val y:Int) { + fun mul() : {(scalar:Int):Point} { + return { (scalar:Int):Point => Point(x * scalar, y * scalar) } + } +} + +val m = Point(2, 3).mul() : {(scalar:Int):Point} + +fun box() : String { + val answer = m(5) + return if (answer.x == 10 && answer.y == 15) "OK" else "FAIL" +} diff --git a/idea/tests/org/jetbrains/jet/codegen/ClosuresGenTest.java b/idea/tests/org/jetbrains/jet/codegen/ClosuresGenTest.java index 02031d3d0af..4a1174ba55a 100644 --- a/idea/tests/org/jetbrains/jet/codegen/ClosuresGenTest.java +++ b/idea/tests/org/jetbrains/jet/codegen/ClosuresGenTest.java @@ -27,4 +27,12 @@ public class ClosuresGenTest extends CodegenTestCase { public void testEnclosingLocalVariable() throws Exception { blackBoxFile("classes/enclosingLocalVariable.jet"); } + + public void testDoubleEnclosedLocalVariable() throws Exception { + blackBoxFile("classes/doubleEnclosedLocalVariable.jet"); + } + + public void testEnclosingThis() throws Exception { + blackBoxFile("classes/enclosingThis.jet"); + } }