making script classes useful/accessable for the rest of the world
This commit is contained in:
@@ -27,6 +27,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.ConfigurationKind;
|
||||
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
|
||||
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptNameUtil;
|
||||
import org.jetbrains.jet.utils.ExceptionUtils;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
||||
@@ -188,7 +189,7 @@ public abstract class CodegenTestCase extends UsefulTestCase {
|
||||
|
||||
try {
|
||||
if (myFiles.isScript()) {
|
||||
String scriptClassName = ScriptCodegen.classNameForScript(myFiles.getPsiFile());
|
||||
String scriptClassName = ScriptNameUtil.classNameForScript(myFiles.getPsiFile());
|
||||
Class<?> scriptClass = loader.loadClass(scriptClassName);
|
||||
|
||||
Constructor constructor = getConstructor(scriptClass, state.getScriptConstructorMethod());
|
||||
|
||||
@@ -127,4 +127,22 @@ public class ScriptGenTest extends CodegenTestCase {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void testDependentScripts() {
|
||||
JetScriptDefinitionProvider.getInstance(myEnvironment.getProject()).addScriptDefinition(FIB_SCRIPT_DEFINITION);
|
||||
loadFiles("script/fibwp.lang.kt", "script/fibwprunner.ktscript");
|
||||
System.out.println(generateToText());
|
||||
final Class aClass = loadClass("Fibwprunner", generateClassesInFile());
|
||||
try {
|
||||
Constructor constructor = aClass.getConstructor();
|
||||
Field result = aClass.getField("result");
|
||||
Field rv = aClass.getField("rv");
|
||||
Object script = constructor.newInstance();
|
||||
assertEquals(12,rv.get(script));
|
||||
assertEquals(8,result.get(script));
|
||||
}
|
||||
catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user