From dc66561ca560bbf67e88058c252115096072ec7d Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 15 Jan 2014 18:55:16 +0400 Subject: [PATCH] Create module 'builtins', move 'runtime' -> 'runtime.jvm' 'builtins' will be used for platform-independent core built-in definitions, 'runtime.jvm' for things that should be present at runtime in order for Kotlin code to execute correctly on JVM ProgressionUtil goes to 'builtins' right now because progression iterators depend on it, but should be rewritten to Kotlin later --- .idea/modules.xml | 3 +- build.xml | 8 ++- .../jet/codegen/CodegenTestUtil.java | 4 +- .../forTestCompile/ForTestCompileRuntime.java | 67 ++++--------------- .../jet/jvm/compiler/LoadDescriptorUtil.java | 5 +- .../jet/repl/ReplInterpreterTest.java | 3 +- .../runtime.iml => core/builtins/builtins.iml | 1 - .../builtins/src/jet}/Annotations.kt | 0 .../builtins/src/jet}/ExtensionFunctions.kt | 0 .../kt => core/builtins/src/jet}/Functions.kt | 0 .../kt => core/builtins/src/jet}/Inline.kt | 0 .../kt => core/builtins/src/jet}/Iterators.kt | 0 .../builtins/src/jet}/KExtensionFunctions.kt | 0 .../builtins/src/jet}/KFunctions.kt | 0 .../builtins/src/jet}/KMemberFunctions.kt | 0 .../builtins/src/jet}/Progression.kt | 0 .../builtins/src/jet}/ProgressionIterators.kt | 0 .../builtins/src/jet}/Progressions.kt | 0 .../builtins/src/jet}/PropertyMetadata.kt | 0 .../kt => core/builtins/src/jet}/Range.kt | 0 .../kt => core/builtins/src/jet}/Ranges.kt | 0 {runtime/kt => core/builtins/src/jet}/Unit.kt | 0 .../src/jet/runtime/ProgressionUtil.java | 0 core/runtime.jvm/runtime.jvm.iml | 13 ++++ .../src/jet/DefaultJetObject.java | 0 .../src/jet}/ExtensionFunctionsImpl.kt | 0 .../runtime.jvm/src/jet}/FunctionsImpl.kt | 0 .../runtime.jvm}/src/jet/JetObject.java | 0 .../src/jet}/KExtensionFunctionsImpl.kt | 0 .../runtime.jvm/src/jet}/KFunctionsImpl.kt | 0 .../src/jet}/KMemberFunctionsImpl.kt | 0 .../runtime.jvm}/src/jet/KotlinClass.java | 0 .../runtime.jvm}/src/jet/KotlinPackage.java | 0 .../src/jet/KotlinPackageFragment.java | 0 .../runtime.jvm}/src/jet/KotlinTraitImpl.java | 0 .../src/jet/NoPatternMatchedException.java | 0 .../src/jet/TypeCastException.java | 0 .../src/jet/modules/AllModules.java | 0 .../runtime.jvm}/src/jet/modules/Module.java | 0 .../src/jet/runtime/ArrayIterator.java | 0 .../src/jet/runtime/CollectionToArray.java | 0 .../src/jet/runtime/Intrinsic.java | 0 .../src/jet/runtime/Intrinsics.java | 0 .../runtime.jvm}/src/jet/runtime/Ranges.java | 0 .../src/jet/runtime/SharedVar.java | 0 .../runtime/typeinfo/JetValueParameter.java | 0 .../jet/runtime/typeinfo/KotlinSignature.java | 0 .../org/jetbrains/annotations/Mutable.java | 0 .../org/jetbrains/annotations/NotNull.java | 0 .../org/jetbrains/annotations/Nullable.java | 0 .../org/jetbrains/annotations/ReadOnly.java | 0 .../jet/generators/runtime/common.kt | 22 ++++-- .../jet/generators/runtime/functions.kt | 4 +- .../jet/generators/runtime/iterators.kt | 2 +- .../jet/generators/runtime/progressions.kt | 2 +- .../jet/generators/runtime/ranges.kt | 2 +- libraries/tools/runtime/pom.xml | 4 +- 57 files changed, 64 insertions(+), 76 deletions(-) rename runtime/runtime.iml => core/builtins/builtins.iml (85%) rename {runtime/kt => core/builtins/src/jet}/Annotations.kt (100%) rename {runtime/kt => core/builtins/src/jet}/ExtensionFunctions.kt (100%) rename {runtime/kt => core/builtins/src/jet}/Functions.kt (100%) rename {runtime/kt => core/builtins/src/jet}/Inline.kt (100%) rename {runtime/kt => core/builtins/src/jet}/Iterators.kt (100%) rename {runtime/kt => core/builtins/src/jet}/KExtensionFunctions.kt (100%) rename {runtime/kt => core/builtins/src/jet}/KFunctions.kt (100%) rename {runtime/kt => core/builtins/src/jet}/KMemberFunctions.kt (100%) rename {runtime/kt => core/builtins/src/jet}/Progression.kt (100%) rename {runtime/kt => core/builtins/src/jet}/ProgressionIterators.kt (100%) rename {runtime/kt => core/builtins/src/jet}/Progressions.kt (100%) rename {runtime/kt => core/builtins/src/jet}/PropertyMetadata.kt (100%) rename {runtime/kt => core/builtins/src/jet}/Range.kt (100%) rename {runtime/kt => core/builtins/src/jet}/Ranges.kt (100%) rename {runtime/kt => core/builtins/src/jet}/Unit.kt (100%) rename {runtime => core/builtins}/src/jet/runtime/ProgressionUtil.java (100%) create mode 100644 core/runtime.jvm/runtime.jvm.iml rename {runtime => core/runtime.jvm}/src/jet/DefaultJetObject.java (100%) rename {runtime/kt => core/runtime.jvm/src/jet}/ExtensionFunctionsImpl.kt (100%) rename {runtime/kt => core/runtime.jvm/src/jet}/FunctionsImpl.kt (100%) rename {runtime => core/runtime.jvm}/src/jet/JetObject.java (100%) rename {runtime/kt => core/runtime.jvm/src/jet}/KExtensionFunctionsImpl.kt (100%) rename {runtime/kt => core/runtime.jvm/src/jet}/KFunctionsImpl.kt (100%) rename {runtime/kt => core/runtime.jvm/src/jet}/KMemberFunctionsImpl.kt (100%) rename {runtime => core/runtime.jvm}/src/jet/KotlinClass.java (100%) rename {runtime => core/runtime.jvm}/src/jet/KotlinPackage.java (100%) rename {runtime => core/runtime.jvm}/src/jet/KotlinPackageFragment.java (100%) rename {runtime => core/runtime.jvm}/src/jet/KotlinTraitImpl.java (100%) rename {runtime => core/runtime.jvm}/src/jet/NoPatternMatchedException.java (100%) rename {runtime => core/runtime.jvm}/src/jet/TypeCastException.java (100%) rename {runtime => core/runtime.jvm}/src/jet/modules/AllModules.java (100%) rename {runtime => core/runtime.jvm}/src/jet/modules/Module.java (100%) rename {runtime => core/runtime.jvm}/src/jet/runtime/ArrayIterator.java (100%) rename {runtime => core/runtime.jvm}/src/jet/runtime/CollectionToArray.java (100%) rename {runtime => core/runtime.jvm}/src/jet/runtime/Intrinsic.java (100%) rename {runtime => core/runtime.jvm}/src/jet/runtime/Intrinsics.java (100%) rename {runtime => core/runtime.jvm}/src/jet/runtime/Ranges.java (100%) rename {runtime => core/runtime.jvm}/src/jet/runtime/SharedVar.java (100%) rename {runtime => core/runtime.jvm}/src/jet/runtime/typeinfo/JetValueParameter.java (100%) rename {runtime => core/runtime.jvm}/src/jet/runtime/typeinfo/KotlinSignature.java (100%) rename {runtime => core/runtime.jvm}/src/org/jetbrains/annotations/Mutable.java (100%) rename {runtime => core/runtime.jvm}/src/org/jetbrains/annotations/NotNull.java (100%) rename {runtime => core/runtime.jvm}/src/org/jetbrains/annotations/Nullable.java (100%) rename {runtime => core/runtime.jvm}/src/org/jetbrains/annotations/ReadOnly.java (100%) diff --git a/.idea/modules.xml b/.idea/modules.xml index 7cf100cd80a..fd74864453a 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -7,6 +7,7 @@ + @@ -32,7 +33,7 @@ - + diff --git a/build.xml b/build.xml index a58cb22b777..1a25cf3f4e7 100644 --- a/build.xml +++ b/build.xml @@ -516,8 +516,8 @@ - - + + @@ -552,7 +552,9 @@ - + + + diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestUtil.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestUtil.java index ad61b3c56c2..e7d47ccf530 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestUtil.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestUtil.java @@ -103,7 +103,9 @@ public class CodegenTestUtil { try { File javaClassesTempDirectory = new File(FileUtil.getTempDirectory(), "java-classes"); JetTestUtils.mkdirs(javaClassesTempDirectory); - String classPath = "out/production/runtime" + File.pathSeparator + JetTestUtils.getAnnotationsJar().getPath(); + String classPath = "out/production/builtins" + File.pathSeparator + + "out/production/runtime.jvm" + File.pathSeparator + + JetTestUtils.getAnnotationsJar().getPath(); List options = Arrays.asList( "-classpath", classPath, "-d", javaClassesTempDirectory.getPath() diff --git a/compiler/tests/org/jetbrains/jet/codegen/forTestCompile/ForTestCompileRuntime.java b/compiler/tests/org/jetbrains/jet/codegen/forTestCompile/ForTestCompileRuntime.java index 51938e10f2b..e2851ef5534 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/forTestCompile/ForTestCompileRuntime.java +++ b/compiler/tests/org/jetbrains/jet/codegen/forTestCompile/ForTestCompileRuntime.java @@ -17,25 +17,17 @@ package org.jetbrains.jet.codegen.forTestCompile; import com.intellij.openapi.util.io.FileUtil; -import com.intellij.util.containers.Stack; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.cli.common.ExitCode; import org.jetbrains.jet.cli.jvm.K2JVMCompiler; import org.jetbrains.jet.utils.Profiler; -import org.junit.Assert; -import javax.tools.*; import java.io.File; import java.io.IOException; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Locale; /** - * Compile stdlib.jar that can be used in tests + * Compile kotlin-runtime.jar that can be used in tests * * @see #runtimeJarForTests */ @@ -53,67 +45,32 @@ public class ForTestCompileRuntime { @Override protected void doCompile(@NotNull File classesDir) throws Exception { - compileJavaPartOfBuiltins(classesDir); + compileJvmBuiltins(classesDir); compileStdlib(classesDir); } } - private static void compileStdlib(File destdir) throws IOException { + private static void compileStdlib(@NotNull File destDir) throws IOException { ExitCode exitCode = new K2JVMCompiler().exec(System.out, - "-output", destdir.getPath(), + "-output", destDir.getPath(), "-src", "./libraries/stdlib/src", "-noStdlib", "-noJdkAnnotations", "-suppress", "warnings", "-annotations", "./jdk-annotations", - "-classpath", "out/production/runtime"); + "-classpath", "out/production/builtins" + File.pathSeparator + "out/production/runtime.jvm"); if (exitCode != ExitCode.OK) { throw new IllegalStateException("stdlib for test compilation failed: " + exitCode); } } - - private static List javaFilesInDir(File dir) { - List r = new ArrayList(); - Stack stack = new Stack(); - stack.push(dir); - while (!stack.empty()) { - File file = stack.pop(); - if (file.isDirectory()) { - stack.addAll(Arrays.asList(file.listFiles())); - } - else if (file.getName().endsWith(".java")) { - r.add(file); - } - } - return r; + + private static void compileJvmBuiltins(@NotNull File destDir) throws IOException { + // Sources of stdlib and built-ins may diverge this way, because the former are compiled with the new compiler and the latter are + // just copied from the sources built by bootstrap plugin (which has an old compiler) + // TODO: compile Kotlin+Java built-in sources properly here, maybe reusing KotlinCompilerAdapter ant task + FileUtil.copyDir(new File("out/production/builtins"), destDir); + FileUtil.copyDir(new File("out/production/runtime.jvm"), destDir); } - - private static void compileJavaPartOfBuiltins(File destdir) throws IOException { - if (true) { - FileUtil.copyDir(new File("out/production/runtime"), destdir); - } - else { - doCompileJavaPartOfBuiltins(destdir); - } - } - - private static void doCompileJavaPartOfBuiltins(File destdir) throws IOException {JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); - - StandardJavaFileManager fileManager = javaCompiler.getStandardFileManager(null, Locale.ENGLISH, Charset.forName("utf-8")); - try { - Iterable javaFileObjectsFromFiles = fileManager.getJavaFileObjectsFromFiles(javaFilesInDir(new File("runtime/src"))); - List options = Arrays.asList( - "-d", destdir.getPath() - ); - JavaCompiler.CompilationTask task = javaCompiler.getTask(null, fileManager, null, options, null, javaFileObjectsFromFiles); - - Assert.assertTrue(task.call()); - } - finally { - fileManager.close(); - } - } - @NotNull public static File runtimeJarForTests() { diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadDescriptorUtil.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadDescriptorUtil.java index fb48a11501e..acc63dd0804 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadDescriptorUtil.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadDescriptorUtil.java @@ -110,8 +110,9 @@ public final class LoadDescriptorUtil { } private static void compileJavaWithAnnotationsJar(@NotNull Collection javaFiles, @NotNull File outDir) throws IOException { - String classPath = "out/production/runtime" + - File.pathSeparator + JetTestUtils.getAnnotationsJar().getPath(); + String classPath = "out/production/builtins" + File.pathSeparator + + "out/production/runtime.jvm" + File.pathSeparator + + JetTestUtils.getAnnotationsJar().getPath(); JetTestUtils.compileJavaFiles(javaFiles, Arrays.asList( "-classpath", classPath, "-sourcepath", "compiler/tests", // for @ExpectLoadError annotation diff --git a/compiler/tests/org/jetbrains/jet/repl/ReplInterpreterTest.java b/compiler/tests/org/jetbrains/jet/repl/ReplInterpreterTest.java index 604389a01e0..0f7b52de149 100644 --- a/compiler/tests/org/jetbrains/jet/repl/ReplInterpreterTest.java +++ b/compiler/tests/org/jetbrains/jet/repl/ReplInterpreterTest.java @@ -48,7 +48,8 @@ public class ReplInterpreterTest { private void testFile(@NotNull String relativePath) { CompilerConfiguration configuration = JetTestUtils.compilerConfigurationForTests(ConfigurationKind.JDK_ONLY, TestJdkKind.FULL_JDK); - configuration.add(JVMConfigurationKeys.CLASSPATH_KEY, new File("out/production/runtime")); + configuration.add(JVMConfigurationKeys.CLASSPATH_KEY, new File("out/production/builtins")); + configuration.add(JVMConfigurationKeys.CLASSPATH_KEY, new File("out/production/runtime.jvm")); ReplInterpreter repl = new ReplInterpreter(disposable, configuration); ReplSessionTestFile file = ReplSessionTestFile.load(new File("compiler/testData/repl/" + relativePath)); diff --git a/runtime/runtime.iml b/core/builtins/builtins.iml similarity index 85% rename from runtime/runtime.iml rename to core/builtins/builtins.iml index 94b400ce62f..d5c07432750 100644 --- a/runtime/runtime.iml +++ b/core/builtins/builtins.iml @@ -4,7 +4,6 @@ - diff --git a/runtime/kt/Annotations.kt b/core/builtins/src/jet/Annotations.kt similarity index 100% rename from runtime/kt/Annotations.kt rename to core/builtins/src/jet/Annotations.kt diff --git a/runtime/kt/ExtensionFunctions.kt b/core/builtins/src/jet/ExtensionFunctions.kt similarity index 100% rename from runtime/kt/ExtensionFunctions.kt rename to core/builtins/src/jet/ExtensionFunctions.kt diff --git a/runtime/kt/Functions.kt b/core/builtins/src/jet/Functions.kt similarity index 100% rename from runtime/kt/Functions.kt rename to core/builtins/src/jet/Functions.kt diff --git a/runtime/kt/Inline.kt b/core/builtins/src/jet/Inline.kt similarity index 100% rename from runtime/kt/Inline.kt rename to core/builtins/src/jet/Inline.kt diff --git a/runtime/kt/Iterators.kt b/core/builtins/src/jet/Iterators.kt similarity index 100% rename from runtime/kt/Iterators.kt rename to core/builtins/src/jet/Iterators.kt diff --git a/runtime/kt/KExtensionFunctions.kt b/core/builtins/src/jet/KExtensionFunctions.kt similarity index 100% rename from runtime/kt/KExtensionFunctions.kt rename to core/builtins/src/jet/KExtensionFunctions.kt diff --git a/runtime/kt/KFunctions.kt b/core/builtins/src/jet/KFunctions.kt similarity index 100% rename from runtime/kt/KFunctions.kt rename to core/builtins/src/jet/KFunctions.kt diff --git a/runtime/kt/KMemberFunctions.kt b/core/builtins/src/jet/KMemberFunctions.kt similarity index 100% rename from runtime/kt/KMemberFunctions.kt rename to core/builtins/src/jet/KMemberFunctions.kt diff --git a/runtime/kt/Progression.kt b/core/builtins/src/jet/Progression.kt similarity index 100% rename from runtime/kt/Progression.kt rename to core/builtins/src/jet/Progression.kt diff --git a/runtime/kt/ProgressionIterators.kt b/core/builtins/src/jet/ProgressionIterators.kt similarity index 100% rename from runtime/kt/ProgressionIterators.kt rename to core/builtins/src/jet/ProgressionIterators.kt diff --git a/runtime/kt/Progressions.kt b/core/builtins/src/jet/Progressions.kt similarity index 100% rename from runtime/kt/Progressions.kt rename to core/builtins/src/jet/Progressions.kt diff --git a/runtime/kt/PropertyMetadata.kt b/core/builtins/src/jet/PropertyMetadata.kt similarity index 100% rename from runtime/kt/PropertyMetadata.kt rename to core/builtins/src/jet/PropertyMetadata.kt diff --git a/runtime/kt/Range.kt b/core/builtins/src/jet/Range.kt similarity index 100% rename from runtime/kt/Range.kt rename to core/builtins/src/jet/Range.kt diff --git a/runtime/kt/Ranges.kt b/core/builtins/src/jet/Ranges.kt similarity index 100% rename from runtime/kt/Ranges.kt rename to core/builtins/src/jet/Ranges.kt diff --git a/runtime/kt/Unit.kt b/core/builtins/src/jet/Unit.kt similarity index 100% rename from runtime/kt/Unit.kt rename to core/builtins/src/jet/Unit.kt diff --git a/runtime/src/jet/runtime/ProgressionUtil.java b/core/builtins/src/jet/runtime/ProgressionUtil.java similarity index 100% rename from runtime/src/jet/runtime/ProgressionUtil.java rename to core/builtins/src/jet/runtime/ProgressionUtil.java diff --git a/core/runtime.jvm/runtime.jvm.iml b/core/runtime.jvm/runtime.jvm.iml new file mode 100644 index 00000000000..e49743833b9 --- /dev/null +++ b/core/runtime.jvm/runtime.jvm.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/runtime/src/jet/DefaultJetObject.java b/core/runtime.jvm/src/jet/DefaultJetObject.java similarity index 100% rename from runtime/src/jet/DefaultJetObject.java rename to core/runtime.jvm/src/jet/DefaultJetObject.java diff --git a/runtime/kt/ExtensionFunctionsImpl.kt b/core/runtime.jvm/src/jet/ExtensionFunctionsImpl.kt similarity index 100% rename from runtime/kt/ExtensionFunctionsImpl.kt rename to core/runtime.jvm/src/jet/ExtensionFunctionsImpl.kt diff --git a/runtime/kt/FunctionsImpl.kt b/core/runtime.jvm/src/jet/FunctionsImpl.kt similarity index 100% rename from runtime/kt/FunctionsImpl.kt rename to core/runtime.jvm/src/jet/FunctionsImpl.kt diff --git a/runtime/src/jet/JetObject.java b/core/runtime.jvm/src/jet/JetObject.java similarity index 100% rename from runtime/src/jet/JetObject.java rename to core/runtime.jvm/src/jet/JetObject.java diff --git a/runtime/kt/KExtensionFunctionsImpl.kt b/core/runtime.jvm/src/jet/KExtensionFunctionsImpl.kt similarity index 100% rename from runtime/kt/KExtensionFunctionsImpl.kt rename to core/runtime.jvm/src/jet/KExtensionFunctionsImpl.kt diff --git a/runtime/kt/KFunctionsImpl.kt b/core/runtime.jvm/src/jet/KFunctionsImpl.kt similarity index 100% rename from runtime/kt/KFunctionsImpl.kt rename to core/runtime.jvm/src/jet/KFunctionsImpl.kt diff --git a/runtime/kt/KMemberFunctionsImpl.kt b/core/runtime.jvm/src/jet/KMemberFunctionsImpl.kt similarity index 100% rename from runtime/kt/KMemberFunctionsImpl.kt rename to core/runtime.jvm/src/jet/KMemberFunctionsImpl.kt diff --git a/runtime/src/jet/KotlinClass.java b/core/runtime.jvm/src/jet/KotlinClass.java similarity index 100% rename from runtime/src/jet/KotlinClass.java rename to core/runtime.jvm/src/jet/KotlinClass.java diff --git a/runtime/src/jet/KotlinPackage.java b/core/runtime.jvm/src/jet/KotlinPackage.java similarity index 100% rename from runtime/src/jet/KotlinPackage.java rename to core/runtime.jvm/src/jet/KotlinPackage.java diff --git a/runtime/src/jet/KotlinPackageFragment.java b/core/runtime.jvm/src/jet/KotlinPackageFragment.java similarity index 100% rename from runtime/src/jet/KotlinPackageFragment.java rename to core/runtime.jvm/src/jet/KotlinPackageFragment.java diff --git a/runtime/src/jet/KotlinTraitImpl.java b/core/runtime.jvm/src/jet/KotlinTraitImpl.java similarity index 100% rename from runtime/src/jet/KotlinTraitImpl.java rename to core/runtime.jvm/src/jet/KotlinTraitImpl.java diff --git a/runtime/src/jet/NoPatternMatchedException.java b/core/runtime.jvm/src/jet/NoPatternMatchedException.java similarity index 100% rename from runtime/src/jet/NoPatternMatchedException.java rename to core/runtime.jvm/src/jet/NoPatternMatchedException.java diff --git a/runtime/src/jet/TypeCastException.java b/core/runtime.jvm/src/jet/TypeCastException.java similarity index 100% rename from runtime/src/jet/TypeCastException.java rename to core/runtime.jvm/src/jet/TypeCastException.java diff --git a/runtime/src/jet/modules/AllModules.java b/core/runtime.jvm/src/jet/modules/AllModules.java similarity index 100% rename from runtime/src/jet/modules/AllModules.java rename to core/runtime.jvm/src/jet/modules/AllModules.java diff --git a/runtime/src/jet/modules/Module.java b/core/runtime.jvm/src/jet/modules/Module.java similarity index 100% rename from runtime/src/jet/modules/Module.java rename to core/runtime.jvm/src/jet/modules/Module.java diff --git a/runtime/src/jet/runtime/ArrayIterator.java b/core/runtime.jvm/src/jet/runtime/ArrayIterator.java similarity index 100% rename from runtime/src/jet/runtime/ArrayIterator.java rename to core/runtime.jvm/src/jet/runtime/ArrayIterator.java diff --git a/runtime/src/jet/runtime/CollectionToArray.java b/core/runtime.jvm/src/jet/runtime/CollectionToArray.java similarity index 100% rename from runtime/src/jet/runtime/CollectionToArray.java rename to core/runtime.jvm/src/jet/runtime/CollectionToArray.java diff --git a/runtime/src/jet/runtime/Intrinsic.java b/core/runtime.jvm/src/jet/runtime/Intrinsic.java similarity index 100% rename from runtime/src/jet/runtime/Intrinsic.java rename to core/runtime.jvm/src/jet/runtime/Intrinsic.java diff --git a/runtime/src/jet/runtime/Intrinsics.java b/core/runtime.jvm/src/jet/runtime/Intrinsics.java similarity index 100% rename from runtime/src/jet/runtime/Intrinsics.java rename to core/runtime.jvm/src/jet/runtime/Intrinsics.java diff --git a/runtime/src/jet/runtime/Ranges.java b/core/runtime.jvm/src/jet/runtime/Ranges.java similarity index 100% rename from runtime/src/jet/runtime/Ranges.java rename to core/runtime.jvm/src/jet/runtime/Ranges.java diff --git a/runtime/src/jet/runtime/SharedVar.java b/core/runtime.jvm/src/jet/runtime/SharedVar.java similarity index 100% rename from runtime/src/jet/runtime/SharedVar.java rename to core/runtime.jvm/src/jet/runtime/SharedVar.java diff --git a/runtime/src/jet/runtime/typeinfo/JetValueParameter.java b/core/runtime.jvm/src/jet/runtime/typeinfo/JetValueParameter.java similarity index 100% rename from runtime/src/jet/runtime/typeinfo/JetValueParameter.java rename to core/runtime.jvm/src/jet/runtime/typeinfo/JetValueParameter.java diff --git a/runtime/src/jet/runtime/typeinfo/KotlinSignature.java b/core/runtime.jvm/src/jet/runtime/typeinfo/KotlinSignature.java similarity index 100% rename from runtime/src/jet/runtime/typeinfo/KotlinSignature.java rename to core/runtime.jvm/src/jet/runtime/typeinfo/KotlinSignature.java diff --git a/runtime/src/org/jetbrains/annotations/Mutable.java b/core/runtime.jvm/src/org/jetbrains/annotations/Mutable.java similarity index 100% rename from runtime/src/org/jetbrains/annotations/Mutable.java rename to core/runtime.jvm/src/org/jetbrains/annotations/Mutable.java diff --git a/runtime/src/org/jetbrains/annotations/NotNull.java b/core/runtime.jvm/src/org/jetbrains/annotations/NotNull.java similarity index 100% rename from runtime/src/org/jetbrains/annotations/NotNull.java rename to core/runtime.jvm/src/org/jetbrains/annotations/NotNull.java diff --git a/runtime/src/org/jetbrains/annotations/Nullable.java b/core/runtime.jvm/src/org/jetbrains/annotations/Nullable.java similarity index 100% rename from runtime/src/org/jetbrains/annotations/Nullable.java rename to core/runtime.jvm/src/org/jetbrains/annotations/Nullable.java diff --git a/runtime/src/org/jetbrains/annotations/ReadOnly.java b/core/runtime.jvm/src/org/jetbrains/annotations/ReadOnly.java similarity index 100% rename from runtime/src/org/jetbrains/annotations/ReadOnly.java rename to core/runtime.jvm/src/org/jetbrains/annotations/ReadOnly.java diff --git a/generators/src/org/jetbrains/jet/generators/runtime/common.kt b/generators/src/org/jetbrains/jet/generators/runtime/common.kt index b2f496c06a9..c02af9821a7 100644 --- a/generators/src/org/jetbrains/jet/generators/runtime/common.kt +++ b/generators/src/org/jetbrains/jet/generators/runtime/common.kt @@ -50,20 +50,32 @@ fun floatToIntBits(v: String) = "java.lang.Float.floatToIntBits($v)" fun doubleToLongBits(v: String) = "java.lang.Double.doubleToLongBits($v)" -val OUTPUT_DIR: File by Delegates.lazy { - val result = File("runtime/kt/") + +fun existingDirectory(path: String): File { + val result = File(path) if (!result.exists()) { throw IllegalStateException("Output dir does not exist: ${result.getAbsolutePath()}") } - result + return result } -fun generateRuntimeFile(name: String, generate: (PrintWriter) -> Unit) { - val file = File(OUTPUT_DIR, name) +val BUILT_INS_DIR: File by Delegates.lazy { existingDirectory("core/builtins/src/jet/") } +val RUNTIME_JVM_DIR: File by Delegates.lazy { existingDirectory("core/runtime.jvm/src/jet/") } + +fun generateFile(dir: File, name: String, generate: (PrintWriter) -> Unit) { + val file = File(dir, name) println("generating $file") PrintWriter(file) use generate } +fun generateBuiltInFile(name: String, generate: (PrintWriter) -> Unit) { + generateFile(BUILT_INS_DIR, name, generate) +} + +fun generateRuntimeJvmFile(name: String, generate: (PrintWriter) -> Unit) { + generateFile(BUILT_INS_DIR, name, generate) +} + fun generatedBy(out: PrintWriter, generator: String) { out.println("// Generated by $generator") out.println() diff --git a/generators/src/org/jetbrains/jet/generators/runtime/functions.kt b/generators/src/org/jetbrains/jet/generators/runtime/functions.kt index d276ca38e91..b0e382cc01c 100644 --- a/generators/src/org/jetbrains/jet/generators/runtime/functions.kt +++ b/generators/src/org/jetbrains/jet/generators/runtime/functions.kt @@ -122,11 +122,11 @@ class GenerateFunctions(val out: PrintWriter, val kind: FunctionKind) { fun main(args: Array) { for (kind in FunctionKind.values()) { - generateRuntimeFile(kind.getFileName()) { + generateBuiltInFile(kind.getFileName()) { GenerateFunctions(it, kind).generateFunctionClasses() } - generateRuntimeFile(kind.getImplFileName()) { + generateRuntimeJvmFile(kind.getImplFileName()) { GenerateFunctions(it, kind).generateFunctionImplClasses() } } diff --git a/generators/src/org/jetbrains/jet/generators/runtime/iterators.kt b/generators/src/org/jetbrains/jet/generators/runtime/iterators.kt index 6f259b3e121..8e04fce622a 100644 --- a/generators/src/org/jetbrains/jet/generators/runtime/iterators.kt +++ b/generators/src/org/jetbrains/jet/generators/runtime/iterators.kt @@ -48,7 +48,7 @@ class GenerateIterators(val out: PrintWriter) { } fun main(args: Array) { - generateRuntimeFile("Iterators.kt") { + generateBuiltInFile("Iterators.kt") { GenerateIterators(it).generate() } } diff --git a/generators/src/org/jetbrains/jet/generators/runtime/progressions.kt b/generators/src/org/jetbrains/jet/generators/runtime/progressions.kt index b8a263418f2..e7c2033c0be 100644 --- a/generators/src/org/jetbrains/jet/generators/runtime/progressions.kt +++ b/generators/src/org/jetbrains/jet/generators/runtime/progressions.kt @@ -84,7 +84,7 @@ class GenerateProgressions(val out: PrintWriter) { } fun main(args: Array) { - generateRuntimeFile("Progressions.kt") { + generateBuiltInFile("Progressions.kt") { GenerateProgressions(it).generate() } } diff --git a/generators/src/org/jetbrains/jet/generators/runtime/ranges.kt b/generators/src/org/jetbrains/jet/generators/runtime/ranges.kt index 86d51cd6fc0..d9598a53671 100644 --- a/generators/src/org/jetbrains/jet/generators/runtime/ranges.kt +++ b/generators/src/org/jetbrains/jet/generators/runtime/ranges.kt @@ -81,7 +81,7 @@ class GenerateRanges(val out: PrintWriter) { } fun main(args: Array) { - generateRuntimeFile("Ranges.kt") { + generateBuiltInFile("Ranges.kt") { GenerateRanges(it).generate() } } diff --git a/libraries/tools/runtime/pom.xml b/libraries/tools/runtime/pom.xml index 841085c936f..dbf820ad450 100644 --- a/libraries/tools/runtime/pom.xml +++ b/libraries/tools/runtime/pom.xml @@ -32,8 +32,8 @@ - - + +