KT-2589 fix: putting some order on bytecode flags

This commit is contained in:
Alex Tkachman
2012-08-09 13:35:44 +03:00
parent f5e9786ffc
commit 6af235fe2b
10 changed files with 105 additions and 63 deletions
@@ -17,6 +17,7 @@
package org.jetbrains.jet.codegen;
import com.intellij.openapi.components.ServiceManager;
import org.jetbrains.asm4.Opcodes;
import org.jetbrains.jet.ConfigurationKind;
import org.jetbrains.jet.lang.parsing.JetParserDefinition;
import org.jetbrains.jet.lang.parsing.JetScriptDefinition;
@@ -106,7 +107,8 @@ public class ScriptGenTest extends CodegenTestCase {
final Class aClass = loadClass("Fib", generateClassesInFile());
try {
Constructor constructor = aClass.getConstructor(int.class);
Field result = aClass.getField("result");
Field result = aClass.getDeclaredField("result");
result.setAccessible(true);
Object script = constructor.newInstance(5);
assertEquals(8,result.get(script));
}
@@ -121,7 +123,8 @@ public class ScriptGenTest extends CodegenTestCase {
final Class aClass = loadClass("test.Fibwp", generateClassesInFile());
try {
Constructor constructor = aClass.getConstructor(int.class);
Field result = aClass.getField("result");
Field result = aClass.getDeclaredField("result");
result.setAccessible(true);
Object script = constructor.newInstance(5);
assertEquals(8,result.get(script));
}
@@ -136,11 +139,17 @@ public class ScriptGenTest extends CodegenTestCase {
final Class aClass = loadClass("Fibwprunner", generateClassesInFile());
try {
Constructor constructor = aClass.getConstructor();
Field result = aClass.getField("result");
Field result = aClass.getDeclaredField("result");
result.setAccessible(true);
Method resultMethod = aClass.getDeclaredMethod("getResult");
assertTrue((resultMethod.getModifiers() & Opcodes.ACC_FINAL) != 0);
assertTrue((resultMethod.getModifiers() & Opcodes.ACC_PUBLIC) != 0);
Field rv = aClass.getField("rv");
assertTrue((result.getModifiers() & Opcodes.ACC_PRIVATE) != 0);
Object script = constructor.newInstance();
assertEquals(12,rv.get(script));
assertEquals(8,result.get(script));
assertEquals(8,resultMethod.invoke(script));
}
catch (Exception e) {
throw new RuntimeException(e);