configurable script languages
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user