FE 1.0: use TYPE_VARIANCE_CONFLICT deprecation factory

This commit is contained in:
Mikhail Glukhikh
2022-03-03 11:44:33 +03:00
committed by Space
parent 7781413a93
commit ebed224f82
31 changed files with 204 additions and 209 deletions
@@ -1911,8 +1911,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token, token,
) )
} }
add(FirErrors.TYPE_VARIANCE_CONFLICT) { firDiagnostic -> add(FirErrors.TYPE_VARIANCE_CONFLICT_ERROR) { firDiagnostic ->
TypeVarianceConflictImpl( TypeVarianceConflictErrorImpl(
firSymbolBuilder.classifierBuilder.buildTypeParameterSymbol(firDiagnostic.a), firSymbolBuilder.classifierBuilder.buildTypeParameterSymbol(firDiagnostic.a),
firDiagnostic.b, firDiagnostic.b,
firDiagnostic.c, firDiagnostic.c,
@@ -1358,8 +1358,8 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val typeB: KtType abstract val typeB: KtType
} }
abstract class TypeVarianceConflict : KtFirDiagnostic<PsiElement>() { abstract class TypeVarianceConflictError : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = TypeVarianceConflict::class override val diagnosticClass get() = TypeVarianceConflictError::class
abstract val typeParameter: KtTypeParameterSymbol abstract val typeParameter: KtTypeParameterSymbol
abstract val typeParameterVariance: Variance abstract val typeParameterVariance: Variance
abstract val variance: Variance abstract val variance: Variance
@@ -1632,14 +1632,14 @@ internal class IncompatibleTypesWarningImpl(
override val token: ValidityToken, override val token: ValidityToken,
) : KtFirDiagnostic.IncompatibleTypesWarning(), KtAbstractFirDiagnostic<KtElement> ) : KtFirDiagnostic.IncompatibleTypesWarning(), KtAbstractFirDiagnostic<KtElement>
internal class TypeVarianceConflictImpl( internal class TypeVarianceConflictErrorImpl(
override val typeParameter: KtTypeParameterSymbol, override val typeParameter: KtTypeParameterSymbol,
override val typeParameterVariance: Variance, override val typeParameterVariance: Variance,
override val variance: Variance, override val variance: Variance,
override val containingType: KtType, override val containingType: KtType,
override val firDiagnostic: KtPsiDiagnostic, override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken, override val token: ValidityToken,
) : KtFirDiagnostic.TypeVarianceConflict(), KtAbstractFirDiagnostic<PsiElement> ) : KtFirDiagnostic.TypeVarianceConflictError(), KtAbstractFirDiagnostic<PsiElement>
internal class TypeVarianceConflictInExpandedTypeImpl( internal class TypeVarianceConflictInExpandedTypeImpl(
override val typeParameter: KtTypeParameterSymbol, override val typeParameter: KtTypeParameterSymbol,
@@ -1,7 +1,7 @@
interface List<out T : Any> { interface List<out T : Any> {
operator fun get(index: Int): T operator fun get(index: Int): T
infix fun concat(other: List<<!TYPE_VARIANCE_CONFLICT!>T<!>>): List<T> infix fun concat(other: List<<!TYPE_VARIANCE_CONFLICT_ERROR!>T<!>>): List<T>
} }
typealias StringList = List<<!REDUNDANT_PROJECTION!>out<!> String> typealias StringList = List<<!REDUNDANT_PROJECTION!>out<!> String>
@@ -647,7 +647,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
parameter<ConeKotlinType>("typeB") parameter<ConeKotlinType>("typeB")
} }
val TYPE_VARIANCE_CONFLICT by error<PsiElement>(PositioningStrategy.DECLARATION_SIGNATURE_OR_DEFAULT) { val TYPE_VARIANCE_CONFLICT_ERROR by error<PsiElement>(PositioningStrategy.DECLARATION_SIGNATURE_OR_DEFAULT) {
parameter<FirTypeParameterSymbol>("typeParameter") parameter<FirTypeParameterSymbol>("typeParameter")
parameter<Variance>("typeParameterVariance") parameter<Variance>("typeParameterVariance")
parameter<Variance>("variance") parameter<Variance>("variance")
@@ -401,7 +401,7 @@ object FirErrors {
val DYNAMIC_UPPER_BOUND by error0<KtTypeReference>() val DYNAMIC_UPPER_BOUND by error0<KtTypeReference>()
val INCOMPATIBLE_TYPES by error2<KtElement, ConeKotlinType, ConeKotlinType>() val INCOMPATIBLE_TYPES by error2<KtElement, ConeKotlinType, ConeKotlinType>()
val INCOMPATIBLE_TYPES_WARNING by warning2<KtElement, ConeKotlinType, ConeKotlinType>() val INCOMPATIBLE_TYPES_WARNING by warning2<KtElement, ConeKotlinType, ConeKotlinType>()
val TYPE_VARIANCE_CONFLICT by error4<PsiElement, FirTypeParameterSymbol, Variance, Variance, ConeKotlinType>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE_OR_DEFAULT) val TYPE_VARIANCE_CONFLICT_ERROR by error4<PsiElement, FirTypeParameterSymbol, Variance, Variance, ConeKotlinType>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE_OR_DEFAULT)
val TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE by error4<PsiElement, FirTypeParameterSymbol, Variance, Variance, ConeKotlinType>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE_OR_DEFAULT) val TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE by error4<PsiElement, FirTypeParameterSymbol, Variance, Variance, ConeKotlinType>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE_OR_DEFAULT)
val SMARTCAST_IMPOSSIBLE by error4<KtExpression, ConeKotlinType, FirExpression, String, Boolean>() val SMARTCAST_IMPOSSIBLE by error4<KtExpression, ConeKotlinType, FirExpression, String, Boolean>()
val REDUNDANT_NULLABLE by warning0<KtTypeReference>(SourceElementPositioningStrategies.REDUNDANT_NULLABLE) val REDUNDANT_NULLABLE by warning0<KtTypeReference>(SourceElementPositioningStrategies.REDUNDANT_NULLABLE)
@@ -118,7 +118,7 @@ object FirClassVarianceChecker : FirClassChecker() {
!fullyExpandedType.attributes.contains(CompilerConeAttributes.UnsafeVariance) !fullyExpandedType.attributes.contains(CompilerConeAttributes.UnsafeVariance)
) { ) {
val factory = val factory =
if (isInAbbreviation) FirErrors.TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE else FirErrors.TYPE_VARIANCE_CONFLICT if (isInAbbreviation) FirErrors.TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE else FirErrors.TYPE_VARIANCE_CONFLICT_ERROR
reporter.reportOn( reporter.reportOn(
resultSource, resultSource,
factory, factory,
@@ -495,7 +495,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TYPE_PARAMETER_IN
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TYPE_PARAMETER_IS_NOT_AN_EXPRESSION import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TYPE_PARAMETER_IS_NOT_AN_EXPRESSION
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TYPE_PARAMETER_ON_LHS_OF_DOT import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TYPE_PARAMETER_ON_LHS_OF_DOT
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TYPE_VARIANCE_CONFLICT import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TYPE_VARIANCE_CONFLICT_ERROR
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.UNCHECKED_CAST import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.UNCHECKED_CAST
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.UNDERSCORE_IS_RESERVED import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.UNDERSCORE_IS_RESERVED
@@ -1084,7 +1084,7 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
) )
map.put( map.put(
TYPE_VARIANCE_CONFLICT, TYPE_VARIANCE_CONFLICT_ERROR,
"Type parameter {0} is declared as ''{1}'' but occurs in ''{2}'' position in type {3}", "Type parameter {0} is declared as ''{1}'' but occurs in ''{2}'' position in type {3}",
SYMBOL, RENDER_POSITION_VARIANCE, RENDER_POSITION_VARIANCE, RENDER_TYPE SYMBOL, RENDER_POSITION_VARIANCE, RENDER_POSITION_VARIANCE, RENDER_TYPE
) )
@@ -43,6 +43,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import static org.jetbrains.kotlin.config.LanguageFeature.ReportTypeVarianceConflictOnQualifierArguments;
import static org.jetbrains.kotlin.diagnostics.ClassicPositioningStrategies.ACTUAL_DECLARATION_NAME; import static org.jetbrains.kotlin.diagnostics.ClassicPositioningStrategies.ACTUAL_DECLARATION_NAME;
import static org.jetbrains.kotlin.diagnostics.ClassicPositioningStrategies.INCOMPATIBLE_DECLARATION; import static org.jetbrains.kotlin.diagnostics.ClassicPositioningStrategies.INCOMPATIBLE_DECLARATION;
import static org.jetbrains.kotlin.diagnostics.PositioningStrategies.*; import static org.jetbrains.kotlin.diagnostics.PositioningStrategies.*;
@@ -197,10 +198,8 @@ public interface Errors {
DiagnosticFactory1.create(ERROR, VARIANCE_IN_PROJECTION); DiagnosticFactory1.create(ERROR, VARIANCE_IN_PROJECTION);
DiagnosticFactory1<KtTypeProjection, ClassifierDescriptor> REDUNDANT_PROJECTION = DiagnosticFactory1<KtTypeProjection, ClassifierDescriptor> REDUNDANT_PROJECTION =
DiagnosticFactory1.create(WARNING, VARIANCE_IN_PROJECTION); DiagnosticFactory1.create(WARNING, VARIANCE_IN_PROJECTION);
DiagnosticFactory1<PsiElement, VarianceConflictDiagnosticData> TYPE_VARIANCE_CONFLICT = DiagnosticFactoryForDeprecation1<PsiElement, VarianceConflictDiagnosticData> TYPE_VARIANCE_CONFLICT =
DiagnosticFactory1.create(ERROR, DECLARATION_SIGNATURE_OR_DEFAULT); DiagnosticFactoryForDeprecation1.create(LanguageFeature.ReportTypeVarianceConflictOnQualifierArguments, DECLARATION_SIGNATURE_OR_DEFAULT);
DiagnosticFactory1<PsiElement, VarianceConflictDiagnosticData> TYPE_VARIANCE_CONFLICT_WARNING =
DiagnosticFactory1.create(WARNING, DECLARATION_SIGNATURE_OR_DEFAULT);
DiagnosticFactory1<PsiElement, VarianceConflictDiagnosticData> TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE = DiagnosticFactory1<PsiElement, VarianceConflictDiagnosticData> TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE =
DiagnosticFactory1.create(ERROR, DECLARATION_SIGNATURE_OR_DEFAULT); DiagnosticFactory1.create(ERROR, DECLARATION_SIGNATURE_OR_DEFAULT);
DiagnosticFactory0<PsiElement> FINITE_BOUNDS_VIOLATION = DiagnosticFactory0.create(ERROR); DiagnosticFactory0<PsiElement> FINITE_BOUNDS_VIOLATION = DiagnosticFactory0.create(ERROR);
@@ -807,9 +807,6 @@ public class DefaultErrorMessages {
}; };
MAP.put(TYPE_VARIANCE_CONFLICT, "Type parameter {0} is declared as ''{1}'' but occurs in ''{2}'' position in type {3}", MAP.put(TYPE_VARIANCE_CONFLICT, "Type parameter {0} is declared as ''{1}'' but occurs in ''{2}'' position in type {3}",
varianceConflictDataRenderer); varianceConflictDataRenderer);
MAP.put(TYPE_VARIANCE_CONFLICT_WARNING, "Type parameter {0} is declared as ''{1}'' but occurs in ''{2}'' position in type {3}. " +
"This diagnostic will become an error soon. See https://youtrack.jetbrains.com/issue/KT-50947",
varianceConflictDataRenderer);
MAP.put(TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE, "Type parameter {0} is declared as ''{1}'' but occurs in ''{2}'' position in abbreviated type {3}", MAP.put(TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE, "Type parameter {0} is declared as ''{1}'' but occurs in ''{2}'' position in abbreviated type {3}",
varianceConflictDataRenderer); varianceConflictDataRenderer);
@@ -18,9 +18,8 @@ package org.jetbrains.kotlin.resolve
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.builtins.StandardNames import org.jetbrains.kotlin.builtins.StandardNames
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.config.LanguageFeature.ReportTypeVarianceConflictOnQualifierArguments
import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.impl.FunctionDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.FunctionDescriptorImpl
import org.jetbrains.kotlin.descriptors.impl.PropertyAccessorDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.PropertyAccessorDescriptorImpl
@@ -157,19 +156,20 @@ class VarianceCheckerCore(
&& !type.annotations.hasAnnotation(StandardNames.FqNames.unsafeVariance) && !type.annotations.hasAnnotation(StandardNames.FqNames.unsafeVariance)
) { ) {
val varianceConflictDiagnosticData = VarianceConflictDiagnosticData(containingType, classifierDescriptor, position) val varianceConflictDiagnosticData = VarianceConflictDiagnosticData(containingType, classifierDescriptor, position)
val diagnostic = when {
when { isArgumentFromQualifier ->
isArgumentFromQualifier -> { diagnosticSink.report(
if (languageVersionSettings?.supportsFeature(ReportTypeVarianceConflictOnQualifierArguments) == true) { Errors.TYPE_VARIANCE_CONFLICT.on(
Errors.TYPE_VARIANCE_CONFLICT languageVersionSettings ?: LanguageVersionSettingsImpl.DEFAULT,
} else { psiElement,
Errors.TYPE_VARIANCE_CONFLICT_WARNING varianceConflictDiagnosticData
} )
} )
isInAbbreviation -> Errors.TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE isInAbbreviation ->
else -> Errors.TYPE_VARIANCE_CONFLICT diagnosticSink.report(Errors.TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE.on(psiElement, varianceConflictDiagnosticData))
} else ->
diagnosticSink.report(diagnostic.on(psiElement, varianceConflictDiagnosticData)) diagnosticSink.report(Errors.TYPE_VARIANCE_CONFLICT.errorFactory.on(psiElement, varianceConflictDiagnosticData))
}
} }
return declarationVariance.allowsPosition(position) return declarationVariance.allowsPosition(position)
} }
@@ -178,11 +178,10 @@ class VarianceCheckerCore(
for (argument in arguments) { for (argument in arguments) {
if (argument?.typeParameter == null || argument.projection.isStarProjection) continue if (argument?.typeParameter == null || argument.projection.isStarProjection) continue
val projectionKind = TypeCheckingProcedure.getEffectiveProjectionKind(argument.typeParameter!!, argument.projection)!! val newPosition = when (TypeCheckingProcedure.getEffectiveProjectionKind(argument.typeParameter!!, argument.projection)!!) {
val newPosition = when (projectionKind) {
EnrichedProjectionKind.OUT -> position EnrichedProjectionKind.OUT -> position
EnrichedProjectionKind.IN -> position.opposite() EnrichedProjectionKind.IN -> position.opposite()
EnrichedProjectionKind.INV -> Variance.INVARIANT EnrichedProjectionKind.INV -> INVARIANT
EnrichedProjectionKind.STAR -> null // CONFLICTING_PROJECTION error was reported EnrichedProjectionKind.STAR -> null // CONFLICTING_PROJECTION error was reported
} }
if (newPosition != null) { if (newPosition != null) {
@@ -2,10 +2,10 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
class Outer<out E, in F> { class Outer<out E, in F> {
inner class Inner { inner class Inner {
fun unsafe1(x: <!TYPE_VARIANCE_CONFLICT!>E<!>) {} fun unsafe1(x: <!TYPE_VARIANCE_CONFLICT_ERROR!>E<!>) {}
fun unsafe2(x: Collection<<!TYPE_VARIANCE_CONFLICT!>E?<!>>) {} fun unsafe2(x: Collection<<!TYPE_VARIANCE_CONFLICT_ERROR!>E?<!>>) {}
fun unsafe3(): <!TYPE_VARIANCE_CONFLICT!>F?<!> = null fun unsafe3(): <!TYPE_VARIANCE_CONFLICT_ERROR!>F?<!> = null
fun unsafe4(): Collection<<!TYPE_VARIANCE_CONFLICT!>F<!>>? = null fun unsafe4(): Collection<<!TYPE_VARIANCE_CONFLICT_ERROR!>F<!>>? = null
} }
// Should be errors // Should be errors
@@ -8,16 +8,16 @@ class Bar<K> {
abstract class Foo<in T> { abstract class Foo<in T> {
abstract fun yuckyEventHandler( abstract fun yuckyEventHandler(
fn: Bar<<!TYPE_VARIANCE_CONFLICT!>T<!>>.Inner.() -> Unit fn: Bar<<!TYPE_VARIANCE_CONFLICT_ERROR!>T<!>>.Inner.() -> Unit
): () -> Unit ): () -> Unit
abstract fun second(fn: Bar<<!TYPE_VARIANCE_CONFLICT!>T<!>>.Inner) abstract fun second(fn: Bar<<!TYPE_VARIANCE_CONFLICT_ERROR!>T<!>>.Inner)
abstract fun third(fn: Bar<<!TYPE_VARIANCE_CONFLICT!>T<!>>.Inner.SuperInner) abstract fun third(fn: Bar<<!TYPE_VARIANCE_CONFLICT_ERROR!>T<!>>.Inner.SuperInner)
} }
abstract class Baz<out T> { abstract class Baz<out T> {
abstract fun yuckyEventHandler( abstract fun yuckyEventHandler(
fn: Bar<<!TYPE_VARIANCE_CONFLICT!>T<!>>.Inner.() -> Unit fn: Bar<<!TYPE_VARIANCE_CONFLICT_ERROR!>T<!>>.Inner.() -> Unit
): () -> Unit ): () -> Unit
} }
@@ -7,6 +7,6 @@ class Bar<K> {
abstract class Foo<in T> { abstract class Foo<in T> {
abstract fun yuckyEventHandler( abstract fun yuckyEventHandler(
fn: Bar<<!TYPE_VARIANCE_CONFLICT!>T<!>>.Inner.() -> Unit fn: Bar<<!TYPE_VARIANCE_CONFLICT_ERROR!>T<!>>.Inner.() -> Unit
): () -> Unit ): () -> Unit
} }
+2 -2
View File
@@ -9,9 +9,9 @@ interface Super<out U> {
} }
// Related variance errors // Related variance errors
class Owner<in T> { class Owner<in T> {
inner class Inner<U : <!TYPE_VARIANCE_CONFLICT!>T<!>>(val u: U) { inner class Inner<U : <!TYPE_VARIANCE_CONFLICT_ERROR!>T<!>>(val u: U) {
fun getT() = u fun getT() = u
} }
<!TYPE_VARIANCE_CONFLICT!>fun foo(arg: Inner<*>)<!> = arg.getT() <!TYPE_VARIANCE_CONFLICT_ERROR!>fun foo(arg: Inner<*>)<!> = arg.getT()
} }
+1 -1
View File
@@ -9,7 +9,7 @@ interface Super<out U> {
} }
// Related variance errors // Related variance errors
class Owner<in T> { class Owner<in T> {
inner class Inner<U : <!TYPE_VARIANCE_CONFLICT!>T<!>>(val u: U) { inner class Inner<U : <!TYPE_VARIANCE_CONFLICT_ERROR!>T<!>>(val u: U) {
fun getT() = u fun getT() = u
} }
@@ -7,5 +7,5 @@ typealias A4<E> = Out<Inv<E>>
interface Q1<out S> : Out<A1<S>> interface Q1<out S> : Out<A1<S>>
interface Q2<out S> : Out<A2<S>> interface Q2<out S> : Out<A2<S>>
interface Q3<out S> : Out<A3<<!TYPE_VARIANCE_CONFLICT!>S<!>>> interface Q3<out S> : Out<A3<<!TYPE_VARIANCE_CONFLICT_ERROR!>S<!>>>
interface Q4<out S> : Out<A4<<!TYPE_VARIANCE_CONFLICT!>S<!>>> interface Q4<out S> : Out<A4<<!TYPE_VARIANCE_CONFLICT_ERROR!>S<!>>>
+8 -8
View File
@@ -3,22 +3,22 @@ interface In<in T>
interface Out<out T> interface Out<out T>
interface Inv<T> interface Inv<T>
interface TypeBounds1<in I, out O, P, X : <!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>I<!>> interface TypeBounds1<in I, out O, P, X : <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
interface TypeBounds2<in I, out O, P, X : O> interface TypeBounds2<in I, out O, P, X : O>
interface TypeBounds3<in I, out O, P, X : P> interface TypeBounds3<in I, out O, P, X : P>
interface TypeBounds4<in I, out O, P, X : In<I>> interface TypeBounds4<in I, out O, P, X : In<I>>
interface TypeBounds5<in I, out O, P, X : In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>O<!>>> interface TypeBounds5<in I, out O, P, X : In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
interface WhereTypeBounds1<in I, out O, P, X> where X : <!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>I<!> interface WhereTypeBounds1<in I, out O, P, X> where X : <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
interface WhereTypeBounds2<in I, out O, P, X> where X : O interface WhereTypeBounds2<in I, out O, P, X> where X : O
interface WhereTypeBounds3<in I, out O, P, X> where X : P interface WhereTypeBounds3<in I, out O, P, X> where X : P
interface WhereTypeBounds4<in I, out O, P, X> where X : In<I> interface WhereTypeBounds4<in I, out O, P, X> where X : In<I>
interface WhereTypeBounds5<in I, out O, P, X> where X : In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>O<!>> interface WhereTypeBounds5<in I, out O, P, X> where X : In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
class SubClass1<in I, out O, P> : Out<<!TYPE_VARIANCE_CONFLICT("I; in; out; Out<I>")!>I<!>> class SubClass1<in I, out O, P> : Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
class SubClass2<in I, out O, P> : Out<O> class SubClass2<in I, out O, P> : Out<O>
class SubClass3<in I, out O, P> : Out<P> class SubClass3<in I, out O, P> : Out<P>
class SubClass4<in I, out O, P> : In<I> class SubClass4<in I, out O, P> : In<I>
class SubClass5<in I, out O, P> : In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>O<!>> class SubClass5<in I, out O, P> : In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
class SubClass6<in I, out O, P> : Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>> class SubClass6<in I, out O, P> : Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
class SubClass7<in I, out O, P> : Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>> class SubClass7<in I, out O, P> : Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
+10 -10
View File
@@ -5,31 +5,31 @@ interface Inv<T>
fun <T> getT(): T = null!! fun <T> getT(): T = null!!
interface Test<in I, out O, P> { interface Test<in I, out O, P> {
fun parameters1(i: I, o: <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>, p: P) fun parameters1(i: I, o: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>, p: P)
fun parameters2(i: In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>>) fun parameters2(i: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun parameters3(i: In<O>) fun parameters3(i: In<O>)
fun explicitReturnType1() : <!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>I<!> fun explicitReturnType1() : <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
fun explicitReturnType2() : O fun explicitReturnType2() : O
fun explicitReturnType3() : P fun explicitReturnType3() : P
fun explicitReturnType4() : In<I> fun explicitReturnType4() : In<I>
fun explicitReturnType5() : In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>O<!>> fun explicitReturnType5() : In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
<!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>fun imlicitReturnType1()<!> = getT<I>() <!TYPE_VARIANCE_CONFLICT_ERROR!>fun imlicitReturnType1()<!> = getT<I>()
fun imlicitReturnType2() = getT<O>() fun imlicitReturnType2() = getT<O>()
fun imlicitReturnType3() = getT<P>() fun imlicitReturnType3() = getT<P>()
fun imlicitReturnType4() = getT<In<I>>() fun imlicitReturnType4() = getT<In<I>>()
<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>fun imlicitReturnType5()<!> = getT<In<O>>() <!TYPE_VARIANCE_CONFLICT_ERROR!>fun imlicitReturnType5()<!> = getT<In<O>>()
fun I.receiver1() fun I.receiver1()
fun <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>.receiver2() fun <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>.receiver2()
fun P.receiver3() fun P.receiver3()
fun In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>>.receiver4() fun In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>.receiver4()
fun In<O>.receiver5() fun In<O>.receiver5()
fun <X : I> typeParameter1() fun <X : I> typeParameter1()
fun <X : <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>> typeParameter2() fun <X : <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>> typeParameter2()
fun <X : P> typeParameter3() fun <X : P> typeParameter3()
fun <X : In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>>> typeParameter4() fun <X : In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>> typeParameter4()
fun <X : In<O>> typeParameter5() fun <X : In<O>> typeParameter5()
} }
@@ -7,7 +7,7 @@ interface Test<in I, out O, P> {
fun ok2(i: (P) -> P) : (P) -> P fun ok2(i: (P) -> P) : (P) -> P
fun ok3(i: (In<I>) -> In<O>) = getT<(In<O>) -> In<I>>() fun ok3(i: (In<I>) -> In<O>) = getT<(In<O>) -> In<I>>()
fun neOk1(i: (<!TYPE_VARIANCE_CONFLICT!>I<!>) -> <!TYPE_VARIANCE_CONFLICT!>O<!>): (<!TYPE_VARIANCE_CONFLICT!>O<!>) -> <!TYPE_VARIANCE_CONFLICT!>I<!> fun neOk1(i: (<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>) -> <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>): (<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>) -> <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
fun neOk2(i: (In<<!TYPE_VARIANCE_CONFLICT!>O<!>>) -> In<<!TYPE_VARIANCE_CONFLICT!>I<!>>) fun neOk2(i: (In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>) -> In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
<!TYPE_VARIANCE_CONFLICT, TYPE_VARIANCE_CONFLICT!>fun neOk3()<!> = getT<(In<I>) -> In<O>>() <!TYPE_VARIANCE_CONFLICT_ERROR, TYPE_VARIANCE_CONFLICT_ERROR!>fun neOk3()<!> = getT<(In<I>) -> In<O>>()
} }
@@ -27,22 +27,22 @@ interface Test<in I, out O, P> {
fun Ok22(i: Inv<out I>) fun Ok22(i: Inv<out I>)
fun Ok23(i: Inv<out P>) fun Ok23(i: Inv<out P>)
fun neOk1(i: <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>) fun neOk1(i: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>)
fun neOk2(i: In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>>) fun neOk2(i: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun neOk3(i: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<In<O>>")!>O<!>>>) fun neOk3(i: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>)
fun neOk4(i: Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>>) fun neOk4(i: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun neOk5(i: Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>>) fun neOk5(i: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk6(i: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<In<O>>")!>O<!>>>) fun neOk6(i: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>)
fun neOk7(i: Pair<In<<!TYPE_VARIANCE_CONFLICT("I; in; out; Pair<In<I>, O>")!>I<!>>, <!TYPE_VARIANCE_CONFLICT("O; out; in; Pair<In<I>, O>")!>O<!>>) fun neOk7(i: Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk8(i: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<out O>")!>O<!>>) fun neOk8(i: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk9(i: In<<!CONFLICTING_PROJECTION!>out<!> P>) fun neOk9(i: In<<!CONFLICTING_PROJECTION!>out<!> P>)
fun neOk10(i: Out<<!TYPE_VARIANCE_CONFLICT("O; out; in; Out<O>")!>O<!>>) fun neOk10(i: Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk11(i: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; out; Inv<in I>")!>I<!>>) fun neOk11(i: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun neOk12(i: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<out O>")!>O<!>>) fun neOk12(i: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk30(i: Pair<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><O, ><!>) fun neOk30(i: Pair<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><O, ><!>)
fun neOk31(i: Pair<<!TYPE_VARIANCE_CONFLICT("O; out; in; Pair<O, ERROR CLASS: Wrong number of type arguments>")!>O<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>>) fun neOk31(i: Pair<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>>)
fun neOk32(i: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>) fun neOk32(i: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>)
fun neOk33(i: Inv<<!SYNTAX!><!>>) fun neOk33(i: Inv<<!SYNTAX!><!>>)
fun neOk34(i: Inv<<!UNRESOLVED_REFERENCE!>C<!>>) fun neOk34(i: Inv<<!UNRESOLVED_REFERENCE!>C<!>>)
+12 -12
View File
@@ -27,22 +27,22 @@ interface Test<in I, out O, P> {
fun Ok22(i: Inv<out I>) fun Ok22(i: Inv<out I>)
fun Ok23(i: Inv<out P>) fun Ok23(i: Inv<out P>)
fun neOk1(i: <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>) fun neOk1(i: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>)
fun neOk2(i: In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>>) fun neOk2(i: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun neOk3(i: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<In<O>>")!>O<!>>>) fun neOk3(i: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>)
fun neOk4(i: Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>>) fun neOk4(i: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun neOk5(i: Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>>) fun neOk5(i: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk6(i: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<In<O>>")!>O<!>>>) fun neOk6(i: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>)
fun neOk7(i: Pair<In<<!TYPE_VARIANCE_CONFLICT("I; in; out; Pair<In<I>, O>")!>I<!>>, <!TYPE_VARIANCE_CONFLICT("O; out; in; Pair<In<I>, O>")!>O<!>>) fun neOk7(i: Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk8(i: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<out O>")!>O<!>>) fun neOk8(i: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk9(i: In<<!CONFLICTING_PROJECTION!>out<!> P>) fun neOk9(i: In<<!CONFLICTING_PROJECTION!>out<!> P>)
fun neOk10(i: Out<<!TYPE_VARIANCE_CONFLICT("O; out; in; Out<O>")!>O<!>>) fun neOk10(i: Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk11(i: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; out; Inv<in I>")!>I<!>>) fun neOk11(i: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun neOk12(i: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<out O>")!>O<!>>) fun neOk12(i: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk30(i: Pair<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><O<!UNSUPPORTED_FEATURE!>,<!> ><!>) fun neOk30(i: Pair<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><O<!UNSUPPORTED_FEATURE!>,<!> ><!>)
fun neOk31(i: Pair<<!TYPE_VARIANCE_CONFLICT("O; out; in; Pair<O, [ERROR : Inv]>")!>O<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>>) fun neOk31(i: Pair<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>>)
fun neOk32(i: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>) fun neOk32(i: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>)
fun neOk33(i: Inv<<!SYNTAX!><!>>) fun neOk33(i: Inv<<!SYNTAX!><!>>)
fun neOk34(i: Inv<<!UNRESOLVED_REFERENCE!>C<!>>) fun neOk34(i: Inv<<!UNRESOLVED_REFERENCE!>C<!>>)
@@ -14,32 +14,32 @@ interface Test<in I, out O, P> {
var ok6: Inv<in P> var ok6: Inv<in P>
var ok7: Inv<out P> var ok7: Inv<out P>
var neOk1: <!TYPE_VARIANCE_CONFLICT("O; out; invariant; O")!>O<!> var neOk1: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>
var neOk2: In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<I>")!>I<!>> var neOk2: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk3: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<In<O>>")!>O<!>>> var neOk3: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
var neOk4: Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>> var neOk4: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk5: Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>> var neOk5: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk6: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<In<O>>")!>O<!>>> var neOk6: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
var neOk7: Pair<In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Pair<In<I>, O>")!>I<!>>, <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Pair<In<I>, O>")!>O<!>> var neOk7: Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk8: Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<in O>")!>O<!>> var neOk8: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk9: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<in I>")!>I<!>> var neOk9: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk10: In<<!CONFLICTING_PROJECTION!>out<!> I> var neOk10: In<<!CONFLICTING_PROJECTION!>out<!> I>
var neOk11: <!TYPE_VARIANCE_CONFLICT("I; in; invariant; I")!>I<!> var neOk11: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
var neOk12: In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<O>")!>O<!>> var neOk12: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk13: In<In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<In<I>>")!>I<!>>> var neOk13: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>>
var neOk14: Out<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Out<I>")!>I<!>> var neOk14: Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk15: Out<Out<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Out<Out<I>>")!>I<!>>> var neOk15: Out<Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>>
var neOk16: Out<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Out<In<O>>")!>O<!>>> var neOk16: Out<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
var neOk17: Pair<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Pair<In<O>, I>")!>O<!>>, <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Pair<In<O>, I>")!>I<!>> var neOk17: Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk20: Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<in O>")!>O<!>> var neOk20: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk21: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<in I>")!>I<!>> var neOk21: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk22: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<out O>")!>O<!>> var neOk22: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk23: Inv<out <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<out I>")!>I<!>> var neOk23: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk30: Pair<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><I, ><!> var neOk30: Pair<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><I, ><!>
var neOk31: Pair<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Pair<I, ERROR CLASS: Wrong number of type arguments>")!>I<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>> var neOk31: Pair<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>>
var neOk32: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!> var neOk32: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>
var neOk33: Inv<<!SYNTAX!><!>> var neOk33: Inv<<!SYNTAX!><!>>
var neOk34: Inv<<!UNRESOLVED_REFERENCE!>C<!>> var neOk34: Inv<<!UNRESOLVED_REFERENCE!>C<!>>
@@ -14,32 +14,32 @@ interface Test<in I, out O, P> {
var ok6: Inv<in P> var ok6: Inv<in P>
var ok7: Inv<out P> var ok7: Inv<out P>
var neOk1: <!TYPE_VARIANCE_CONFLICT("O; out; invariant; O")!>O<!> var neOk1: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>
var neOk2: In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<I>")!>I<!>> var neOk2: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk3: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<In<O>>")!>O<!>>> var neOk3: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
var neOk4: Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>> var neOk4: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk5: Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>> var neOk5: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk6: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<In<O>>")!>O<!>>> var neOk6: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
var neOk7: Pair<In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Pair<In<I>, O>")!>I<!>>, <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Pair<In<I>, O>")!>O<!>> var neOk7: Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk8: Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<in O>")!>O<!>> var neOk8: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk9: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<in I>")!>I<!>> var neOk9: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk10: In<<!CONFLICTING_PROJECTION!>out<!> I> var neOk10: In<<!CONFLICTING_PROJECTION!>out<!> I>
var neOk11: <!TYPE_VARIANCE_CONFLICT("I; in; invariant; I")!>I<!> var neOk11: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
var neOk12: In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<O>")!>O<!>> var neOk12: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk13: In<In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<In<I>>")!>I<!>>> var neOk13: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>>
var neOk14: Out<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Out<I>")!>I<!>> var neOk14: Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk15: Out<Out<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Out<Out<I>>")!>I<!>>> var neOk15: Out<Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>>
var neOk16: Out<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Out<In<O>>")!>O<!>>> var neOk16: Out<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
var neOk17: Pair<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Pair<In<O>, I>")!>O<!>>, <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Pair<In<O>, I>")!>I<!>> var neOk17: Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk20: Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<in O>")!>O<!>> var neOk20: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk21: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<in I>")!>I<!>> var neOk21: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk22: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<out O>")!>O<!>> var neOk22: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk23: Inv<out <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<out I>")!>I<!>> var neOk23: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk30: Pair<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><I<!UNSUPPORTED_FEATURE!>,<!> ><!> var neOk30: Pair<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><I<!UNSUPPORTED_FEATURE!>,<!> ><!>
var neOk31: Pair<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Pair<I, [ERROR : Inv]>")!>I<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>> var neOk31: Pair<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>>
var neOk32: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!> var neOk32: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>
var neOk33: Inv<<!SYNTAX!><!>> var neOk33: Inv<<!SYNTAX!><!>>
var neOk34: Inv<<!UNRESOLVED_REFERENCE!>C<!>> var neOk34: Inv<<!UNRESOLVED_REFERENCE!>C<!>>
@@ -10,8 +10,8 @@ interface Test<in I : Any, out O : Any, P : Any> {
fun ok2(i: In<O?>?) : Out<O?>? fun ok2(i: In<O?>?) : Out<O?>?
fun ok3(i: Inv<in O?>) = getT<Inv<in I?>>() fun ok3(i: Inv<in O?>) = getT<Inv<in I?>>()
fun neOk1(i: <!TYPE_VARIANCE_CONFLICT("O; out; in; O?")!>O?<!>) : <!TYPE_VARIANCE_CONFLICT("I; in; out; I?")!>I?<!> fun neOk1(i: <!TYPE_VARIANCE_CONFLICT_ERROR!>O?<!>) : <!TYPE_VARIANCE_CONFLICT_ERROR!>I?<!>
fun neOk(i: Out<<!TYPE_VARIANCE_CONFLICT("O; out; in; Out<O?>?")!>O?<!>>?) : In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O?>?")!>O?<!>>? fun neOk(i: Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>O?<!>>?) : In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O?<!>>?
fun neOk3(i: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; out; Inv<in I?>")!>I?<!>>) fun neOk3(i: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I?<!>>)
<!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<in O?>?")!>fun neOk4()<!> = getT<Inv<in O?>?>() <!TYPE_VARIANCE_CONFLICT_ERROR!>fun neOk4()<!> = getT<Inv<in O?>?>()
} }
@@ -21,20 +21,20 @@ interface Test<in I, out O, P> {
fun ok12(): Inv<in P> fun ok12(): Inv<in P>
fun ok13(): Inv<out P> fun ok13(): Inv<out P>
fun neOk1(): <!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>I<!> fun neOk1(): <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
fun neOk2(): In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>O<!>> fun neOk2(): In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk3(): In<In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<In<I>>")!>I<!>>> fun neOk3(): In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>>
fun neOk4(): Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>> fun neOk4(): Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
fun neOk5(): Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>> fun neOk5(): Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk6(): Pair<In<<!TYPE_VARIANCE_CONFLICT("O; out; in; Pair<In<O>, I>")!>O<!>>, <!TYPE_VARIANCE_CONFLICT("I; in; out; Pair<In<O>, I>")!>I<!>> fun neOk6(): Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
fun neOk7(): Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<in O>")!>O<!>> fun neOk7(): Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk8(): Out<<!CONFLICTING_PROJECTION("Out<in I>")!>in<!> I> fun neOk8(): Out<<!CONFLICTING_PROJECTION("Out<in I>")!>in<!> I>
fun neOk10(): Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<in O>")!>O<!>> fun neOk10(): Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk11(): Inv<out <!TYPE_VARIANCE_CONFLICT("I; in; out; Inv<out I>")!>I<!>> fun neOk11(): Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
fun neOk30(): Pair<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><I, ><!> fun neOk30(): Pair<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><I, ><!>
fun neOk31(): Pair<<!TYPE_VARIANCE_CONFLICT("I; in; out; Pair<I, ERROR CLASS: Wrong number of type arguments>")!>I<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>> fun neOk31(): Pair<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>>
fun neOk32(): <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!> fun neOk32(): <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>
fun neOk33(): Inv<<!SYNTAX!><!>> fun neOk33(): Inv<<!SYNTAX!><!>>
fun neOk34(): Inv<<!UNRESOLVED_REFERENCE!>C<!>> fun neOk34(): Inv<<!UNRESOLVED_REFERENCE!>C<!>>
+10 -10
View File
@@ -21,20 +21,20 @@ interface Test<in I, out O, P> {
fun ok12(): Inv<in P> fun ok12(): Inv<in P>
fun ok13(): Inv<out P> fun ok13(): Inv<out P>
fun neOk1(): <!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>I<!> fun neOk1(): <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
fun neOk2(): In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>O<!>> fun neOk2(): In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk3(): In<In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<In<I>>")!>I<!>>> fun neOk3(): In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>>
fun neOk4(): Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>> fun neOk4(): Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
fun neOk5(): Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>> fun neOk5(): Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk6(): Pair<In<<!TYPE_VARIANCE_CONFLICT("O; out; in; Pair<In<O>, I>")!>O<!>>, <!TYPE_VARIANCE_CONFLICT("I; in; out; Pair<In<O>, I>")!>I<!>> fun neOk6(): Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
fun neOk7(): Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<in O>")!>O<!>> fun neOk7(): Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk8(): Out<<!CONFLICTING_PROJECTION("Out")!>in<!> I> fun neOk8(): Out<<!CONFLICTING_PROJECTION("Out")!>in<!> I>
fun neOk10(): Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<in O>")!>O<!>> fun neOk10(): Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk11(): Inv<out <!TYPE_VARIANCE_CONFLICT("I; in; out; Inv<out I>")!>I<!>> fun neOk11(): Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
fun neOk30(): Pair<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><I<!UNSUPPORTED_FEATURE!>,<!> ><!> fun neOk30(): Pair<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><I<!UNSUPPORTED_FEATURE!>,<!> ><!>
fun neOk31(): Pair<<!TYPE_VARIANCE_CONFLICT("I; in; out; Pair<I, [ERROR : Inv]>")!>I<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>> fun neOk31(): Pair<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>>
fun neOk32(): <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!> fun neOk32(): <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>
fun neOk33(): Inv<<!SYNTAX!><!>> fun neOk33(): Inv<<!SYNTAX!><!>>
fun neOk34(): Inv<<!UNRESOLVED_REFERENCE!>C<!>> fun neOk34(): Inv<<!UNRESOLVED_REFERENCE!>C<!>>
@@ -6,17 +6,17 @@ interface Inv<T>
fun <T> getT(): T = null!! fun <T> getT(): T = null!!
class Test<in I, out O, P>( class Test<in I, out O, P>(
val type1: <!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>I<!>, val type1: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>,
val type2: O, val type2: O,
val type3: P, val type3: P,
val type4: In<I>, val type4: In<I>,
val type5: In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>O<!>>, val type5: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>,
var type6: <!TYPE_VARIANCE_CONFLICT("I; in; invariant; I")!>I<!>, var type6: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>,
var type7: <!TYPE_VARIANCE_CONFLICT("O; out; invariant; O")!>O<!>, var type7: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>,
var type8: P, var type8: P,
var type9: In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<I>")!>I<!>>, var type9: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>,
var type0: In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<O>")!>O<!>>, var type0: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>,
type11: I, type11: I,
type12: O, type12: O,
+12 -12
View File
@@ -13,39 +13,39 @@ class Delegate<T> {
fun <T> getT(): T = null!! fun <T> getT(): T = null!!
abstract class Test<in I, out O, P> { abstract class Test<in I, out O, P> {
abstract val type1: <!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>I<!> abstract val type1: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
abstract val type2: O abstract val type2: O
abstract val type3: P abstract val type3: P
abstract val type4: In<I> abstract val type4: In<I>
abstract val type5: In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>O<!>> abstract val type5: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
<!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>val implicitType1<!> = getT<I>() <!TYPE_VARIANCE_CONFLICT_ERROR!>val implicitType1<!> = getT<I>()
val implicitType2 = getT<O>() val implicitType2 = getT<O>()
val implicitType3 = getT<P>() val implicitType3 = getT<P>()
val implicitType4 = getT<In<I>>() val implicitType4 = getT<In<I>>()
<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>val implicitType5<!> = getT<In<O>>() <!TYPE_VARIANCE_CONFLICT_ERROR!>val implicitType5<!> = getT<In<O>>()
<!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>val delegateType1<!> by Delegate<I>() <!TYPE_VARIANCE_CONFLICT_ERROR!>val delegateType1<!> by Delegate<I>()
val delegateType2 by Delegate<O>() val delegateType2 by Delegate<O>()
val delegateType3 by Delegate<P>() val delegateType3 by Delegate<P>()
val delegateType4 by Delegate<In<I>>() val delegateType4 by Delegate<In<I>>()
<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>val delegateType5<!> by Delegate<In<O>>() <!TYPE_VARIANCE_CONFLICT_ERROR!>val delegateType5<!> by Delegate<In<O>>()
abstract val I.receiver1: Int abstract val I.receiver1: Int
abstract val <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>.receiver2: Int abstract val <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>.receiver2: Int
abstract val P.receiver3: Int abstract val P.receiver3: Int
abstract val In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>>.receiver4: Int abstract val In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>.receiver4: Int
abstract val In<O>.receiver5: Int abstract val In<O>.receiver5: Int
val <X : I> X.typeParameter1: Int get() = 0 val <X : I> X.typeParameter1: Int get() = 0
val <X : <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>> X.typeParameter2: Int get() = 0 val <X : <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>> X.typeParameter2: Int get() = 0
val <X : P> X.typeParameter3: Int get() = 0 val <X : P> X.typeParameter3: Int get() = 0
val <X : In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>>> X.typeParameter4: Int get() = 0 val <X : In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>> X.typeParameter4: Int get() = 0
val <X : In<O>> X.typeParameter5: Int get() = 0 val <X : In<O>> X.typeParameter5: Int get() = 0
val <X> X.typeParameter6: Int where X : I get() = 0 val <X> X.typeParameter6: Int where X : I get() = 0
val <X> X.typeParameter7: Int where X : <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!> get() = 0 val <X> X.typeParameter7: Int where X : <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!> get() = 0
val <X> X.typeParameter8: Int where X : P get() = 0 val <X> X.typeParameter8: Int where X : P get() = 0
val <X> X.typeParameter9: Int where X : In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>> get() = 0 val <X> X.typeParameter9: Int where X : In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>> get() = 0
val <X> X.typeParameter0: Int where X : In<O> get() = 0 val <X> X.typeParameter0: Int where X : In<O> get() = 0
} }
+18 -18
View File
@@ -13,39 +13,39 @@ class Delegate<T> {
fun <T> getT(): T = null!! fun <T> getT(): T = null!!
abstract class Test<in I, out O, P> { abstract class Test<in I, out O, P> {
abstract var type1: <!TYPE_VARIANCE_CONFLICT("I; in; invariant; I")!>I<!> abstract var type1: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
abstract var type2: <!TYPE_VARIANCE_CONFLICT("O; out; invariant; O")!>O<!> abstract var type2: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>
abstract var type3: P abstract var type3: P
abstract var type4: In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<I>")!>I<!>> abstract var type4: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
abstract var type5: In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<O>")!>O<!>> abstract var type5: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
<!TYPE_VARIANCE_CONFLICT("I; in; invariant; I")!>var implicitType1<!> = getT<I>() <!TYPE_VARIANCE_CONFLICT_ERROR!>var implicitType1<!> = getT<I>()
<!TYPE_VARIANCE_CONFLICT("O; out; invariant; O")!>var implicitType2<!> = getT<O>() <!TYPE_VARIANCE_CONFLICT_ERROR!>var implicitType2<!> = getT<O>()
var implicitType3 = getT<P>() var implicitType3 = getT<P>()
<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<I>")!>var implicitType4<!> = getT<In<I>>() <!TYPE_VARIANCE_CONFLICT_ERROR!>var implicitType4<!> = getT<In<I>>()
<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<O>")!>var implicitType5<!> = getT<In<O>>() <!TYPE_VARIANCE_CONFLICT_ERROR!>var implicitType5<!> = getT<In<O>>()
<!TYPE_VARIANCE_CONFLICT("I; in; invariant; I")!>var delegateType1<!> by Delegate<I>() <!TYPE_VARIANCE_CONFLICT_ERROR!>var delegateType1<!> by Delegate<I>()
<!TYPE_VARIANCE_CONFLICT("O; out; invariant; O")!>var delegateType2<!> by Delegate<O>() <!TYPE_VARIANCE_CONFLICT_ERROR!>var delegateType2<!> by Delegate<O>()
var delegateType3 by Delegate<P>() var delegateType3 by Delegate<P>()
<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<I>")!>var delegateType4<!> by Delegate<In<I>>() <!TYPE_VARIANCE_CONFLICT_ERROR!>var delegateType4<!> by Delegate<In<I>>()
<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<O>")!>var delegateType5<!> by Delegate<In<O>>() <!TYPE_VARIANCE_CONFLICT_ERROR!>var delegateType5<!> by Delegate<In<O>>()
abstract var I.receiver1: Int abstract var I.receiver1: Int
abstract var <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>.receiver2: Int abstract var <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>.receiver2: Int
abstract var P.receiver3: Int abstract var P.receiver3: Int
abstract var In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>>.receiver4: Int abstract var In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>.receiver4: Int
abstract var In<O>.receiver5: Int abstract var In<O>.receiver5: Int
var <X : I> X.typeParameter1: Int get() = 0; set(i) {} var <X : I> X.typeParameter1: Int get() = 0; set(i) {}
var <X : <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>> X.typeParameter2: Int get() = 0; set(i) {} var <X : <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>> X.typeParameter2: Int get() = 0; set(i) {}
var <X : P> X.typeParameter3: Int get() = 0; set(i) {} var <X : P> X.typeParameter3: Int get() = 0; set(i) {}
var <X : In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>>> X.typeParameter4: Int get() = 0; set(i) {} var <X : In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>> X.typeParameter4: Int get() = 0; set(i) {}
var <X : In<O>> X.typeParameter5: Int get() = 0; set(i) {} var <X : In<O>> X.typeParameter5: Int get() = 0; set(i) {}
var <X> X.typeParameter6: Int where X : I get() = 0; set(i) {} var <X> X.typeParameter6: Int where X : I get() = 0; set(i) {}
var <X> X.typeParameter7: Int where X : <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!> get() = 0; set(i) {} var <X> X.typeParameter7: Int where X : <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!> get() = 0; set(i) {}
var <X> X.typeParameter8: Int where X : P get() = 0; set(i) {} var <X> X.typeParameter8: Int where X : P get() = 0; set(i) {}
var <X> X.typeParameter9: Int where X : In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>> get() = 0; set(i) {} var <X> X.typeParameter9: Int where X : In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>> get() = 0; set(i) {}
var <X> X.typeParameter0: Int where X : In<O> get() = 0; set(i) {} var <X> X.typeParameter0: Int where X : In<O> get() = 0; set(i) {}
} }
+10 -10
View File
@@ -1,21 +1,21 @@
// FIR_IDENTICAL // FIR_IDENTICAL
interface Test<in I, out O> { interface Test<in I, out O> {
val internal_val: <!TYPE_VARIANCE_CONFLICT!>I<!> val internal_val: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
public val public_val: <!TYPE_VARIANCE_CONFLICT!>I<!> public val public_val: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> val protected_val: <!TYPE_VARIANCE_CONFLICT!>I<!> <!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> val protected_val: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
<!PRIVATE_PROPERTY_IN_INTERFACE!>private<!> val private_val: I <!PRIVATE_PROPERTY_IN_INTERFACE!>private<!> val private_val: I
var interlan_private_set: <!TYPE_VARIANCE_CONFLICT!>O<!> var interlan_private_set: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>
<!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set <!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
public var public_private_set: <!TYPE_VARIANCE_CONFLICT!>O<!> public var public_private_set: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>
<!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set <!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> var protected_private_set: <!TYPE_VARIANCE_CONFLICT!>O<!> <!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> var protected_private_set: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>
<!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set <!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
<!PRIVATE_PROPERTY_IN_INTERFACE!>private<!> var private_private_set: O <!PRIVATE_PROPERTY_IN_INTERFACE!>private<!> var private_private_set: O
private set private set
fun internal_fun(i: <!TYPE_VARIANCE_CONFLICT!>O<!>) : <!TYPE_VARIANCE_CONFLICT!>I<!> fun internal_fun(i: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>) : <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
public fun public_fun(i: <!TYPE_VARIANCE_CONFLICT!>O<!>) : <!TYPE_VARIANCE_CONFLICT!>I<!> public fun public_fun(i: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>) : <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> fun protected_fun(i: <!TYPE_VARIANCE_CONFLICT!>O<!>) : <!TYPE_VARIANCE_CONFLICT!>I<!> <!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> fun protected_fun(i: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>) : <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
<!PRIVATE_FUNCTION_WITH_NO_BODY!>private<!> fun private_fun(i: O) : I <!PRIVATE_FUNCTION_WITH_NO_BODY!>private<!> fun private_fun(i: O) : I
} }