refactoring of script definition api

This commit is contained in:
Alex Tkachman
2012-07-30 09:26:30 +03:00
parent 003b2c64a7
commit c14a0b3c84
13 changed files with 201 additions and 37 deletions
@@ -22,6 +22,7 @@ import junit.framework.Assert;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.cli.common.ExitCode;
import org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler;
import org.jetbrains.jet.lang.parsing.JetScriptDefinition;
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.ref.JetTypeName;
@@ -37,6 +38,7 @@ import java.io.File;
import java.io.PrintStream;
import java.io.StringReader;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
@@ -132,7 +134,58 @@ public class CliTest {
AnalyzerScriptParameter parameter = new AnalyzerScriptParameter(Name.identifier("num"), JetTypeName.parse("jet.Int"));
scriptParameters.add(parameter);
Class aClass = KotlinToJVMBytecodeCompiler
.compileScript(getClass().getClassLoader(), "compiler/testData/cli/fib.ktscript", scriptParameters);
.compileScript(getClass().getClassLoader(), "compiler/testData/cli/fib.ktscript", scriptParameters, null);
Assert.assertNotNull(aClass);
try {
aClass.getConstructor(int.class).newInstance(4);
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
@Test
public void testScriptStandardExt() {
LinkedList<AnalyzerScriptParameter> scriptParameters = new LinkedList<AnalyzerScriptParameter>();
AnalyzerScriptParameter parameter = new AnalyzerScriptParameter(Name.identifier("num"), JetTypeName.parse("jet.Int"));
scriptParameters.add(parameter);
Class aClass = KotlinToJVMBytecodeCompiler
.compileScript(getClass().getClassLoader(), "compiler/testData/cli/fib.kt", scriptParameters, null);
Assert.assertNotNull(aClass);
try {
aClass.getConstructor(int.class).newInstance(4);
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
@Test
public void testScriptWithoutScriptDefinition() {
LinkedList<AnalyzerScriptParameter> scriptParameters = new LinkedList<AnalyzerScriptParameter>();
AnalyzerScriptParameter parameter = new AnalyzerScriptParameter(Name.identifier("num"), JetTypeName.parse("jet.Int"));
scriptParameters.add(parameter);
Class aClass = KotlinToJVMBytecodeCompiler
.compileScript(getClass().getClassLoader(), "compiler/testData/cli/fib.fib.kt", scriptParameters, null);
Assert.assertNotNull(aClass);
try {
aClass.getConstructor(int.class).newInstance(4);
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
@Test
public void testScriptWithScriptDefinition() {
LinkedList<AnalyzerScriptParameter> scriptParameters = new LinkedList<AnalyzerScriptParameter>();
AnalyzerScriptParameter parameter = new AnalyzerScriptParameter(Name.identifier("num"), JetTypeName.parse("jet.Int"));
scriptParameters.add(parameter);
Class aClass = KotlinToJVMBytecodeCompiler
.compileScript(getClass().getClassLoader(), "compiler/testData/cli/fib.fib.kt", null, Arrays.asList(new JetScriptDefinition(".fib.kt",scriptParameters)));
Assert.assertNotNull(aClass);
try {
@@ -16,9 +16,11 @@
package org.jetbrains.jet.codegen;
import com.intellij.openapi.components.ServiceManager;
import org.jetbrains.jet.ConfigurationKind;
import org.jetbrains.jet.lang.parsing.JetParserDefinition;
import org.jetbrains.jet.lang.parsing.JetScriptDefinition;
import org.jetbrains.jet.lang.parsing.JetScriptDefinitionProvider;
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
import java.lang.reflect.Constructor;
@@ -32,6 +34,9 @@ import java.util.List;
*/
public class ScriptGenTest extends CodegenTestCase {
public static final JetScriptDefinition FIB_SCRIPT_DEFINITION =
new JetScriptDefinition(".lang.kt", new AnalyzerScriptParameter("num", "jet.Int"));
@Override
protected void setUp() throws Exception {
super.setUp();
@@ -94,7 +99,7 @@ public class ScriptGenTest extends CodegenTestCase {
}
public void testLanguage() {
JetParserDefinition.getInstance().addScriptDefinition(new JetScriptDefinition(".lang.kt", new AnalyzerScriptParameter("num","jet.Int")));
JetScriptDefinitionProvider.getInstance(myEnvironment.getProject()).addScriptDefinition(FIB_SCRIPT_DEFINITION);
loadFile("script/fib.lang.kt");
final Class aClass = loadClass("Fib", generateClassesInFile());
try {
@@ -109,7 +114,7 @@ public class ScriptGenTest extends CodegenTestCase {
}
public void testLanguageWithPackage() {
JetParserDefinition.getInstance().addScriptDefinition(new JetScriptDefinition(".lang.kt", new AnalyzerScriptParameter("num","jet.Int")));
JetScriptDefinitionProvider.getInstance(myEnvironment.getProject()).addScriptDefinition(FIB_SCRIPT_DEFINITION);
loadFile("script/fibWithPackage.lang.kt");
final Class aClass = loadClass("test.FibWithPackage", generateClassesInFile());
try {