configurable script languages

This commit is contained in:
Alex Tkachman
2012-07-29 21:32:53 +03:00
parent 5cda223ce4
commit f8391619a5
11 changed files with 139 additions and 18 deletions
@@ -21,6 +21,7 @@ import junit.framework.Test;
import junit.framework.TestSuite;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.parsing.JetParser;
import org.jetbrains.jet.lang.parsing.JetParserDefinition;
import java.io.File;
import java.io.FileFilter;
@@ -68,7 +69,7 @@ public abstract class JetTestCaseBuilder {
public static FilenameFilter kotlinFilter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".kt") || name.endsWith("jet") || name.endsWith("." + JetParser.KTSCRIPT_FILE_SUFFIX);
return name.endsWith(".kt") || name.endsWith(".jet") || name.endsWith("." + JetParserDefinition.KTSCRIPT_FILE_SUFFIX);
}
};
@@ -17,8 +17,15 @@
package org.jetbrains.jet.codegen;
import org.jetbrains.jet.ConfigurationKind;
import org.jetbrains.jet.lang.parsing.JetParserDefinition;
import org.jetbrains.jet.lang.parsing.JetScriptDefinition;
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
/**
* @author Stepan Koltsov
@@ -86,4 +93,18 @@ public class ScriptGenTest extends CodegenTestCase {
blackBoxFile("script/empty.ktscript");
}
public void testLanguage() {
JetParserDefinition.getInstance().addScriptDefinition(new JetScriptDefinition(".lang.kt", new AnalyzerScriptParameter("num","jet.Int")));
loadFile("script/fib.lang.kt");
final Class aClass = loadClass("Script", generateClassesInFile());
try {
Constructor constructor = aClass.getConstructor(int.class);
Field result = aClass.getField("result");
Object script = constructor.newInstance(5);
assertEquals(8,result.get(script));
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
}