compiler options
This commit is contained in:
@@ -6,9 +6,10 @@ import com.intellij.openapi.Disposable;
|
|||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.util.io.FileUtil;
|
import com.intellij.openapi.util.io.FileUtil;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import com.intellij.psi.PsiDirectory;
|
|
||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
import com.intellij.psi.PsiManager;
|
import com.intellij.psi.PsiManager;
|
||||||
|
import com.sampullara.cli.Args;
|
||||||
|
import com.sampullara.cli.Argument;
|
||||||
import org.jetbrains.jet.codegen.ClassFileFactory;
|
import org.jetbrains.jet.codegen.ClassFileFactory;
|
||||||
import org.jetbrains.jet.codegen.GenerationState;
|
import org.jetbrains.jet.codegen.GenerationState;
|
||||||
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
|
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
|
||||||
@@ -32,10 +33,22 @@ import java.util.List;
|
|||||||
* @author alex.tkachman
|
* @author alex.tkachman
|
||||||
*/
|
*/
|
||||||
public class KotlinCompiler {
|
public class KotlinCompiler {
|
||||||
|
public static class Arguments {
|
||||||
|
@Argument(value = "output", description = "output directory")
|
||||||
|
public String outputDir;
|
||||||
|
@Argument(value = "src", description = "source file or directory", required = true)
|
||||||
|
public String src;
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.setProperty("java.awt.headless", "true");
|
System.setProperty("java.awt.headless", "true");
|
||||||
if (args.length < 1) {
|
Arguments arguments = new Arguments();
|
||||||
System.out.println("Usage: KotlinCompiler <filename> or <dirname>");
|
try {
|
||||||
|
Args.parse(arguments, args);
|
||||||
|
}
|
||||||
|
catch (Throwable t) {
|
||||||
|
System.out.println("Usage: KotlinCompiler -output <outputDir> -src <filename or dirname>");
|
||||||
|
t.printStackTrace();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,9 +67,9 @@ public class KotlinCompiler {
|
|||||||
environment.registerFileType(JetFileType.INSTANCE, "kt");
|
environment.registerFileType(JetFileType.INSTANCE, "kt");
|
||||||
environment.registerParserDefinition(new JetParserDefinition());
|
environment.registerParserDefinition(new JetParserDefinition());
|
||||||
|
|
||||||
VirtualFile vFile = environment.getLocalFileSystem().findFileByPath(args [0]);
|
VirtualFile vFile = environment.getLocalFileSystem().findFileByPath(arguments.src);
|
||||||
if (vFile == null) {
|
if (vFile == null) {
|
||||||
System.out.print("File/directory not found: " + args[0]);
|
System.out.print("File/directory not found: " + arguments.src);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,14 +113,19 @@ public class KotlinCompiler {
|
|||||||
generationState.compileCorrectNamespaces(bindingContext, namespaces);
|
generationState.compileCorrectNamespaces(bindingContext, namespaces);
|
||||||
|
|
||||||
final ClassFileFactory factory = generationState.getFactory();
|
final ClassFileFactory factory = generationState.getFactory();
|
||||||
List<String> files = factory.files();
|
if(arguments.outputDir == null) {
|
||||||
for (String file : files) {
|
System.out.println("Output directory is not specified - no files will be saved to the disk");
|
||||||
File target = new File(vFile.getParent().getPath(), file);
|
}
|
||||||
try {
|
else {
|
||||||
FileUtil.writeToFile(target, factory.asBytes(file));
|
List<String> files = factory.files();
|
||||||
System.out.println("Generated classfile: " + target);
|
for (String file : files) {
|
||||||
} catch (IOException e) {
|
File target = new File(arguments.outputDir, file);
|
||||||
System.out.println(e.getMessage());
|
try {
|
||||||
|
FileUtil.writeToFile(target, factory.asBytes(file));
|
||||||
|
System.out.println("Generated classfile: " + target);
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println(e.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
trait ISized {
|
||||||
|
val size : Int
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user