Skip to content

Commit 699ab05

Browse files
committed
🐛 fix target handling in utility methods for improved type safety and clarity
1 parent 46f8140 commit 699ab05

File tree

1 file changed

+17
-9
lines changed
  • qs-kotlin/src/main/kotlin/io/github/techouse/qskotlin/internal

1 file changed

+17
-9
lines changed

qs-kotlin/src/main/kotlin/io/github/techouse/qskotlin/internal/Utils.kt

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import java.time.Instant
1313
import java.time.LocalDateTime
1414
import java.util.Collections
1515
import java.util.IdentityHashMap
16+
import kotlin.collections.ArrayDeque
1617

1718
/** A collection of utility methods used by the library. */
1819
internal object Utils {
@@ -82,9 +83,9 @@ internal object Utils {
8283
}
8384
}
8485

85-
when {
86-
target is Set<*> -> mutableTarget.values.toSet()
87-
else -> mutableTarget.values.toSet()
86+
when (target) {
87+
is Set<*> -> mutableTarget.values.toSet()
88+
else -> mutableTarget.values.toList()
8889
}
8990
}
9091

@@ -110,21 +111,28 @@ internal object Utils {
110111
}
111112

112113
is Map<*, *> -> {
114+
val mutableTarget = target.toMutableMap()
115+
113116
when (source) {
114117
is Iterable<*> -> {
115-
val mutableTarget = target.toMutableMap()
116-
117118
source.forEachIndexed { i, item ->
118119
if (item !is Undefined) {
119120
mutableTarget[i] = item
120121
}
121122
}
122-
123-
mutableTarget
124123
}
125-
126-
else -> target
124+
is Undefined -> {
125+
// ignore
126+
}
127+
else -> {
128+
val k = source.toString()
129+
if (k.isNotEmpty()) {
130+
mutableTarget[k] = true
131+
}
132+
}
127133
}
134+
135+
mutableTarget
128136
}
129137

130138
else ->

0 commit comments

Comments
 (0)