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 <Ilya.Gorbunov@jetbrains.com>
This commit is contained in:
Ilya Gorbunov
2022-06-23 03:49:30 +00:00
committed by Space
parent 3af0e57406
commit 1cfc6a8fca
15 changed files with 48 additions and 108 deletions
@@ -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<DirectivesContainer> =
@@ -49,12 +49,13 @@ class IrInterpreterHelpersSourceFilesProvider(testServices: TestServices) : Addi
private fun getTestFilesForEachDirectory(vararg directories: String): List<TestFile> {
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()
}
}
@@ -20,7 +20,8 @@ object BuiltinsTestUtils {
val files = KotlinTestUtils.loadToJetFiles(
environment, ContainerUtil.concat<File>(
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
+19 -5
View File
@@ -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<File>) =
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<File>
)
}
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<Jar> {
dependsOn(serialize)
+4 -4
View File
@@ -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)
-7
View File
@@ -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) }
@@ -56,6 +56,17 @@ val commonMainSources by task<Sync> {
into("$buildDir/commonMainSources")
}
val commonMainCollectionSources by task<Sync> {
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<Sync> {
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 }))
-5
View File
@@ -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
@@ -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<Byte> {
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<Char> {
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<Short> {
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<Int> {
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<Long> {
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<Float> {
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<Double> {
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<Boolean> {
override final fun next() = nextBoolean()
/** Returns the next value in the sequence without boxing. */
public abstract fun nextBoolean(): Boolean
}
@@ -228,13 +228,7 @@
<sourceroot path="${kotlin_builtins_dir}/src/kotlin/annotation/Annotations.kt"/>
<sourceroot path="${kotlin_builtins_dir}/src/kotlin/Function.kt"/>
<sourceroot path="${kotlin_builtins_dir}/src/kotlin/Iterators.kt"/>
<sourceroot path="${kotlin_builtins_dir}/src/kotlin/Range.kt"/>
<sourceroot path="${kotlin_builtins_dir}/src/kotlin/Progressions.kt"/>
<sourceroot path="${kotlin_builtins_dir}/src/kotlin/ProgressionIterators.kt"/>
<sourceroot path="${kotlin_builtins_dir}/src/kotlin/Ranges.kt"/>
<sourceroot path="${kotlin_builtins_dir}/src/kotlin/internal/InternalAnnotations.kt"/>
<sourceroot path="${kotlin_builtins_dir}/src/kotlin/internal/progressionUtil.kt"/>
<sourceroot path="${kotlin_builtins_dir}/src/kotlin/Unit.kt"/>
<!-- TODO Docs? -->