Do not generate byte code to text twice
This commit is contained in:
@@ -38,7 +38,6 @@ import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
|||||||
import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime;
|
import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime;
|
||||||
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.utils.ExceptionUtils;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -183,7 +182,8 @@ public abstract class CodegenTestCase extends UsefulTestCase {
|
|||||||
protected Class<?> generateClass(@NotNull String name) {
|
protected Class<?> generateClass(@NotNull String name) {
|
||||||
try {
|
try {
|
||||||
return generateAndCreateClassLoader().loadClass(name);
|
return generateAndCreateClassLoader().loadClass(name);
|
||||||
} catch (ClassNotFoundException e) {
|
}
|
||||||
|
catch (ClassNotFoundException e) {
|
||||||
fail("No class file was generated for: " + name);
|
fail("No class file was generated for: " + name);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -198,16 +198,24 @@ public abstract class CodegenTestCase extends UsefulTestCase {
|
|||||||
if (DxChecker.RUN_DX_CHECKER) {
|
if (DxChecker.RUN_DX_CHECKER) {
|
||||||
DxChecker.check(classFileFactory);
|
DxChecker.check(classFileFactory);
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
}
|
||||||
|
catch (Throwable e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
System.err.println("Generating instructions as text...");
|
||||||
try {
|
try {
|
||||||
System.out.println(generateToText());
|
if (classFileFactory == null) {
|
||||||
|
System.out.println("Cannot generate text: exception was thrown during generation");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println(classFileFactory.createText());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Throwable e1) {
|
catch (Throwable e1) {
|
||||||
System.err.println("Exception thrown while trying to generate text, the actual exception follows:");
|
System.err.println("Exception thrown while trying to generate text, the actual exception follows:");
|
||||||
e1.printStackTrace();
|
e1.printStackTrace();
|
||||||
System.err.println("-----------------------------------------------------------------------------");
|
System.err.println("-----------------------------------------------------------------------------");
|
||||||
}
|
}
|
||||||
throw ExceptionUtils.rethrow(e);
|
fail("See exceptions above");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return classFileFactory;
|
return classFileFactory;
|
||||||
|
|||||||
@@ -94,11 +94,13 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase {
|
|||||||
JetFile firstFile = myFiles.getPsiFiles().get(0);
|
JetFile firstFile = myFiles.getPsiFiles().get(0);
|
||||||
String fqName = getPackageClassFqName(JetPsiUtil.getFQName(firstFile)).asString();
|
String fqName = getPackageClassFqName(JetPsiUtil.getFQName(firstFile)).asString();
|
||||||
|
|
||||||
|
Class<?> aClass = generateClass(fqName);
|
||||||
try {
|
try {
|
||||||
Method method = generateClass(fqName).getMethod("box");
|
Method method = aClass.getMethod("box");
|
||||||
String r = (String) method.invoke(null);
|
String r = (String) method.invoke(null);
|
||||||
assertEquals("OK", r);
|
assertEquals("OK", r);
|
||||||
} catch (Throwable e) {
|
}
|
||||||
|
catch (Throwable e) {
|
||||||
System.out.println(generateToText());
|
System.out.println(generateToText());
|
||||||
throw ExceptionUtils.rethrow(e);
|
throw ExceptionUtils.rethrow(e);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user