From abb15a85d69806899fa1ef4b94f60bca47552a55 Mon Sep 17 00:00:00 2001 From: Alex Tkachman Date: Sat, 19 Nov 2011 07:01:58 +0200 Subject: [PATCH] KT-434 test and ability to supply full JDK for compiler tests --- compiler/testData/codegen/regressions/kt434.jet | 13 +++++++++++++ .../tests/org/jetbrains/jet/JetLiteFixture.java | 11 +++++++++++ .../jet/codegen/ControlStructuresTest.java | 5 +++++ 3 files changed, 29 insertions(+) create mode 100644 compiler/testData/codegen/regressions/kt434.jet diff --git a/compiler/testData/codegen/regressions/kt434.jet b/compiler/testData/codegen/regressions/kt434.jet new file mode 100644 index 00000000000..e48463642b9 --- /dev/null +++ b/compiler/testData/codegen/regressions/kt434.jet @@ -0,0 +1,13 @@ +import java.net.* + +fun String.decodeURI(encoding : String) : String? = + try { + URLDecoder.decode(this, encoding) + } + catch (e : Throwable) { + null + } + +fun box() : String { + return if("hhh".decodeURI("lala") == null) "OK" else "fail" +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/JetLiteFixture.java b/compiler/tests/org/jetbrains/jet/JetLiteFixture.java index 1719cbf181d..f975ba79778 100644 --- a/compiler/tests/org/jetbrains/jet/JetLiteFixture.java +++ b/compiler/tests/org/jetbrains/jet/JetLiteFixture.java @@ -14,6 +14,7 @@ import com.intellij.testFramework.LightVirtualFile; import com.intellij.testFramework.TestDataFile; import com.intellij.testFramework.UsefulTestCase; import org.jetbrains.annotations.NonNls; +import org.jetbrains.jet.compiler.CompileEnvironment; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.plugin.JetLanguage; @@ -48,12 +49,22 @@ public abstract class JetLiteFixture extends UsefulTestCase { @Override protected void setUp() throws Exception { super.setUp(); + createEnvironmentWithMockJdk(); + } + + protected void createEnvironmentWithMockJdk() { myEnvironment = new JetCoreEnvironment(getTestRootDisposable()); final File rtJar = new File(JetTestCaseBuilder.getHomeDirectory(), "compiler/testData/mockJDK-1.7/jre/lib/rt.jar"); myEnvironment.addToClasspath(rtJar); myEnvironment.addToClasspath(new File(JetTestCaseBuilder.getHomeDirectory(), "compiler/testData/mockJDK-1.7/jre/lib/annotations.jar")); } + protected void createEnvironmentWithFullJdk() { + myEnvironment = new JetCoreEnvironment(getTestRootDisposable()); + final File rtJar = CompileEnvironment.findRtJar(true); + myEnvironment.addToClasspath(rtJar); + } + @Override protected void tearDown() throws Exception { myFile = null; diff --git a/compiler/tests/org/jetbrains/jet/codegen/ControlStructuresTest.java b/compiler/tests/org/jetbrains/jet/codegen/ControlStructuresTest.java index f8abdb701b2..11914b419ac 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/ControlStructuresTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/ControlStructuresTest.java @@ -216,4 +216,9 @@ public class ControlStructuresTest extends CodegenTestCase { public void testKt513() throws Exception { blackBoxFile("regressions/kt513.jet"); } + + public void testKt434() throws Exception { + createEnvironmentWithFullJdk(); + blackBoxFile("regressions/kt434.jet"); + } }