From 1cfc6a8fca5f6df3507f8d792c1fdefb6c279a40 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Thu, 23 Jun 2022 03:49:30 +0000 Subject: [PATCH] Move sources of ranges to common stdlib from builtins But still cherry-pick them when serializing builtins because they are used in builtins signatures. Merge-request: KT-MR-6488 Merged-by: Ilya Gorbunov --- ...IrInterpreterHelpersSourceFilesProvider.kt | 21 +++--- .../builtins/BuiltinsTestUtils.kt | 3 +- core/builtins/build.gradle.kts | 24 +++++-- generators/builtins/generateBuiltIns.kt | 8 +-- kotlin-native/runtime/build.gradle.kts | 7 -- .../js-ir-minimal-for-test/build.gradle.kts | 12 ++++ libraries/stdlib/js-v1/build.gradle | 5 -- .../src/kotlin/collections/Iterators.kt | 70 ------------------- .../kotlin/collections/PrimitiveIterators.kt | 0 .../src/kotlin/internal/progressionUtil.kt | 0 .../src/kotlin/ranges/PrimitiveRanges.kt | 0 .../kotlin/ranges}/ProgressionIterators.kt | 0 .../stdlib/src/kotlin/ranges}/Progressions.kt | 0 .../stdlib/src/kotlin/ranges}/Range.kt | 0 .../tools/kotlin-stdlib-docs/build-docs.xml | 6 -- 15 files changed, 48 insertions(+), 108 deletions(-) delete mode 100644 libraries/stdlib/native-wasm/src/kotlin/collections/Iterators.kt rename core/builtins/src/kotlin/Iterators.kt => libraries/stdlib/src/kotlin/collections/PrimitiveIterators.kt (100%) rename {core/builtins => libraries/stdlib}/src/kotlin/internal/progressionUtil.kt (100%) rename core/builtins/src/kotlin/Ranges.kt => libraries/stdlib/src/kotlin/ranges/PrimitiveRanges.kt (100%) rename {core/builtins/src/kotlin => libraries/stdlib/src/kotlin/ranges}/ProgressionIterators.kt (100%) rename {core/builtins/src/kotlin => libraries/stdlib/src/kotlin/ranges}/Progressions.kt (100%) rename {core/builtins/src/kotlin => libraries/stdlib/src/kotlin/ranges}/Range.kt (100%) diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/sourceProviders/IrInterpreterHelpersSourceFilesProvider.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/sourceProviders/IrInterpreterHelpersSourceFilesProvider.kt index b6e9904c393..c90beaee8e8 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/sourceProviders/IrInterpreterHelpersSourceFilesProvider.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/sourceProviders/IrInterpreterHelpersSourceFilesProvider.kt @@ -19,9 +19,9 @@ class IrInterpreterHelpersSourceFilesProvider(testServices: TestServices) : Addi private const val HELPERS_PATH = "./compiler/testData/ir/interpreter/helpers" private const val UNSIGNED_PATH = "./libraries/stdlib/unsigned/src/kotlin" private val RUNTIME_PATHS = arrayOf( - "./core/builtins/src/kotlin/Progressions.kt", - "./core/builtins/src/kotlin/ProgressionIterators.kt", - "./core/builtins/src/kotlin/internal/progressionUtil.kt", + "./libraries/stdlib/src/kotlin/ranges/Progressions.kt", + "./libraries/stdlib/src/kotlin/ranges/ProgressionIterators.kt", + "./libraries/stdlib/src/kotlin/internal/progressionUtil.kt", "./libraries/stdlib/jvm/runtime/kotlin/TypeAliases.kt", "./libraries/stdlib/jvm/runtime/kotlin/text/TypeAliases.kt", "./libraries/stdlib/jvm/src/kotlin/collections/TypeAliases.kt", @@ -41,7 +41,7 @@ class IrInterpreterHelpersSourceFilesProvider(testServices: TestServices) : Addi private val EXCLUDES = listOf( "src/kotlin/UStrings.kt", "src/kotlin/UMath.kt", "src/kotlin/UNumbers.kt", "src/kotlin/reflect/TypesJVM.kt", "core/builtins/src/kotlin/CompileTimeAnnotations.kt" - ) + ).map(::File) } override val directiveContainers: List = @@ -49,12 +49,13 @@ class IrInterpreterHelpersSourceFilesProvider(testServices: TestServices) : Addi private fun getTestFilesForEachDirectory(vararg directories: String): List { return directories.flatMap { directory -> - File(directory).walkTopDown().mapNotNull { file -> - if (file.isDirectory) return@mapNotNull null - if (EXCLUDES.any { file.absolutePath.endsWith(it.replace('/', File.separatorChar)) }) return@mapNotNull null - - file.toTestFile() - }.toList() + File(directory) + .also { check(it.exists()) { "$it path is not found" } } + .walkTopDown().mapNotNull { file -> + file.takeUnless { it.isDirectory } + ?.takeUnless { EXCLUDES.any { file.endsWith(it) } } + ?.toTestFile() + }.toList() } } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/serialization/builtins/BuiltinsTestUtils.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/serialization/builtins/BuiltinsTestUtils.kt index 5e5f2d5f1c0..99d62a55a82 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/serialization/builtins/BuiltinsTestUtils.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/serialization/builtins/BuiltinsTestUtils.kt @@ -20,7 +20,8 @@ object BuiltinsTestUtils { val files = KotlinTestUtils.loadToJetFiles( environment, ContainerUtil.concat( allFilesUnder("core/builtins/native"), - allFilesUnder("core/builtins/src") + allFilesUnder("core/builtins/src"), + allFilesUnder("core/builtins/build/src/ranges"), ) ) return createResolveSessionForFiles(environment.project, files, false).moduleDescriptor diff --git a/core/builtins/build.gradle.kts b/core/builtins/build.gradle.kts index 724698fdb0d..faacec5747d 100644 --- a/core/builtins/build.gradle.kts +++ b/core/builtins/build.gradle.kts @@ -10,8 +10,11 @@ val builtinsSrc = fileFrom(rootDir, "core", "builtins", "src") val builtinsNative = fileFrom(rootDir, "core", "builtins", "native") val kotlinReflectCommon = fileFrom(rootDir, "libraries/stdlib/src/kotlin/reflect/") val kotlinReflectJvm = fileFrom(rootDir, "libraries/stdlib/jvm/src/kotlin/reflect") -val builtinsCherryPicked = fileFrom(buildDir, "src") -val builtinsCherryPickedJvm = fileFrom(buildDir, "src-jvm") +val kotlinRangesCommon = fileFrom(rootDir, "libraries/stdlib/src/kotlin/ranges") +val kotlinCollectionsCommon = fileFrom(rootDir, "libraries/stdlib/src/kotlin/collections") +val builtinsCherryPicked = fileFrom(buildDir, "src/reflect") +val rangesCherryPicked = fileFrom(buildDir, "src/ranges") +val builtinsCherryPickedJvm = fileFrom(buildDir, "src-jvm/reflect") val runtimeElements by configurations.creating { isCanBeResolved = false @@ -30,6 +33,17 @@ val runtimeElementsJvm by configurations.creating { } } +val prepareRangeSources by tasks.registering(Sync::class) { + from(kotlinRangesCommon) { + exclude("Ranges.kt") + } + from(kotlinCollectionsCommon) { + include("PrimitiveIterators.kt") + } + + into(rangesCherryPicked) +} + val prepareSources by tasks.registering(Sync::class) { from(kotlinReflectCommon) { exclude("typeOf.kt") @@ -54,7 +68,7 @@ val prepareSourcesJvm by tasks.registering(Sync::class) { fun serializeTask(name: String, sourcesTask: TaskProvider<*>, inDirs: List) = tasks.register(name, NoDebugJavaExec::class) { - dependsOn(sourcesTask) + dependsOn(sourcesTask, prepareRangeSources) val outDir = buildDir.resolve(this.name) inDirs.forEach { inputs.dir(it).withPathSensitivity(RELATIVE) } outputs.dir(outDir) @@ -72,9 +86,9 @@ fun serializeTask(name: String, sourcesTask: TaskProvider<*>, inDirs: List ) } -val serialize = serializeTask("serialize", prepareSources, listOf(builtinsSrc, builtinsNative, builtinsCherryPicked)) +val serialize = serializeTask("serialize", prepareSources, listOf(builtinsSrc, builtinsNative, builtinsCherryPicked, rangesCherryPicked)) -val serializeJvm = serializeTask("serializeJvm", prepareSourcesJvm, listOf(builtinsSrc, builtinsNative, builtinsCherryPickedJvm)) +val serializeJvm = serializeTask("serializeJvm", prepareSourcesJvm, listOf(builtinsSrc, builtinsNative, builtinsCherryPickedJvm, rangesCherryPicked)) val builtinsJar by task { dependsOn(serialize) diff --git a/generators/builtins/generateBuiltIns.kt b/generators/builtins/generateBuiltIns.kt index 4b5739decdd..887ab6b591d 100644 --- a/generators/builtins/generateBuiltIns.kt +++ b/generators/builtins/generateBuiltIns.kt @@ -75,11 +75,11 @@ fun generateBuiltIns(generate: (File, (PrintWriter) -> BuiltInsSourceGenerator) generate(File(RUNTIME_JVM_DIR, "kotlin/jvm/functions/Functions.kt")) { GenerateFunctions(it) } generate(File(BUILT_INS_NATIVE_DIR, "kotlin/Arrays.kt")) { GenerateArrays(it) } generate(File(BUILT_INS_NATIVE_DIR, "kotlin/Primitives.kt")) { GeneratePrimitives(it) } - generate(File(BUILT_INS_SRC_DIR, "kotlin/Iterators.kt")) { GenerateIterators(it) } + generate(File(STDLIB_DIR, "kotlin/collections/PrimitiveIterators.kt")) { GenerateIterators(it) } generate(File(RUNTIME_JVM_DIR, "kotlin/jvm/internal/ArrayIterators.kt")) { GenerateArrayIterators(it) } - generate(File(BUILT_INS_SRC_DIR, "kotlin/ProgressionIterators.kt")) { GenerateProgressionIterators(it) } - generate(File(BUILT_INS_SRC_DIR, "kotlin/Progressions.kt")) { GenerateProgressions(it) } - generate(File(BUILT_INS_SRC_DIR, "kotlin/Ranges.kt")) { GenerateRanges(it) } + generate(File(STDLIB_DIR, "kotlin/ranges/ProgressionIterators.kt")) { GenerateProgressionIterators(it) } + generate(File(STDLIB_DIR, "kotlin/ranges/Progressions.kt")) { GenerateProgressions(it) } + generate(File(STDLIB_DIR, "kotlin/ranges/PrimitiveRanges.kt")) { GenerateRanges(it) } generate(File(STDLIB_DIR, "kotlin/util/FloorDivMod.kt")) { GenerateFloorDivMod(it) } generateUnsignedTypes(UNSIGNED_TYPES_DIR, generate) diff --git a/kotlin-native/runtime/build.gradle.kts b/kotlin-native/runtime/build.gradle.kts index 77f831a1bf0..146c6d33049 100644 --- a/kotlin-native/runtime/build.gradle.kts +++ b/kotlin-native/runtime/build.gradle.kts @@ -257,12 +257,6 @@ val commonStdlibSrcDirs = project(":kotlin-stdlib-common") "../unsigned/src", "../src" ).files -val commonBuiltinsSrc = listOf( - "Progressions.kt", "ProgressionIterators.kt", "Range.kt", "Ranges.kt", "internal/progressionUtil.kt") - .map { "src/kotlin/$it" } - .let { - project(":core:builtins").files(it).files - } val interopRuntimeCommonSrcDir = project(":kotlin-native:Interop:Runtime").file("src/main/kotlin") val interopSrcDirs = listOf( @@ -300,7 +294,6 @@ konanArtifacts { "-opt-in=kotlin.native.internal.InternalForKotlinNative", ) - srcFiles(commonBuiltinsSrc) commonStdlibSrcDirs.forEach { commonSrcDir(it) } testAnnotationCommonSrcDir.forEach { commonSrcDir(it) } testCommonSrcDir.forEach { commonSrcDir(it) } diff --git a/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts b/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts index 147d64a18b2..74f018ba8be 100644 --- a/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts +++ b/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts @@ -56,6 +56,17 @@ val commonMainSources by task { into("$buildDir/commonMainSources") } +val commonMainCollectionSources by task { + dependsOn(":kotlin-stdlib-js-ir:commonMainSources") + from { + val fullCommonMainSources = tasks.getByPath(":kotlin-stdlib-js-ir:commonMainSources") + include("libraries/stdlib/src/kotlin/collections/PrimitiveIterators.kt") + fullCommonMainSources.outputs.files.singleFile + } + + into("$buildDir/commonMainCollectionSources") +} + val jsMainSources by task { dependsOn(":kotlin-stdlib-js-ir:jsMainSources") @@ -111,6 +122,7 @@ kotlin { sourceSets { val commonMain by getting { kotlin.srcDir(files(commonMainSources.map { it.destinationDir })) + kotlin.srcDir(files(commonMainCollectionSources.map { it.destinationDir })) } val jsMain by getting { kotlin.srcDir(files(jsMainSources.map { it.destinationDir })) diff --git a/libraries/stdlib/js-v1/build.gradle b/libraries/stdlib/js-v1/build.gradle index 2ef62529326..ca4560a3391 100644 --- a/libraries/stdlib/js-v1/build.gradle +++ b/libraries/stdlib/js-v1/build.gradle @@ -100,11 +100,6 @@ task prepareBuiltinsSources(type: Copy) { from("${builtinsDir}/src/kotlin/") { include "annotation/Annotations.kt" include "Function.kt" - include "Iterators.kt" - include "Range.kt" - include "Progressions.kt" - include "ProgressionIterators.kt" - include "Ranges.kt" include "Unit.kt" } into builtinsSrcDir diff --git a/libraries/stdlib/native-wasm/src/kotlin/collections/Iterators.kt b/libraries/stdlib/native-wasm/src/kotlin/collections/Iterators.kt deleted file mode 100644 index 08f4990bc45..00000000000 --- a/libraries/stdlib/native-wasm/src/kotlin/collections/Iterators.kt +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the LICENSE file. - */ - -package kotlin.collections - -/** An iterator over a sequence of values of type `Byte`. */ -public abstract class ByteIterator : Iterator { - override final fun next() = nextByte() - - /** Returns the next value in the sequence without boxing. */ - public abstract fun nextByte(): Byte -} - -/** An iterator over a sequence of values of type `Char`. */ -public abstract class CharIterator : Iterator { - override final fun next() = nextChar() - - /** Returns the next value in the sequence without boxing. */ - public abstract fun nextChar(): Char -} - -/** An iterator over a sequence of values of type `Short`. */ -public abstract class ShortIterator : Iterator { - override final fun next() = nextShort() - - /** Returns the next value in the sequence without boxing. */ - public abstract fun nextShort(): Short -} - -/** An iterator over a sequence of values of type `Int`. */ -public abstract class IntIterator : Iterator { - override final fun next() = nextInt() - - /** Returns the next value in the sequence without boxing. */ - public abstract fun nextInt(): Int -} - -/** An iterator over a sequence of values of type `Long`. */ -public abstract class LongIterator : Iterator { - override final fun next() = nextLong() - - /** Returns the next value in the sequence without boxing. */ - public abstract fun nextLong(): Long -} - -/** An iterator over a sequence of values of type `Float`. */ -public abstract class FloatIterator : Iterator { - override final fun next() = nextFloat() - - /** Returns the next value in the sequence without boxing. */ - public abstract fun nextFloat(): Float -} - -/** An iterator over a sequence of values of type `Double`. */ -public abstract class DoubleIterator : Iterator { - override final fun next() = nextDouble() - - /** Returns the next value in the sequence without boxing. */ - public abstract fun nextDouble(): Double -} - -/** An iterator over a sequence of values of type `Boolean`. */ -public abstract class BooleanIterator : Iterator { - override final fun next() = nextBoolean() - - /** Returns the next value in the sequence without boxing. */ - public abstract fun nextBoolean(): Boolean -} diff --git a/core/builtins/src/kotlin/Iterators.kt b/libraries/stdlib/src/kotlin/collections/PrimitiveIterators.kt similarity index 100% rename from core/builtins/src/kotlin/Iterators.kt rename to libraries/stdlib/src/kotlin/collections/PrimitiveIterators.kt diff --git a/core/builtins/src/kotlin/internal/progressionUtil.kt b/libraries/stdlib/src/kotlin/internal/progressionUtil.kt similarity index 100% rename from core/builtins/src/kotlin/internal/progressionUtil.kt rename to libraries/stdlib/src/kotlin/internal/progressionUtil.kt diff --git a/core/builtins/src/kotlin/Ranges.kt b/libraries/stdlib/src/kotlin/ranges/PrimitiveRanges.kt similarity index 100% rename from core/builtins/src/kotlin/Ranges.kt rename to libraries/stdlib/src/kotlin/ranges/PrimitiveRanges.kt diff --git a/core/builtins/src/kotlin/ProgressionIterators.kt b/libraries/stdlib/src/kotlin/ranges/ProgressionIterators.kt similarity index 100% rename from core/builtins/src/kotlin/ProgressionIterators.kt rename to libraries/stdlib/src/kotlin/ranges/ProgressionIterators.kt diff --git a/core/builtins/src/kotlin/Progressions.kt b/libraries/stdlib/src/kotlin/ranges/Progressions.kt similarity index 100% rename from core/builtins/src/kotlin/Progressions.kt rename to libraries/stdlib/src/kotlin/ranges/Progressions.kt diff --git a/core/builtins/src/kotlin/Range.kt b/libraries/stdlib/src/kotlin/ranges/Range.kt similarity index 100% rename from core/builtins/src/kotlin/Range.kt rename to libraries/stdlib/src/kotlin/ranges/Range.kt diff --git a/libraries/tools/kotlin-stdlib-docs/build-docs.xml b/libraries/tools/kotlin-stdlib-docs/build-docs.xml index 9d07ad4980b..004b84269f0 100644 --- a/libraries/tools/kotlin-stdlib-docs/build-docs.xml +++ b/libraries/tools/kotlin-stdlib-docs/build-docs.xml @@ -228,13 +228,7 @@ - - - - - -