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,
)
}
add(FirErrors.TYPE_VARIANCE_CONFLICT) { firDiagnostic ->
TypeVarianceConflictImpl(
add(FirErrors.TYPE_VARIANCE_CONFLICT_ERROR) { firDiagnostic ->
TypeVarianceConflictErrorImpl(
firSymbolBuilder.classifierBuilder.buildTypeParameterSymbol(firDiagnostic.a),
firDiagnostic.b,
firDiagnostic.c,
@@ -1358,8 +1358,8 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val typeB: KtType
}
abstract class TypeVarianceConflict : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = TypeVarianceConflict::class
abstract class TypeVarianceConflictError : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = TypeVarianceConflictError::class
abstract val typeParameter: KtTypeParameterSymbol
abstract val typeParameterVariance: Variance
abstract val variance: Variance
@@ -1632,14 +1632,14 @@ internal class IncompatibleTypesWarningImpl(
override val token: ValidityToken,
) : KtFirDiagnostic.IncompatibleTypesWarning(), KtAbstractFirDiagnostic<KtElement>
internal class TypeVarianceConflictImpl(
internal class TypeVarianceConflictErrorImpl(
override val typeParameter: KtTypeParameterSymbol,
override val typeParameterVariance: Variance,
override val variance: Variance,
override val containingType: KtType,
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.TypeVarianceConflict(), KtAbstractFirDiagnostic<PsiElement>
) : KtFirDiagnostic.TypeVarianceConflictError(), KtAbstractFirDiagnostic<PsiElement>
internal class TypeVarianceConflictInExpandedTypeImpl(
override val typeParameter: KtTypeParameterSymbol,
@@ -1,7 +1,7 @@
interface List<out T : Any> {
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>
@@ -647,7 +647,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
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<Variance>("typeParameterVariance")
parameter<Variance>("variance")
@@ -401,7 +401,7 @@ object FirErrors {
val DYNAMIC_UPPER_BOUND by error0<KtTypeReference>()
val INCOMPATIBLE_TYPES by error2<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 SMARTCAST_IMPOSSIBLE by error4<KtExpression, ConeKotlinType, FirExpression, String, Boolean>()
val REDUNDANT_NULLABLE by warning0<KtTypeReference>(SourceElementPositioningStrategies.REDUNDANT_NULLABLE)
@@ -118,7 +118,7 @@ object FirClassVarianceChecker : FirClassChecker() {
!fullyExpandedType.attributes.contains(CompilerConeAttributes.UnsafeVariance)
) {
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(
resultSource,
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_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_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.UNCHECKED_CAST
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.UNDERSCORE_IS_RESERVED
@@ -1084,7 +1084,7 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
)
map.put(
TYPE_VARIANCE_CONFLICT,
TYPE_VARIANCE_CONFLICT_ERROR,
"Type parameter {0} is declared as ''{1}'' but occurs in ''{2}'' position in type {3}",
SYMBOL, RENDER_POSITION_VARIANCE, RENDER_POSITION_VARIANCE, RENDER_TYPE
)
@@ -43,6 +43,7 @@ import java.util.List;
import java.util.Map;
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.INCOMPATIBLE_DECLARATION;
import static org.jetbrains.kotlin.diagnostics.PositioningStrategies.*;
@@ -197,10 +198,8 @@ public interface Errors {
DiagnosticFactory1.create(ERROR, VARIANCE_IN_PROJECTION);
DiagnosticFactory1<KtTypeProjection, ClassifierDescriptor> REDUNDANT_PROJECTION =
DiagnosticFactory1.create(WARNING, VARIANCE_IN_PROJECTION);
DiagnosticFactory1<PsiElement, VarianceConflictDiagnosticData> TYPE_VARIANCE_CONFLICT =
DiagnosticFactory1.create(ERROR, DECLARATION_SIGNATURE_OR_DEFAULT);
DiagnosticFactory1<PsiElement, VarianceConflictDiagnosticData> TYPE_VARIANCE_CONFLICT_WARNING =
DiagnosticFactory1.create(WARNING, DECLARATION_SIGNATURE_OR_DEFAULT);
DiagnosticFactoryForDeprecation1<PsiElement, VarianceConflictDiagnosticData> TYPE_VARIANCE_CONFLICT =
DiagnosticFactoryForDeprecation1.create(LanguageFeature.ReportTypeVarianceConflictOnQualifierArguments, DECLARATION_SIGNATURE_OR_DEFAULT);
DiagnosticFactory1<PsiElement, VarianceConflictDiagnosticData> TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE =
DiagnosticFactory1.create(ERROR, DECLARATION_SIGNATURE_OR_DEFAULT);
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}",
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}",
varianceConflictDataRenderer);
@@ -18,9 +18,8 @@ package org.jetbrains.kotlin.resolve
import com.intellij.psi.PsiElement
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.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.impl.FunctionDescriptorImpl
import org.jetbrains.kotlin.descriptors.impl.PropertyAccessorDescriptorImpl
@@ -157,19 +156,20 @@ class VarianceCheckerCore(
&& !type.annotations.hasAnnotation(StandardNames.FqNames.unsafeVariance)
) {
val varianceConflictDiagnosticData = VarianceConflictDiagnosticData(containingType, classifierDescriptor, position)
val diagnostic =
when {
isArgumentFromQualifier -> {
if (languageVersionSettings?.supportsFeature(ReportTypeVarianceConflictOnQualifierArguments) == true) {
Errors.TYPE_VARIANCE_CONFLICT
} else {
Errors.TYPE_VARIANCE_CONFLICT_WARNING
}
}
isInAbbreviation -> Errors.TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE
else -> Errors.TYPE_VARIANCE_CONFLICT
}
diagnosticSink.report(diagnostic.on(psiElement, varianceConflictDiagnosticData))
when {
isArgumentFromQualifier ->
diagnosticSink.report(
Errors.TYPE_VARIANCE_CONFLICT.on(
languageVersionSettings ?: LanguageVersionSettingsImpl.DEFAULT,
psiElement,
varianceConflictDiagnosticData
)
)
isInAbbreviation ->
diagnosticSink.report(Errors.TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE.on(psiElement, varianceConflictDiagnosticData))
else ->
diagnosticSink.report(Errors.TYPE_VARIANCE_CONFLICT.errorFactory.on(psiElement, varianceConflictDiagnosticData))
}
}
return declarationVariance.allowsPosition(position)
}
@@ -178,11 +178,10 @@ class VarianceCheckerCore(
for (argument in arguments) {
if (argument?.typeParameter == null || argument.projection.isStarProjection) continue
val projectionKind = TypeCheckingProcedure.getEffectiveProjectionKind(argument.typeParameter!!, argument.projection)!!
val newPosition = when (projectionKind) {
val newPosition = when (TypeCheckingProcedure.getEffectiveProjectionKind(argument.typeParameter!!, argument.projection)!!) {
EnrichedProjectionKind.OUT -> position
EnrichedProjectionKind.IN -> position.opposite()
EnrichedProjectionKind.INV -> Variance.INVARIANT
EnrichedProjectionKind.INV -> INVARIANT
EnrichedProjectionKind.STAR -> null // CONFLICTING_PROJECTION error was reported
}
if (newPosition != null) {
@@ -2,10 +2,10 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class Outer<out E, in F> {
inner class Inner {
fun unsafe1(x: <!TYPE_VARIANCE_CONFLICT!>E<!>) {}
fun unsafe2(x: Collection<<!TYPE_VARIANCE_CONFLICT!>E?<!>>) {}
fun unsafe3(): <!TYPE_VARIANCE_CONFLICT!>F?<!> = null
fun unsafe4(): Collection<<!TYPE_VARIANCE_CONFLICT!>F<!>>? = null
fun unsafe1(x: <!TYPE_VARIANCE_CONFLICT_ERROR!>E<!>) {}
fun unsafe2(x: Collection<<!TYPE_VARIANCE_CONFLICT_ERROR!>E?<!>>) {}
fun unsafe3(): <!TYPE_VARIANCE_CONFLICT_ERROR!>F?<!> = null
fun unsafe4(): Collection<<!TYPE_VARIANCE_CONFLICT_ERROR!>F<!>>? = null
}
// Should be errors
@@ -8,16 +8,16 @@ class Bar<K> {
abstract class Foo<in T> {
abstract fun yuckyEventHandler(
fn: Bar<<!TYPE_VARIANCE_CONFLICT!>T<!>>.Inner.() -> Unit
fn: Bar<<!TYPE_VARIANCE_CONFLICT_ERROR!>T<!>>.Inner.() -> 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 fun yuckyEventHandler(
fn: Bar<<!TYPE_VARIANCE_CONFLICT!>T<!>>.Inner.() -> Unit
fn: Bar<<!TYPE_VARIANCE_CONFLICT_ERROR!>T<!>>.Inner.() -> Unit
): () -> Unit
}
@@ -7,6 +7,6 @@ class Bar<K> {
abstract class Foo<in T> {
abstract fun yuckyEventHandler(
fn: Bar<<!TYPE_VARIANCE_CONFLICT!>T<!>>.Inner.() -> Unit
fn: Bar<<!TYPE_VARIANCE_CONFLICT_ERROR!>T<!>>.Inner.() -> Unit
): () -> Unit
}
+2 -2
View File
@@ -9,9 +9,9 @@ interface Super<out U> {
}
// Related variance errors
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
}
<!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
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
}
@@ -7,5 +7,5 @@ typealias A4<E> = Out<Inv<E>>
interface Q1<out S> : Out<A1<S>>
interface Q2<out S> : Out<A2<S>>
interface Q3<out S> : Out<A3<<!TYPE_VARIANCE_CONFLICT!>S<!>>>
interface Q4<out S> : Out<A4<<!TYPE_VARIANCE_CONFLICT!>S<!>>>
interface Q3<out S> : Out<A3<<!TYPE_VARIANCE_CONFLICT_ERROR!>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 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 TypeBounds3<in I, out O, P, X : P>
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 WhereTypeBounds3<in I, out O, P, X> where X : P
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 SubClass3<in I, out O, P> : Out<P>
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 SubClass6<in I, out O, P> : Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>>
class SubClass7<in I, out O, P> : Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>>
class SubClass5<in I, out O, P> : In<<!TYPE_VARIANCE_CONFLICT_ERROR!>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_ERROR!>I<!>>
+10 -10
View File
@@ -5,31 +5,31 @@ interface Inv<T>
fun <T> getT(): T = null!!
interface Test<in I, out O, P> {
fun parameters1(i: I, o: <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>, p: P)
fun parameters2(i: In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>>)
fun parameters1(i: I, o: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>, p: P)
fun parameters2(i: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
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 explicitReturnType3() : P
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 imlicitReturnType3() = getT<P>()
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 <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>.receiver2()
fun <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>.receiver2()
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 <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 : 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()
}
@@ -7,7 +7,7 @@ interface Test<in I, out O, P> {
fun ok2(i: (P) -> P) : (P) -> P
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 neOk2(i: (In<<!TYPE_VARIANCE_CONFLICT!>O<!>>) -> In<<!TYPE_VARIANCE_CONFLICT!>I<!>>)
<!TYPE_VARIANCE_CONFLICT, TYPE_VARIANCE_CONFLICT!>fun neOk3()<!> = getT<(In<I>) -> In<O>>()
}
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_ERROR!>O<!>>) -> In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
<!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 Ok23(i: Inv<out P>)
fun neOk1(i: <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>)
fun neOk2(i: In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>>)
fun neOk3(i: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<In<O>>")!>O<!>>>)
fun neOk4(i: Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>>)
fun neOk5(i: Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>>)
fun neOk6(i: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<In<O>>")!>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 neOk8(i: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<out O>")!>O<!>>)
fun neOk1(i: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>)
fun neOk2(i: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun neOk3(i: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>)
fun neOk4(i: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun neOk5(i: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk6(i: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>)
fun neOk7(i: Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk8(i: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
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 neOk12(i: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<out O>")!>O<!>>)
fun neOk11(i: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun neOk12(i: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>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 neOk33(i: Inv<<!SYNTAX!><!>>)
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 Ok23(i: Inv<out P>)
fun neOk1(i: <!TYPE_VARIANCE_CONFLICT("O; out; in; O")!>O<!>)
fun neOk2(i: In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<I>")!>I<!>>)
fun neOk3(i: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<In<O>>")!>O<!>>>)
fun neOk4(i: Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>>)
fun neOk5(i: Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>>)
fun neOk6(i: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<In<O>>")!>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 neOk8(i: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<out O>")!>O<!>>)
fun neOk1(i: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>)
fun neOk2(i: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun neOk3(i: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>)
fun neOk4(i: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun neOk5(i: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk6(i: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>)
fun neOk7(i: Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
fun neOk8(i: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
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 neOk12(i: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<out O>")!>O<!>>)
fun neOk11(i: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>)
fun neOk12(i: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>)
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 neOk33(i: Inv<<!SYNTAX!><!>>)
fun neOk34(i: Inv<<!UNRESOLVED_REFERENCE!>C<!>>)
@@ -14,32 +14,32 @@ interface Test<in I, out O, P> {
var ok6: Inv<in P>
var ok7: Inv<out P>
var neOk1: <!TYPE_VARIANCE_CONFLICT("O; out; invariant; O")!>O<!>
var neOk2: In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<I>")!>I<!>>
var neOk3: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<In<O>>")!>O<!>>>
var neOk4: Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>>
var neOk5: Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>>
var neOk6: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<In<O>>")!>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 neOk8: Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<in O>")!>O<!>>
var neOk9: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<in I>")!>I<!>>
var neOk1: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>
var neOk2: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk3: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
var neOk4: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk5: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk6: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
var neOk7: Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk8: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk9: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk10: In<<!CONFLICTING_PROJECTION!>out<!> I>
var neOk11: <!TYPE_VARIANCE_CONFLICT("I; in; invariant; I")!>I<!>
var neOk12: In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<O>")!>O<!>>
var neOk13: In<In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<In<I>>")!>I<!>>>
var neOk14: Out<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Out<I>")!>I<!>>
var neOk15: Out<Out<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Out<Out<I>>")!>I<!>>>
var neOk16: Out<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Out<In<O>>")!>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 neOk11: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
var neOk12: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk13: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>>
var neOk14: Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk15: Out<Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>>
var neOk16: Out<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
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 neOk21: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<in I>")!>I<!>>
var neOk22: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<out O>")!>O<!>>
var neOk23: Inv<out <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<out I>")!>I<!>>
var neOk20: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk21: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk22: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk23: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>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 neOk33: Inv<<!SYNTAX!><!>>
var neOk34: Inv<<!UNRESOLVED_REFERENCE!>C<!>>
@@ -14,32 +14,32 @@ interface Test<in I, out O, P> {
var ok6: Inv<in P>
var ok7: Inv<out P>
var neOk1: <!TYPE_VARIANCE_CONFLICT("O; out; invariant; O")!>O<!>
var neOk2: In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<I>")!>I<!>>
var neOk3: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<In<O>>")!>O<!>>>
var neOk4: Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>>
var neOk5: Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>>
var neOk6: In<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<In<O>>")!>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 neOk8: Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<in O>")!>O<!>>
var neOk9: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<in I>")!>I<!>>
var neOk1: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>
var neOk2: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk3: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
var neOk4: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk5: Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk6: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
var neOk7: Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk8: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk9: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk10: In<<!CONFLICTING_PROJECTION!>out<!> I>
var neOk11: <!TYPE_VARIANCE_CONFLICT("I; in; invariant; I")!>I<!>
var neOk12: In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<O>")!>O<!>>
var neOk13: In<In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<In<I>>")!>I<!>>>
var neOk14: Out<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Out<I>")!>I<!>>
var neOk15: Out<Out<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Out<Out<I>>")!>I<!>>>
var neOk16: Out<In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Out<In<O>>")!>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 neOk11: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
var neOk12: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk13: In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>>
var neOk14: Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk15: Out<Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>>
var neOk16: Out<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>>
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 neOk21: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<in I>")!>I<!>>
var neOk22: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<out O>")!>O<!>>
var neOk23: Inv<out <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<out I>")!>I<!>>
var neOk20: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk21: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
var neOk22: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
var neOk23: Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
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 neOk33: Inv<<!SYNTAX!><!>>
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 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 neOk(i: Out<<!TYPE_VARIANCE_CONFLICT("O; out; in; Out<O?>?")!>O?<!>>?) : In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O?>?")!>O?<!>>?
fun neOk3(i: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; out; Inv<in I?>")!>I?<!>>)
<!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<in O?>?")!>fun neOk4()<!> = getT<Inv<in O?>?>()
fun neOk1(i: <!TYPE_VARIANCE_CONFLICT_ERROR!>O?<!>) : <!TYPE_VARIANCE_CONFLICT_ERROR!>I?<!>
fun neOk(i: Out<<!TYPE_VARIANCE_CONFLICT_ERROR!>O?<!>>?) : In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O?<!>>?
fun neOk3(i: Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>I?<!>>)
<!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 ok13(): Inv<out P>
fun neOk1(): <!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>I<!>
fun neOk2(): In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>O<!>>
fun neOk3(): In<In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<In<I>>")!>I<!>>>
fun neOk4(): Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>>
fun neOk5(): Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>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 neOk7(): Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<in O>")!>O<!>>
fun neOk1(): <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
fun neOk2(): In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk3(): In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>>
fun neOk4(): Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
fun neOk5(): Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk6(): Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
fun neOk7(): Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
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 neOk11(): Inv<out <!TYPE_VARIANCE_CONFLICT("I; in; out; Inv<out I>")!>I<!>>
fun neOk10(): Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk11(): Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>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 neOk33(): Inv<<!SYNTAX!><!>>
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 ok13(): Inv<out P>
fun neOk1(): <!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>I<!>
fun neOk2(): In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>O<!>>
fun neOk3(): In<In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<In<I>>")!>I<!>>>
fun neOk4(): Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>>
fun neOk5(): Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>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 neOk7(): Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<in O>")!>O<!>>
fun neOk1(): <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
fun neOk2(): In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk3(): In<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>>
fun neOk4(): Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
fun neOk5(): Inv<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk6(): Pair<In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>, <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
fun neOk7(): Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk8(): Out<<!CONFLICTING_PROJECTION("Out")!>in<!> I>
fun neOk10(): Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<in O>")!>O<!>>
fun neOk11(): Inv<out <!TYPE_VARIANCE_CONFLICT("I; in; out; Inv<out I>")!>I<!>>
fun neOk10(): Inv<in <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
fun neOk11(): Inv<out <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
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 neOk33(): Inv<<!SYNTAX!><!>>
fun neOk34(): Inv<<!UNRESOLVED_REFERENCE!>C<!>>
@@ -6,17 +6,17 @@ interface Inv<T>
fun <T> getT(): T = null!!
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 type3: P,
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 type7: <!TYPE_VARIANCE_CONFLICT("O; out; invariant; O")!>O<!>,
var type6: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>,
var type7: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>,
var type8: P,
var type9: In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<I>")!>I<!>>,
var type0: In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<O>")!>O<!>>,
var type9: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>,
var type0: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>,
type11: I,
type12: O,
+12 -12
View File
@@ -13,39 +13,39 @@ class Delegate<T> {
fun <T> getT(): T = null!!
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 type3: P
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 implicitType3 = getT<P>()
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 delegateType3 by Delegate<P>()
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 <!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 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
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 : 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> 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.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
}
+18 -18
View File
@@ -13,39 +13,39 @@ class Delegate<T> {
fun <T> getT(): T = null!!
abstract class Test<in I, out O, P> {
abstract var type1: <!TYPE_VARIANCE_CONFLICT("I; in; invariant; I")!>I<!>
abstract var type2: <!TYPE_VARIANCE_CONFLICT("O; out; invariant; O")!>O<!>
abstract var type1: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
abstract var type2: <!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>
abstract var type3: P
abstract var type4: In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<I>")!>I<!>>
abstract var type5: In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<O>")!>O<!>>
abstract var type4: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>>
abstract var type5: In<<!TYPE_VARIANCE_CONFLICT_ERROR!>O<!>>
<!TYPE_VARIANCE_CONFLICT("I; in; invariant; I")!>var implicitType1<!> = getT<I>()
<!TYPE_VARIANCE_CONFLICT("O; out; invariant; O")!>var implicitType2<!> = getT<O>()
<!TYPE_VARIANCE_CONFLICT_ERROR!>var implicitType1<!> = getT<I>()
<!TYPE_VARIANCE_CONFLICT_ERROR!>var implicitType2<!> = getT<O>()
var implicitType3 = getT<P>()
<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<I>")!>var implicitType4<!> = getT<In<I>>()
<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<O>")!>var implicitType5<!> = getT<In<O>>()
<!TYPE_VARIANCE_CONFLICT_ERROR!>var implicitType4<!> = getT<In<I>>()
<!TYPE_VARIANCE_CONFLICT_ERROR!>var implicitType5<!> = getT<In<O>>()
<!TYPE_VARIANCE_CONFLICT("I; in; invariant; I")!>var delegateType1<!> by Delegate<I>()
<!TYPE_VARIANCE_CONFLICT("O; out; invariant; O")!>var delegateType2<!> by Delegate<O>()
<!TYPE_VARIANCE_CONFLICT_ERROR!>var delegateType1<!> by Delegate<I>()
<!TYPE_VARIANCE_CONFLICT_ERROR!>var delegateType2<!> by Delegate<O>()
var delegateType3 by Delegate<P>()
<!TYPE_VARIANCE_CONFLICT("I; in; invariant; In<I>")!>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 delegateType4<!> by Delegate<In<I>>()
<!TYPE_VARIANCE_CONFLICT_ERROR!>var delegateType5<!> by Delegate<In<O>>()
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 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
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 : 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> 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.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) {}
}
+10 -10
View File
@@ -1,21 +1,21 @@
// FIR_IDENTICAL
interface Test<in I, out O> {
val internal_val: <!TYPE_VARIANCE_CONFLICT!>I<!>
public val public_val: <!TYPE_VARIANCE_CONFLICT!>I<!>
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> val protected_val: <!TYPE_VARIANCE_CONFLICT!>I<!>
val internal_val: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
public val public_val: <!TYPE_VARIANCE_CONFLICT_ERROR!>I<!>
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> val protected_val: <!TYPE_VARIANCE_CONFLICT_ERROR!>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
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
<!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_PROPERTY_IN_INTERFACE!>private<!> var private_private_set: O
private set
fun internal_fun(i: <!TYPE_VARIANCE_CONFLICT!>O<!>) : <!TYPE_VARIANCE_CONFLICT!>I<!>
public fun public_fun(i: <!TYPE_VARIANCE_CONFLICT!>O<!>) : <!TYPE_VARIANCE_CONFLICT!>I<!>
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> fun protected_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_ERROR!>O<!>) : <!TYPE_VARIANCE_CONFLICT_ERROR!>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
}
}