Validate arguments of KTypeProjection constructor
#KT-34596 Fixed
This commit is contained in:
@@ -73,6 +73,16 @@ public data class KTypeProjection constructor(
|
||||
*/
|
||||
public val type: KType?
|
||||
) {
|
||||
|
||||
init {
|
||||
require((variance == null) == (type == null)) {
|
||||
if (variance == null)
|
||||
"Star projection must have no type specified."
|
||||
else
|
||||
"The projection variance $variance requires type to be specified."
|
||||
}
|
||||
}
|
||||
|
||||
override fun toString(): String = when (variance) {
|
||||
null -> "*"
|
||||
KVariance.INVARIANT -> type.toString()
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package test.reflection
|
||||
|
||||
import kotlin.reflect.KTypeProjection
|
||||
import kotlin.reflect.KVariance
|
||||
import kotlin.reflect.typeOf
|
||||
import kotlin.test.*
|
||||
|
||||
class KTypeProjectionTest {
|
||||
@Test
|
||||
fun constructorArgumentsValidation() {
|
||||
assertFailsWith<IllegalArgumentException> { KTypeProjection(null, typeOf<Int>()) }
|
||||
for (variance in KVariance.values()) {
|
||||
assertFailsWith<IllegalArgumentException> { KTypeProjection(variance, null) }.let { e ->
|
||||
assertTrue(variance.toString() in e.message!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user