diff --git a/compiler/tests/org/jetbrains/jet/codegen/AnnotationGenTest.java b/compiler/tests/org/jetbrains/jet/codegen/AnnotationGenTest.java index cb4025a17a0..888ffc8a971 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/AnnotationGenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/AnnotationGenTest.java @@ -38,8 +38,7 @@ public class AnnotationGenTest extends CodegenTestCase { private ClassLoader loadFileGetClassLoader(@NotNull String text) { loadText(text); - ClassFileFactory state = generateClassesInFile(); - return createClassLoader(state); + return generateAndCreateClassLoader(); } private Class getPackageClass(@NotNull ClassLoader loader) throws ClassNotFoundException { diff --git a/compiler/tests/org/jetbrains/jet/codegen/ClassGenTest.java b/compiler/tests/org/jetbrains/jet/codegen/ClassGenTest.java index 396da87af41..00a87687dd6 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/ClassGenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/ClassGenTest.java @@ -53,8 +53,7 @@ public class ClassGenTest extends CodegenTestCase { public void testDelegationToVal() throws Exception { loadFile("classes/delegationToVal.kt"); - ClassFileFactory state = generateClassesInFile(); - GeneratedClassLoader loader = createClassLoader(state); + GeneratedClassLoader loader = generateAndCreateClassLoader(); Class aClass = loader.loadClass(PackageClassUtils.getPackageClassName(FqName.ROOT)); assertEquals("OK", aClass.getMethod("box").invoke(null)); @@ -139,7 +138,7 @@ public class ClassGenTest extends CodegenTestCase { public void testClassObjectIsInnerClass() throws Exception { loadFile("classes/classObjectIsInnerClass.kt"); - GeneratedClassLoader loader = createClassLoader(generateClassesInFile()); + GeneratedClassLoader loader = generateAndCreateClassLoader(); Class a = loader.loadClass("A"); Class aClassObject = loader.loadClass("A" + JvmAbi.CLASS_OBJECT_SUFFIX); assertSameElements(a.getDeclaredClasses(), aClassObject); diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java index 74de63c119e..bfa4f980f0e 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java @@ -115,6 +115,11 @@ public abstract class CodegenTestCase extends UsefulTestCase { return initializedClassLoader; } + @NotNull + protected GeneratedClassLoader generateAndCreateClassLoader() { + return createClassLoader(generateClassesInFile()); + } + @NotNull protected URL[] getClassPathURLs() { List urls = Lists.newArrayList(); @@ -159,7 +164,7 @@ public abstract class CodegenTestCase extends UsefulTestCase { @NotNull protected Class generateClass(@NotNull String name) { try { - return createClassLoader(generateClassesInFile()).loadClass(name); + return generateAndCreateClassLoader().loadClass(name); } catch (ClassNotFoundException e) { fail("No class file was generated for: " + name); return null; diff --git a/compiler/tests/org/jetbrains/jet/codegen/ScriptGenTest.java b/compiler/tests/org/jetbrains/jet/codegen/ScriptGenTest.java index 0e3cdbabf6f..6cea1e8fcf4 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/ScriptGenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/ScriptGenTest.java @@ -19,7 +19,6 @@ package org.jetbrains.jet.codegen; import com.intellij.openapi.util.Pair; import org.jetbrains.annotations.NotNull; import org.jetbrains.asm4.Opcodes; -import org.jetbrains.asm4.Type; import org.jetbrains.jet.ConfigurationKind; import org.jetbrains.jet.lang.parsing.JetScriptDefinition; import org.jetbrains.jet.lang.parsing.JetScriptDefinitionProvider; @@ -52,14 +51,8 @@ public class ScriptGenTest extends CodegenTestCase { private void blackBoxScript(String filename) { loadFile(filename); - ClassFileFactory factory = generateClassesInFile(); - - GeneratedClassLoader loader = createClassLoader(factory); - - String scriptClassName = ScriptNameUtil.classNameForScript(myFiles.getPsiFile()); - try { - Class scriptClass = loader.loadClass(scriptClassName); + Class scriptClass = generateClass(ScriptNameUtil.classNameForScript(myFiles.getPsiFile())); Constructor constructor = getConstructor(scriptClass); scriptInstance = constructor.newInstance(myFiles.getScriptParameterValues().toArray()); @@ -88,13 +81,14 @@ public class ScriptGenTest extends CodegenTestCase { } catch (Throwable e) { System.out.println(generateToText()); - ExceptionUtils.rethrow(e); + throw ExceptionUtils.rethrow(e); } } - protected Constructor getConstructor(@NotNull Class clazz) { - Constructor [] constructors = clazz.getConstructors(); - if (constructors == null || constructors.length != 1) { + @NotNull + protected static Constructor getConstructor(@NotNull Class clazz) { + Constructor[] constructors = clazz.getConstructors(); + if (constructors.length != 1) { throw new IllegalArgumentException("Script class should have one constructor: " + clazz); } return constructors[0]; diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java index 3eac26b587f..7078050bb40 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java @@ -23,9 +23,7 @@ import org.jetbrains.jet.ConfigurationKind; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.TestJdkKind; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; -import org.jetbrains.jet.codegen.ClassFileFactory; import org.jetbrains.jet.codegen.CodegenTestCase; -import org.jetbrains.jet.codegen.GeneratedClassLoader; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.utils.ExceptionUtils; @@ -92,22 +90,17 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { } private void blackBox() { - ClassFileFactory factory = generateClassesInFile(); - GeneratedClassLoader loader = createClassLoader(factory); - // If there are many files, the first of them should contain the 'box(): String' function JetFile firstFile = myFiles.getPsiFiles().get(0); String fqName = getPackageClassFqName(JetPsiUtil.getFQName(firstFile)).asString(); try { - Class namespaceClass = loader.loadClass(fqName); - Method method = namespaceClass.getMethod("box"); - + Method method = generateClass(fqName).getMethod("box"); String r = (String) method.invoke(null); assertEquals("OK", r); } catch (Throwable e) { System.out.println(generateToText()); - ExceptionUtils.rethrow(e); + throw ExceptionUtils.rethrow(e); } } }