[Serialization] Suppress OPT_IN errors in all diagnostic tests

This commit is contained in:
Dmitriy Novozhilov
2022-08-25 12:48:30 +03:00
committed by teamcity
parent 84b8ab1f9c
commit a6d3c6e5c6
33 changed files with 35 additions and 50 deletions
@@ -65,8 +65,13 @@ class RegisteredDirectivesBuilder private constructor(
} }
private fun <K : Directive, V> MutableMap<K, V>.putWithExistsCheck(key: K, value: V) { private fun <K : Directive, V> MutableMap<K, V>.putWithExistsCheck(key: K, value: V) {
val alreadyRegistered = put(key, value) val alreadyRegistered = get(key)
if (alreadyRegistered != null) { if (alreadyRegistered == null) {
put(key, value)
} else if (alreadyRegistered is List<Any?> && value is List<Any?>) {
@Suppress("UNCHECKED_CAST")
put(key, (alreadyRegistered + value) as V)
} else {
error("Default values for $key directive already registered") error("Default values for $key directive already registered")
} }
} }
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// FILE: test.kt // FILE: test.kt
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// FILE: test.kt // FILE: test.kt
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE, -OPT_IN_USAGE
// SKIP_TXT // SKIP_TXT
// FILE: test.kt // FILE: test.kt
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE, -OPT_IN_USAGE
// SKIP_TXT // SKIP_TXT
// FILE: test.kt // FILE: test.kt
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
@@ -1,5 +1,4 @@
// FIR_IDENTICAL // FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
// !USE_EXPERIMENTAL: kotlinx.serialization.ExperimentalSerializationApi // !USE_EXPERIMENTAL: kotlinx.serialization.ExperimentalSerializationApi
@@ -1,10 +1,9 @@
// This test enshures that analysis ends up without compiler exceptions // This test enshures that analysis ends up without compiler exceptions
// !DIAGNOSTICS: -OPT_IN_USAGE
import kotlinx.serialization.* import kotlinx.serialization.*
@Serializable @Serializable
class Digest() { class Digest() {
@<!OPT_IN_USAGE_ERROR!>Serializer<!>(forClass = Digest::class) @Serializer(forClass = Digest::class)
companion <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>object<!> : KSerializer<Digest> {} companion <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>object<!> : KSerializer<Digest> {}
} }
@@ -1,5 +1,4 @@
// This test enshures that analysis ends up without compiler exceptions // This test enshures that analysis ends up without compiler exceptions
// !DIAGNOSTICS: -OPT_IN_USAGE
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -OPT_IN_USAGE_ERROR, -OPT_IN_USAGE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -OPT_IN_USAGE_ERROR, -OPT_IN_USAGE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// FILE: test.kt // FILE: test.kt
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// FILE: test.kt // FILE: test.kt
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// FILE: test.kt // FILE: test.kt
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// FILE: test.kt // FILE: test.kt
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// FILE: test.kt // FILE: test.kt
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// FILE: test.kt // FILE: test.kt
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// FILE: test.kt // FILE: test.kt
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// FILE: test.kt // FILE: test.kt
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// SKIP_TXT // SKIP_TXT
// FILE: test.kt // FILE: test.kt
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// SKIP_TXT // SKIP_TXT
// FILE: test.kt // FILE: test.kt
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -OPT_IN_USAGE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -OPT_IN_USAGE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -OPT_IN_USAGE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -OPT_IN_USAGE
// WITH_STDLIB // WITH_STDLIB
// SKIP_TXT // SKIP_TXT
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// FILE: test.kt // FILE: test.kt
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -1,4 +1,3 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE
// WITH_STDLIB // WITH_STDLIB
// FILE: test.kt // FILE: test.kt
import kotlinx.serialization.* import kotlinx.serialization.*
@@ -6,6 +6,7 @@
package org.jetbrains.kotlinx.serialization.runners package org.jetbrains.kotlinx.serialization.runners
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.DIAGNOSTICS
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP
import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTest
@@ -15,7 +16,10 @@ import org.jetbrains.kotlinx.serialization.configureForKotlinxSerialization
abstract class AbstractSerializationPluginDiagnosticTest : AbstractDiagnosticTest() { abstract class AbstractSerializationPluginDiagnosticTest : AbstractDiagnosticTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configureForKotlinxSerialization() with(builder) {
configureForKotlinxSerialization()
disableOptInErrors()
}
} }
} }
@@ -24,6 +28,7 @@ abstract class AbstractSerializationFirDiagnosticTest : AbstractFirDiagnosticTes
super.configure(builder) super.configure(builder)
with(builder) { with(builder) {
configureForKotlinxSerialization() configureForKotlinxSerialization()
disableOptInErrors()
forTestsMatching("*/diagnostics/*") { forTestsMatching("*/diagnostics/*") {
configurationForClassicAndFirTestsAlongside() configurationForClassicAndFirTestsAlongside()
@@ -37,3 +42,9 @@ abstract class AbstractSerializationFirDiagnosticTest : AbstractFirDiagnosticTes
} }
} }
} }
private fun TestConfigurationBuilder.disableOptInErrors() {
defaultDirectives {
DIAGNOSTICS with listOf("-OPT_IN_USAGE", "-OPT_IN_USAGE_ERROR")
}
}