[KLIB tool] Don't print stack trace on trivial errors
1. Don't need to print stack trace on trivial errors such as invalid CLI argument or incompatible library version. 2. Re-organization of `logWarning()` & `logError()` calls inside the klib tool.
This commit is contained in:
committed by
Space Team
parent
8ca62ad656
commit
5961710db3
@@ -116,26 +116,31 @@ class Command(args: Array<String>) {
|
|||||||
private fun Command.parseSignatureVersion(): KotlinIrSignatureVersion? {
|
private fun Command.parseSignatureVersion(): KotlinIrSignatureVersion? {
|
||||||
val rawSignatureVersion = options["-signature-version"]?.last() ?: return null
|
val rawSignatureVersion = options["-signature-version"]?.last() ?: return null
|
||||||
val signatureVersion = rawSignatureVersion.toIntOrNull()?.let(::KotlinIrSignatureVersion)
|
val signatureVersion = rawSignatureVersion.toIntOrNull()?.let(::KotlinIrSignatureVersion)
|
||||||
?: error("Invalid signature version: $rawSignatureVersion")
|
?: logError("Invalid signature version: $rawSignatureVersion")
|
||||||
|
|
||||||
if (signatureVersion !in KotlinIrSignatureVersion.CURRENTLY_SUPPORTED_VERSIONS)
|
if (signatureVersion !in KotlinIrSignatureVersion.CURRENTLY_SUPPORTED_VERSIONS)
|
||||||
error("Unsupported signature version: ${signatureVersion.number}")
|
logError("Unsupported signature version: ${signatureVersion.number}")
|
||||||
|
|
||||||
return signatureVersion
|
return signatureVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
fun warn(text: String) {
|
internal fun logWarning(text: String) {
|
||||||
println("warning: $text")
|
println("warning: $text")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun error(text: String): Nothing {
|
internal fun logError(text: String, withStacktrace: Boolean = false): Nothing {
|
||||||
kotlin.error("error: $text")
|
if (withStacktrace)
|
||||||
|
error("error: $text")
|
||||||
|
else {
|
||||||
|
System.err.println("error: $text")
|
||||||
|
exitProcess(1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object KlibToolLogger : Logger, IrMessageLogger {
|
object KlibToolLogger : Logger, IrMessageLogger {
|
||||||
override fun warning(message: String) = warn(message)
|
override fun warning(message: String) = logWarning(message)
|
||||||
override fun error(message: String) = warn(message)
|
override fun error(message: String) = logWarning(message)
|
||||||
override fun fatal(message: String) = org.jetbrains.kotlin.cli.klib.error(message)
|
override fun fatal(message: String) = logError(message, withStacktrace = true)
|
||||||
override fun log(message: String) = println(message)
|
override fun log(message: String) = println(message)
|
||||||
override fun report(severity: IrMessageLogger.Severity, message: String, location: IrMessageLogger.Location?) {
|
override fun report(severity: IrMessageLogger.Severity, message: String, location: IrMessageLogger.Location?) {
|
||||||
when (severity) {
|
when (severity) {
|
||||||
@@ -187,7 +192,7 @@ class Library(val libraryNameOrPath: String, val requestedRepository: String?) {
|
|||||||
|
|
||||||
fun install() {
|
fun install() {
|
||||||
if (!repository.exists) {
|
if (!repository.exists) {
|
||||||
warn("Repository does not exist: $repository. Creating.")
|
logWarning("Repository does not exist: $repository. Creating...")
|
||||||
repository.mkdirs()
|
repository.mkdirs()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,11 +207,11 @@ class Library(val libraryNameOrPath: String, val requestedRepository: String?) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun remove(blind: Boolean = false) {
|
fun remove(blind: Boolean = false) {
|
||||||
if (!repository.exists) error("Repository does not exist: $repository")
|
if (!repository.exists) logError("Repository does not exist: $repository")
|
||||||
|
|
||||||
val library = try {
|
val library = try {
|
||||||
val library = libraryInRepo(repository, libraryNameOrPath)
|
val library = libraryInRepo(repository, libraryNameOrPath)
|
||||||
if (blind) warn("Removing The previously installed $libraryNameOrPath from $repository.")
|
if (blind) logWarning("Removing The previously installed $libraryNameOrPath from $repository")
|
||||||
library
|
library
|
||||||
|
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
@@ -232,7 +237,11 @@ class Library(val libraryNameOrPath: String, val requestedRepository: String?) {
|
|||||||
get() = TODO("Not needed for ir dumping")
|
get() = TODO("Not needed for ir dumping")
|
||||||
|
|
||||||
override fun createModuleDeserializer(moduleDescriptor: ModuleDescriptor, klib: KotlinLibrary?, strategyResolver: (String) -> DeserializationStrategy): IrModuleDeserializer {
|
override fun createModuleDeserializer(moduleDescriptor: ModuleDescriptor, klib: KotlinLibrary?, strategyResolver: (String) -> DeserializationStrategy): IrModuleDeserializer {
|
||||||
return KlibToolModuleDeserializer(moduleDescriptor, klib ?: error("Expecting kotlin library for $moduleDescriptor"), strategyResolver)
|
return KlibToolModuleDeserializer(
|
||||||
|
module = moduleDescriptor,
|
||||||
|
klib = klib ?: error("Expecting kotlin library for $moduleDescriptor"),
|
||||||
|
strategyResolver = strategyResolver
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isBuiltInModule(moduleDescriptor: ModuleDescriptor): Boolean {
|
override fun isBuiltInModule(moduleDescriptor: ModuleDescriptor): Boolean {
|
||||||
@@ -285,7 +294,7 @@ class Library(val libraryNameOrPath: String, val requestedRepository: String?) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun signatures(output: Appendable) {
|
fun signatures(output: Appendable) {
|
||||||
output.append("WARNING: \"signatures\" is deprecated. Please, use \"dump-ir-signatures\" instead.\n\n")
|
logWarning("\"signatures\" is deprecated. Please, use \"dump-ir-signatures\" instead\n\n")
|
||||||
|
|
||||||
val module = loadModule()
|
val module = loadModule()
|
||||||
val printer = SignaturePrinter(output, DefaultKlibSignatureRenderer())
|
val printer = SignaturePrinter(output, DefaultKlibSignatureRenderer())
|
||||||
@@ -303,13 +312,13 @@ class Library(val libraryNameOrPath: String, val requestedRepository: String?) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun checkLibraryHasIr(library: KotlinLibrary) {
|
private fun checkLibraryHasIr(library: KotlinLibrary) {
|
||||||
if (!library.hasIr) error("Library ${library.libraryFile} is an IR-less library.")
|
if (!library.hasIr) logError("Library ${library.libraryFile} is an IR-less library")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KotlinIrSignatureVersion.checkSupportedInLibrary(library: KotlinLibrary) {
|
private fun KotlinIrSignatureVersion.checkSupportedInLibrary(library: KotlinLibrary) {
|
||||||
val supportedSignatureVersions = library.versions.irSignatureVersions
|
val supportedSignatureVersions = library.versions.irSignatureVersions
|
||||||
if (this !in supportedSignatureVersions)
|
if (this !in supportedSignatureVersions)
|
||||||
error("Signature version ${this.number} is not supported in library ${library.libraryFile}." +
|
logError("Signature version ${this.number} is not supported in library ${library.libraryFile}." +
|
||||||
" Supported versions: ${supportedSignatureVersions.joinToString { it.number.toString() }}")
|
" Supported versions: ${supportedSignatureVersions.joinToString { it.number.toString() }}")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -369,6 +378,6 @@ fun main(args: Array<String>) {
|
|||||||
"info" -> library.info()
|
"info" -> library.info()
|
||||||
"install" -> library.install()
|
"install" -> library.install()
|
||||||
"remove" -> library.remove()
|
"remove" -> library.remove()
|
||||||
else -> error("Unknown command ${command.verb}.")
|
else -> logError("Unknown command: ${command.verb}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user