diff options
Diffstat (limited to 'formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt')
-rw-r--r-- | formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt b/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt index d1698db2..c6098dd4 100644 --- a/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt +++ b/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt @@ -46,6 +46,13 @@ internal fun AbstractJsonLexer.throwInvalidFloatingPointDecoded(result: Number): hint = specialFlowingValuesHint) } +internal fun AbstractJsonLexer.invalidTrailingComma(entity: String = "object"): Nothing { + fail("Trailing comma before the end of JSON $entity", + position = currentPosition - 1, + hint = "Trailing commas are non-complaint JSON and not allowed by default. Use 'allowTrailingCommas = true' in 'Json {}' builder to support them." + ) +} + @OptIn(ExperimentalSerializationApi::class) internal fun InvalidKeyKindException(keyDescriptor: SerialDescriptor) = JsonEncodingException( "Value of type '${keyDescriptor.serialName}' can't be used in JSON as a key in the map. " + @@ -70,12 +77,12 @@ private fun unexpectedFpErrorMessage(value: Number, key: String, output: String) internal fun UnknownKeyException(key: String, input: String) = JsonDecodingException( -1, - "Encountered unknown key '$key'.\n" + + "Encountered an unknown key '$key'.\n" + "$ignoreUnknownKeysHint\n" + "Current input: ${input.minify()}" ) -private fun CharSequence.minify(offset: Int = -1): CharSequence { +internal fun CharSequence.minify(offset: Int = -1): CharSequence { if (length < 200) return this if (offset == -1) { val start = this.length - 60 |