Skip to content

Commit 5fa7705

Browse files
committed
refactor: improve import specificity and simplify checks for StructuralKind handling
1 parent d15f5f0 commit 5fa7705

File tree

10 files changed

+37
-16
lines changed

10 files changed

+37
-16
lines changed

src/commonMain/kotlin/com/eignex/kencode/Base85.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.eignex.kencode
22

3-
val ASCII85 =
3+
const val ASCII85 =
44
"!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstu"
55

66
/**
@@ -68,7 +68,7 @@ open class Base85(private val alphabet: CharArray) : ByteEncoding {
6868

6969
val fullGroups = len / 5
7070
val rem = len % 5
71-
if (rem == 1) throw IllegalArgumentException("Invalid ASCII85 length")
71+
require(rem != 1) { "Invalid ASCII85 length" }
7272

7373
val extraBytes = if (rem == 0) 0 else (rem - 1)
7474
val out = ByteArray(fullGroups * 4 + extraBytes)

src/commonMain/kotlin/com/eignex/kencode/PackedContext.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.eignex.kencode
22

33
import kotlinx.serialization.ExperimentalSerializationApi
4-
import kotlinx.serialization.descriptors.*
4+
import kotlinx.serialization.descriptors.PrimitiveKind
5+
import kotlinx.serialization.descriptors.SerialDescriptor
6+
import kotlinx.serialization.descriptors.StructureKind
57

68
/**
79
* Schema-derived boolean/nullable metadata for a single class descriptor.

src/commonMain/kotlin/com/eignex/kencode/PackedDecoder.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ package com.eignex.kencode
22

33
import kotlinx.serialization.DeserializationStrategy
44
import kotlinx.serialization.ExperimentalSerializationApi
5-
import kotlinx.serialization.descriptors.*
5+
import kotlinx.serialization.descriptors.PolymorphicKind
6+
import kotlinx.serialization.descriptors.PrimitiveKind
7+
import kotlinx.serialization.descriptors.SerialDescriptor
8+
import kotlinx.serialization.descriptors.StructureKind
69
import kotlinx.serialization.encoding.CompositeDecoder
710
import kotlinx.serialization.encoding.Decoder
811
import kotlinx.serialization.modules.EmptySerializersModule
@@ -334,8 +337,9 @@ class PackedDecoder internal constructor(
334337

335338
val kind = deserializer.descriptor.kind
336339
val isInline = deserializer.descriptor.isInline
340+
val isStructural = kind is StructureKind || kind is PolymorphicKind
337341

338-
if (isNullableCollection && deserializer.descriptor.isNullable && !isInline && (kind is StructureKind || kind is PolymorphicKind)) {
342+
if (isNullableCollection && deserializer.descriptor.isNullable && !isInline && isStructural) {
339343
val isNotNull = decodeNotNullMark()
340344
if (!isNotNull) {
341345
currentIndex = -1
@@ -351,7 +355,7 @@ class PackedDecoder internal constructor(
351355
return value
352356
}
353357

354-
if (!isInline && (kind is StructureKind || kind is PolymorphicKind)) {
358+
if (!isInline && isStructural) {
355359
// Share the HeaderContext only when the current decoder is in merged mode
356360
// and the child is a non-nullable, non-inline CLASS/OBJECT in a non-collection context.
357361
val shouldShareCtx = shouldMergeChildCtx(

src/commonMain/kotlin/com/eignex/kencode/PackedEncoder.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package com.eignex.kencode
22

33
import kotlinx.serialization.ExperimentalSerializationApi
44
import kotlinx.serialization.SerializationStrategy
5-
import kotlinx.serialization.descriptors.*
5+
import kotlinx.serialization.descriptors.PrimitiveKind
6+
import kotlinx.serialization.descriptors.SerialDescriptor
7+
import kotlinx.serialization.descriptors.StructureKind
68
import kotlinx.serialization.encoding.CompositeEncoder
79
import kotlinx.serialization.encoding.Encoder
810
import kotlinx.serialization.modules.EmptySerializersModule

src/commonMain/kotlin/com/eignex/kencode/PackedFormat.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.eignex.kencode
22

3-
import kotlinx.serialization.*
3+
import kotlinx.serialization.BinaryFormat
4+
import kotlinx.serialization.DeserializationStrategy
5+
import kotlinx.serialization.ExperimentalSerializationApi
6+
import kotlinx.serialization.SerializationStrategy
47
import kotlinx.serialization.modules.EmptySerializersModule
58
import kotlinx.serialization.modules.SerializersModule
69

src/commonTest/kotlin/com/eignex/kencode/CrcTest.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.eignex.kencode
22

3-
import kotlin.test.*
3+
import kotlin.test.Test
4+
import kotlin.test.assertContentEquals
5+
import kotlin.test.assertEquals
46

57
class CrcTest {
68

src/commonTest/kotlin/com/eignex/kencode/PackedFormatTest.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@
33
package com.eignex.kencode
44

55
import kotlinx.serialization.*
6-
import kotlinx.serialization.builtins.*
6+
import kotlinx.serialization.builtins.ListSerializer
7+
import kotlinx.serialization.builtins.nullable
8+
import kotlinx.serialization.builtins.serializer
79
import kotlinx.serialization.protobuf.ProtoIntegerType
810
import kotlinx.serialization.protobuf.ProtoType
9-
import kotlin.test.*
11+
import kotlin.test.Test
12+
import kotlin.test.assertEquals
13+
import kotlin.test.assertFailsWith
1014
import kotlin.time.Duration.Companion.milliseconds
1115
import kotlin.time.Duration.Companion.minutes
1216
import kotlin.time.Duration.Companion.seconds

src/commonTest/kotlin/com/eignex/kencode/PackedUtilsTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.eignex.kencode
22

33
import kotlin.test.*
44

5-
class BitPackingTest {
5+
class PackedUtilsTest {
66

77
@Test
88
fun `packFlags simple bit pattern`() {

src/commonTest/kotlin/com/eignex/kencode/TestClasses.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ package com.eignex.kencode
44

55
import kotlinx.serialization.Serializable
66
import kotlin.jvm.JvmInline
7-
import kotlin.time.*
7+
import kotlin.time.Duration
8+
import kotlin.time.ExperimentalTime
9+
import kotlin.time.Instant
810

911
@Serializable
1012
data class SimpleIntsAndBooleans(

src/jvmTest/kotlin/com/eignex/kencode/Examples.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.eignex.kencode
22

3-
import kotlinx.serialization.*
3+
import kotlinx.serialization.ExperimentalSerializationApi
4+
import kotlinx.serialization.Serializable
5+
import kotlinx.serialization.decodeFromString
6+
import kotlinx.serialization.encodeToString
47
import kotlinx.serialization.protobuf.ProtoBuf
58
import org.bouncycastle.jce.provider.BouncyCastleProvider
69
import java.security.SecureRandom
@@ -58,8 +61,7 @@ class Examples {
5861
// This encodes the object into the string:
5962
// 02waa1a8
6063

61-
val decodedState =
62-
EncodedFormat.decodeFromString<JobState>(encodedState)
64+
EncodedFormat.decodeFromString<JobState>(encodedState)
6365
}
6466

6567
@Test

0 commit comments

Comments
 (0)