From 8ef7f731640cad5b9b6075fdbc51d7b367c91d8c Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 28 Feb 2019 20:37:33 +0100 Subject: [PATCH] Fix incorrect enum comparison in kotlinx-metadata Previously, we compared instances of different enums and thus the conditions were always true. This did not affect visible behavior of the program except the fact that we've been writing default field values (kind and level) for version requirements to protobuf where they could've been omitted --- .../src/kotlinx/metadata/impl/writers.kt | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/libraries/kotlinx-metadata/src/kotlinx/metadata/impl/writers.kt b/libraries/kotlinx-metadata/src/kotlinx/metadata/impl/writers.kt index 71e026c6e92..81baadf2f0c 100644 --- a/libraries/kotlinx-metadata/src/kotlinx/metadata/impl/writers.kt +++ b/libraries/kotlinx-metadata/src/kotlinx/metadata/impl/writers.kt @@ -286,19 +286,21 @@ private fun writeVersionRequirement( override fun visit(kind: KmVersionRequirementVersionKind, level: KmVersionRequirementLevel, errorCode: Int?, message: String?) { t = ProtoBuf.VersionRequirement.newBuilder().apply { - if (kind != defaultInstanceForType.versionKind) { - this.versionKind = when (kind) { - KmVersionRequirementVersionKind.LANGUAGE_VERSION -> ProtoBuf.VersionRequirement.VersionKind.LANGUAGE_VERSION - KmVersionRequirementVersionKind.COMPILER_VERSION -> ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION - KmVersionRequirementVersionKind.API_VERSION -> ProtoBuf.VersionRequirement.VersionKind.API_VERSION - } + val versionKind = when (kind) { + KmVersionRequirementVersionKind.LANGUAGE_VERSION -> ProtoBuf.VersionRequirement.VersionKind.LANGUAGE_VERSION + KmVersionRequirementVersionKind.COMPILER_VERSION -> ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION + KmVersionRequirementVersionKind.API_VERSION -> ProtoBuf.VersionRequirement.VersionKind.API_VERSION } - if (level != defaultInstanceForType.level) { - this.level = when (level) { - KmVersionRequirementLevel.WARNING -> ProtoBuf.VersionRequirement.Level.WARNING - KmVersionRequirementLevel.ERROR -> ProtoBuf.VersionRequirement.Level.ERROR - KmVersionRequirementLevel.HIDDEN -> ProtoBuf.VersionRequirement.Level.HIDDEN - } + if (versionKind != defaultInstanceForType.versionKind) { + this.versionKind = versionKind + } + val requirementLevel = when (level) { + KmVersionRequirementLevel.WARNING -> ProtoBuf.VersionRequirement.Level.WARNING + KmVersionRequirementLevel.ERROR -> ProtoBuf.VersionRequirement.Level.ERROR + KmVersionRequirementLevel.HIDDEN -> ProtoBuf.VersionRequirement.Level.HIDDEN + } + if (requirementLevel != defaultInstanceForType.level) { + this.level = requirementLevel } if (errorCode != null) { this.errorCode = errorCode