All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlin.build.report.ICReporterBase.kt Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
/*
 * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.build.report

import java.io.File

abstract class ICReporterBase(private val pathsBase: File? = null) : ICReporter {
    override fun reportMarkDirtyClass(affectedFiles: Iterable, classFqName: String) {
        reportMarkDirty(affectedFiles, "dirty class $classFqName")
    }

    override fun reportMarkDirtyMember(affectedFiles: Iterable, scope: String, name: String) {
        reportMarkDirty(affectedFiles, "dirty member $scope#$name")
    }

    override fun reportMarkDirty(affectedFiles: Iterable, reason: String) {
        affectedFiles.forEach { file ->
            debug { "${pathsAsString(file)} is marked dirty: $reason" }
        }
    }

    protected fun relativizeIfPossible(files: Iterable): List =
        files.map { it.relativeOrCanonical() }

    protected fun pathsAsString(files: Iterable): String =
        relativizeIfPossible(files).map { it.path }.sorted().joinToString()

    protected fun pathsAsString(vararg files: File): String =
        pathsAsString(files.toList())

    protected fun File.relativeOrCanonical(): File =
        pathsBase?.let { relativeToOrNull(it) } ?: canonicalFile
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy