diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/report/KotlinBuildReporterHandler.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/report/KotlinBuildReporterHandler.kt index a3b3a948cb4..f25fa28eaf5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/report/KotlinBuildReporterHandler.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/report/KotlinBuildReporterHandler.kt @@ -6,8 +6,8 @@ package org.jetbrains.kotlin.gradle.report import org.gradle.api.invocation.Gradle +import org.jetbrains.kotlin.gradle.utils.appendLine import java.io.File -import java.util.* import kotlin.math.max class KotlinBuildReporterHandler { @@ -38,25 +38,25 @@ class KotlinBuildReporterHandler { } return buildString { - appendln("Gradle start parameters:") + appendLine("Gradle start parameters:") startParams.forEach { - appendln(" $it") + appendLine(" $it") } if (failure != null) { - appendln("Build failed: ${failure}") + appendLine("Build failed: ${failure}") } - appendln() + appendLine() } } internal fun taskOverview(kotlinTaskTimeNs: Map, allTasksTimeNs: Long): String { - if (kotlinTaskTimeNs.isEmpty()) return buildString { appendln("No Kotlin task was run") } + if (kotlinTaskTimeNs.isEmpty()) return buildString { appendLine("No Kotlin task was run") } val sb = StringBuilder() val kotlinTotalTimeNs = kotlinTaskTimeNs.values.sum() val ktTaskPercent = (kotlinTotalTimeNs.toDouble() / allTasksTimeNs * 100).asString(1) - sb.appendln("Total time for Kotlin tasks: ${formatTime(kotlinTotalTimeNs)} ($ktTaskPercent % of all tasks time)") + sb.appendLine("Total time for Kotlin tasks: ${formatTime(kotlinTotalTimeNs)} ($ktTaskPercent % of all tasks time)") val table = TextTable("Time", "% of Kotlin time", "Task") kotlinTaskTimeNs.entries @@ -66,7 +66,7 @@ class KotlinBuildReporterHandler { table.addRow(formatTime(timeNs), "$percent %", taskPath) } table.printTo(sb) - sb.appendln() + sb.appendLine() return sb.toString() } @@ -90,7 +90,7 @@ class KotlinBuildReporterHandler { fun printTo(sb: StringBuilder) { for (row in rows) { - sb.appendln() + sb.appendLine() for ((i, col) in row.withIndex()) { if (i > 0) sb.append("|") @@ -107,4 +107,4 @@ internal fun formatTime(ns: Long): String { } internal fun Double.asString(decPoints: Int): String = - String.format("%.${decPoints}f", this) \ No newline at end of file + String.format("%.${decPoints}f", this) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/internal/NodeJsStackTraceParser.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/internal/NodeJsStackTraceParser.kt index 55c0999d7ef..65ece29a95d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/internal/NodeJsStackTraceParser.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/internal/NodeJsStackTraceParser.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.gradle.targets.js.internal import org.jetbrains.kotlin.gradle.internal.testing.ParsedStackTrace +import org.jetbrains.kotlin.gradle.utils.appendLine data class NodeJsStackTrace( val message: String?, @@ -118,7 +119,7 @@ fun parseNodeJsStackTrace(stackTrace: String): NodeJsStackTrace { ) } else { if (firstLines) { - message.appendln(it) + message.appendLine(it) } } } @@ -137,4 +138,4 @@ private fun filterMethodName(name: String): String = val suffix = name.substringAfterLast("_") if (suffix.endsWith("$") || suffix.toIntOrNull() != null) name.substringBeforeLast("_") else name - } else name \ No newline at end of file + } else name diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt index af02239b945..5fd9090fd9d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt @@ -35,6 +35,7 @@ import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion.Companion.choose import org.jetbrains.kotlin.gradle.tasks.KotlinTest import org.jetbrains.kotlin.gradle.testing.internal.reportsDir +import org.jetbrains.kotlin.gradle.utils.appendLine import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable import org.jetbrains.kotlin.gradle.utils.property import org.slf4j.Logger @@ -113,7 +114,7 @@ class KotlinKarma( // Not all log events goes through this appender // For example Error in config file //language=ES6 - it.appendln( + it.appendLine( """ config.plugins = config.plugins || []; config.plugins.push('kotlin-test-js-runner/karma-kotlin-reporter.js'); @@ -225,13 +226,13 @@ class KotlinKarma( addPreprocessor("webpack") confJsWriters.add { - it.appendln() - it.appendln("// webpack config") - it.appendln("function createWebpackConfig() {") + it.appendLine() + it.appendLine("// webpack config") + it.appendLine("function createWebpackConfig() {") webpackConfig.appendTo(it) //language=ES6 - it.appendln( + it.appendLine( """ // noinspection JSUnnecessarySemicolon ;(function(config) { @@ -252,11 +253,11 @@ class KotlinKarma( """.trimIndent() ) - it.appendln(" return config;") - it.appendln("}") - it.appendln() - it.appendln("config.set({webpack: createWebpackConfig()});") - it.appendln() + it.appendLine(" return config;") + it.appendLine("}") + it.appendLine() + it.appendLine("config.set({webpack: createWebpackConfig()});") + it.appendLine() } } @@ -351,7 +352,7 @@ class KotlinKarma( confJsWriters.add { //language=ES6 - it.appendln( + it.appendLine( """ if (!config.plugins) { config.plugins = config.plugins || []; @@ -568,11 +569,11 @@ class KotlinKarma( return } - appendln() + appendLine() appendConfigsFromDir(configDirectory) - appendln() + appendLine() } } private val KARMA_MESSAGE = "^.*\\d{2} \\d{2} \\d{4,} \\d{2}:\\d{2}:\\d{2}.\\d{3}:(ERROR|WARN|INFO|DEBUG|LOG) \\[.*]: ([\\w\\W]*)\$" - .toRegex() \ No newline at end of file + .toRegex() diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/utils.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/utils.kt index cf7dd03e430..cc7becdaa00 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/utils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/utils.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.gradle.targets.js +import org.jetbrains.kotlin.gradle.utils.appendLine import java.io.File fun Appendable.appendConfigsFromDir(confDir: File) { @@ -15,10 +16,10 @@ fun Appendable.appendConfigsFromDir(confDir: File) { .filter { it.extension == "js" } .sortedBy { it.name } .forEach { - appendln("// ${it.name}") + appendLine("// ${it.name}") append(it.readText()) - appendln() - appendln() + appendLine() + appendLine() } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackConfig.kt index 455f8db3dd3..dfe148b4982 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackConfig.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackCssMode.EXTRA import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackCssMode.IMPORT import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackCssMode.INLINE import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion.Companion.choose +import org.jetbrains.kotlin.gradle.utils.appendLine import java.io.File import java.io.Serializable import java.io.StringWriter @@ -171,7 +172,7 @@ data class KotlinWebpackConfig( fun appendTo(target: Appendable) { with(target) { //language=JavaScript 1.8 - appendln( + appendLine( """ let config = { mode: '${mode.code}', @@ -202,7 +203,7 @@ data class KotlinWebpackConfig( if (export) { //language=JavaScript 1.8 - appendln("module.exports = config") + appendLine("module.exports = config") } } } @@ -213,7 +214,7 @@ data class KotlinWebpackConfig( val filePath = reportEvaluatedConfigFile!!.canonicalPath.jsQuoted() //language=JavaScript 1.8 - appendln( + appendLine( """ // save evaluated config file ;(function(config) { @@ -230,9 +231,9 @@ data class KotlinWebpackConfig( private fun Appendable.appendFromConfigDir() { if (configDirectory == null || !configDirectory!!.isDirectory) return - appendln() + appendLine() appendConfigsFromDir(configDirectory!!) - appendln() + appendLine() } private fun Appendable.appendReport() { @@ -250,7 +251,7 @@ data class KotlinWebpackConfig( ) //language=JavaScript 1.8 - appendln( + appendLine( """ // save webpack-bundle-analyzer report var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; @@ -258,22 +259,22 @@ data class KotlinWebpackConfig( """.trimIndent() ) - appendln() + appendLine() } private fun Appendable.appendDevServer() { if (devServer == null) return - appendln("// dev server") - appendln("config.devServer = ${json(devServer!!)};") - appendln() + appendLine("// dev server") + appendLine("config.devServer = ${json(devServer!!)};") + appendLine() } private fun Appendable.appendSourceMaps() { if (!sourceMaps) return //language=JavaScript 1.8 - appendln( + appendLine( """ // source maps config.module.rules.push({ @@ -309,7 +310,7 @@ data class KotlinWebpackConfig( val multiEntryOutput = "${outputFileName!!.removeSuffix(".js")}-[name].js" //language=JavaScript 1.8 - appendln( + appendLine( """ // entry config.entry = { @@ -336,7 +337,7 @@ data class KotlinWebpackConfig( if (!cssSupport.enabled || cssSupport.rules.isEmpty()) return - appendln( + appendLine( """ // css settings ;(function(config) { @@ -372,12 +373,12 @@ data class KotlinWebpackConfig( """.trimMargin() cssSupport.rules.forEach { rule -> - appendln( + appendLine( """ | ;(function(config) { """.trimMargin() ) - appendln( + appendLine( """ | const use = [ | { @@ -389,9 +390,9 @@ data class KotlinWebpackConfig( ) when (rule.mode) { - EXTRACT -> appendln(extractedCss) - INLINE -> appendln(inlinedCss) - IMPORT -> appendln(importedCss) + EXTRACT -> appendLine(extractedCss) + INLINE -> appendLine(inlinedCss) + IMPORT -> appendLine(importedCss) else -> cssError() } @@ -407,7 +408,7 @@ data class KotlinWebpackConfig( } else null } - appendln( + appendLine( """ | config.module.rules.push({ | test: /\.css${'$'}/, @@ -419,7 +420,7 @@ data class KotlinWebpackConfig( """.trimMargin() ) - appendln( + appendLine( """ | })(config); @@ -427,7 +428,7 @@ data class KotlinWebpackConfig( ) } - appendln( + appendLine( """ })(config); @@ -437,7 +438,7 @@ data class KotlinWebpackConfig( private fun Appendable.appendErrorPlugin() { //language=ES6 - appendln( + appendLine( """ // noinspection JSUnnecessarySemicolon ;(function(config) { @@ -457,7 +458,7 @@ data class KotlinWebpackConfig( if (!resolveFromModulesFirst || entry == null || entry!!.parent == null) return //language=JavaScript 1.8 - appendln( + appendLine( """ // resolve modules config.resolve.modules.unshift(${entry!!.parent.jsQuoted()}) @@ -470,7 +471,7 @@ data class KotlinWebpackConfig( if (!progressReporter) return //language=ES6 - appendln( + appendLine( """ // Report progress to console // noinspection JSUnnecessarySemicolon diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/CompilationFreeArgsValidator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/CompilationFreeArgsValidator.kt index e31dcefb71b..e6c725581d1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/CompilationFreeArgsValidator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/CompilationFreeArgsValidator.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.targets.native import org.gradle.api.Project import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget +import org.jetbrains.kotlin.gradle.utils.appendLine internal object CompilationFreeArgsValidator : AggregateReporter() { @@ -66,24 +67,24 @@ internal object CompilationFreeArgsValidator : AggregateReporter() { } val message = buildString { - appendln() - appendln("The following free compiler arguments must be specified for a binary instead of a compilation:") + appendLine() + appendLine("The following free compiler arguments must be specified for a binary instead of a compilation:") incorrectArgs.forEach { (project, reports) -> - appendln("* In project '${project.path}':".withIndent(1)) + appendLine("* In project '${project.path}':".withIndent(1)) val groupedReports = reports .groupBy { it.target } .toSortedMap(compareBy { it.name }) groupedReports.forEach { (target, reports) -> - appendln("* In target '${target.name}':".withIndent(2)) + appendLine("* In target '${target.name}':".withIndent(2)) reports.forEach { - appendln( + appendLine( "* Compilation: '${it.compilation.name}', arguments: [${it.incorrectArgs.joinToString()}]".withIndent(3) ) } } } - appendln() - appendln( + appendLine() + appendLine( """ Please move them into final binary declarations. E.g. binaries.executable { freeCompilerArgs += "..." } See more about final binaries: https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#building-final-native-binaries. diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/DisabledNativeTargetsReporter.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/DisabledNativeTargetsReporter.kt index a45155a440f..b7a56abb424 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/DisabledNativeTargetsReporter.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/DisabledNativeTargetsReporter.kt @@ -9,6 +9,7 @@ import org.gradle.api.Project import org.gradle.api.plugins.ExtraPropertiesExtension import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget +import org.jetbrains.kotlin.gradle.utils.appendLine import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.KonanTarget @@ -58,10 +59,10 @@ internal object DisabledNativeTargetsReporter : AggregateReporter() { .toSortedMap(compareBy { it.path }) project.logger.warn(buildString { - appendln("\n$WARNING_PREFIX${HostManager.host} machine and are disabled:") + appendLine("\n$WARNING_PREFIX${HostManager.host} machine and are disabled:") disabledTargetGroups.forEach { (targetProject, targetsBySupportedHosts) -> - appendln( + appendLine( " * In project '${targetProject.path}':" ) targetsBySupportedHosts.forEach { (supportedHosts, disabledTargets) -> @@ -72,10 +73,10 @@ internal object DisabledNativeTargetsReporter : AggregateReporter() { 1 -> "a ${supportedHosts.single()} host" else -> "one of the hosts: ${supportedHosts.joinToString(", ")}" } - appendln(" (can be built with $supportedHostsString)") + appendLine(" (can be built with $supportedHostsString)") } } - appendln("To hide this message, add '$DISABLE_WARNING_PROPERTY_NAME=true' to the Gradle properties.") + appendLine("To hide this message, add '$DISABLE_WARNING_PROPERTY_NAME=true' to the Gradle properties.") }) } -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativeStackTraceParser.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativeStackTraceParser.kt index a883782bd2a..57480037634 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativeStackTraceParser.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativeStackTraceParser.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.gradle.targets.native.internal import org.jetbrains.kotlin.gradle.internal.testing.ParsedStackTrace +import org.jetbrains.kotlin.gradle.utils.appendLine data class KotlinNativeStackTrace( val message: String?, @@ -126,7 +127,7 @@ fun parseKotlinNativeStackTrace(stackTrace: String): KotlinNativeStackTrace { } } else { if (firstLines) { - message.appendln(it) + message.appendLine(it) } } } @@ -135,4 +136,4 @@ fun parseKotlinNativeStackTrace(stackTrace: String): KotlinNativeStackTrace { message.toString().trim().let { if (it.isEmpty()) null else it }, if (stack.isEmpty()) null else stack ) -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/FatFrameworkTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/FatFrameworkTask.kt index 7e106fe9338..4accb564ab7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/FatFrameworkTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/FatFrameworkTask.kt @@ -12,6 +12,7 @@ import org.gradle.api.tasks.* import org.jetbrains.kotlin.gradle.plugin.cocoapods.asValidFrameworkName import org.jetbrains.kotlin.gradle.plugin.mpp.Framework import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget +import org.jetbrains.kotlin.gradle.utils.appendLine import org.jetbrains.kotlin.konan.target.Architecture import org.jetbrains.kotlin.konan.target.Family import org.jetbrains.kotlin.konan.target.KonanTarget.* @@ -234,13 +235,13 @@ open class FatFrameworkTask : DefaultTask() { headerContents.toList().forEachIndexed { i, (arch, content) -> val macro = arch.clangMacro if (i == 0) { - writer.appendln("#if defined($macro)\n") + writer.appendLine("#if defined($macro)\n") } else { - writer.appendln("#elif defined($macro)\n") + writer.appendLine("#elif defined($macro)\n") } - writer.appendln(content) + writer.appendLine(content) } - writer.appendln( + writer.appendLine( """ #else #error Unsupported platform diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/testing/internal/KotlinTestReport.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/testing/internal/KotlinTestReport.kt index feb5d5e71bf..4057b0a57f7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/testing/internal/KotlinTestReport.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/testing/internal/KotlinTestReport.kt @@ -16,6 +16,7 @@ import org.gradle.api.tasks.testing.* import org.jetbrains.kotlin.gradle.internal.testing.KotlinTestRunnerListener import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.tasks.KotlinTest +import org.jetbrains.kotlin.gradle.utils.appendLine import java.io.File import java.net.URI @@ -171,7 +172,7 @@ open class KotlinTestReport : TestReport() { if (taskFailures.isNotEmpty()) { val allErrors = mutableListOf() val msg = buildString { - appendln("Failed to execute all tests:") + appendLine("Failed to execute all tests:") taskFailures.groupBy { it.first }.forEach { (path, errors) -> append(path) append(": ") @@ -179,7 +180,7 @@ open class KotlinTestReport : TestReport() { errors.forEach { (_, error) -> allErrors.add(error) append(error.message) - if (first) first = false else appendln() + if (first) first = false else appendLine() } } @@ -189,7 +190,7 @@ open class KotlinTestReport : TestReport() { logger.warn(getFailingTestsMessage()) } else { allErrors.add(Error(failedTestsMessage)) - appendln("Also: $failedTestsMessage") + appendLine("Also: $failedTestsMessage") } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/stringUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/stringUtils.kt index 01e0c42e2b9..f40afe7dbf1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/stringUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/stringUtils.kt @@ -40,4 +40,11 @@ internal fun String.asValidTaskName() = replace(invalidTaskNameCharacters, "_") private val ANSI_COLOR_REGEX = "\\x1b\\[[0-9;]*m".toRegex() internal fun String.clearAnsiColor() = - replace(ANSI_COLOR_REGEX, "") \ No newline at end of file + replace(ANSI_COLOR_REGEX, "") + +// Copy of stdlib's appendLine which is only available since 1.4. Can be removed as soon as this code is compiled with API >= 1.4. +internal fun Appendable.appendLine(value: Any?): Appendable = + append(value.toString()).appendLine() + +internal fun Appendable.appendLine(): Appendable = + append('\n')