Extract classPathInTheSameClassLoader into a separate test

- class loader is now always created as if classPathInTheSameClassLoader
  = false, which was the case of every codegen test except kt2781, which
  is extracted into a separate file
- testNoClassObjectForJavaClass() is moved from StdlibTest since it has
  a custom createClassLoader() which doesn't work well in a java-interop
  case
- get rid of generateClassesInFileGetState
- several similar methods are inlined
This commit is contained in:
Alexander Udalov
2013-01-25 04:00:42 +04:00
committed by Alexander Udalov
parent 639aa9e218
commit 63aacc416f
8 changed files with 89 additions and 108 deletions
@@ -21,7 +21,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.asm4.Opcodes;
import org.jetbrains.asm4.Type;
import org.jetbrains.jet.ConfigurationKind;
import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.lang.parsing.JetScriptDefinition;
import org.jetbrains.jet.lang.parsing.JetScriptDefinitionProvider;
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
@@ -52,16 +51,16 @@ public class ScriptGenTest extends CodegenTestCase {
private void blackBoxScript(String filename) {
loadFile(filename);
GenerationState state = generateClassesInFileGetState();
ClassFileFactory factory = generateClassesInFile();
GeneratedClassLoader loader = createClassLoader(state.getFactory(), false);
GeneratedClassLoader loader = createClassLoader(factory);
String scriptClassName = ScriptNameUtil.classNameForScript(myFiles.getPsiFile());
try {
Class<?> scriptClass = loader.loadClass(scriptClassName);
Constructor constructor = getConstructor(scriptClass, state.getScriptCodegen().getScriptConstructorMethod());
Constructor constructor = getConstructor(scriptClass, factory.getState().getScriptCodegen().getScriptConstructorMethod());
scriptInstance = constructor.newInstance(myFiles.getScriptParameterValues().toArray());
assertFalse("expecting at least one expectation", myFiles.getExpectedValues().isEmpty());
@@ -189,7 +188,7 @@ public class ScriptGenTest extends CodegenTestCase {
public void testLanguage() {
JetScriptDefinitionProvider.getInstance(myEnvironment.getProject()).addScriptDefinition(FIB_SCRIPT_DEFINITION);
loadFile("script/fib.lang.kt");
final Class aClass = loadClass("Fib", generateClassesInFile());
final Class aClass = generateClass("Fib");
try {
Constructor constructor = aClass.getConstructor(int.class);
Field result = aClass.getDeclaredField("result");
@@ -205,7 +204,7 @@ public class ScriptGenTest extends CodegenTestCase {
public void testLanguageWithPackage() {
JetScriptDefinitionProvider.getInstance(myEnvironment.getProject()).addScriptDefinition(FIB_SCRIPT_DEFINITION);
loadFile("script/fibwp.lang.kt");
final Class aClass = loadClass("test.Fibwp", generateClassesInFile());
final Class aClass = generateClass("test.Fibwp");
try {
Constructor constructor = aClass.getConstructor(int.class);
Field result = aClass.getDeclaredField("result");
@@ -221,7 +220,7 @@ public class ScriptGenTest extends CodegenTestCase {
public void testDependentScripts() {
JetScriptDefinitionProvider.getInstance(myEnvironment.getProject()).addScriptDefinition(FIB_SCRIPT_DEFINITION);
loadFiles("script/fibwp.lang.kt", "script/fibwprunner.ktscript");
final Class aClass = loadClass("Fibwprunner", generateClassesInFile());
final Class aClass = generateClass("Fibwprunner");
try {
Constructor constructor = aClass.getConstructor();
Field result = aClass.getDeclaredField("result");
@@ -244,7 +243,7 @@ public class ScriptGenTest extends CodegenTestCase {
public void testScriptWhereMethodHasClosure() {
JetScriptDefinitionProvider.getInstance(myEnvironment.getProject()).addScriptDefinition(FIB_SCRIPT_DEFINITION);
loadFile("script/methodWithClosure.lang.kt");
final Class aClass = loadClass("MethodWithClosure", generateClassesInFile());
final Class aClass = generateClass("MethodWithClosure");
try {
Constructor constructor = aClass.getConstructor(int.class);
Object script = constructor.newInstance(239);