diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java index 052ce5f1aa4..68c21d8ce92 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java @@ -215,7 +215,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor { if (typeReference != null) { type = context.expressionTypingServices.getTypeResolver().resolveType(context.scope, typeReference, context.trace, true); if (expectedType != null) { - if (!JetTypeChecker.INSTANCE.isSubtypeOf(type, expectedType)) { + if (!JetTypeChecker.INSTANCE.isSubtypeOf(expectedType, type)) { context.trace.report(EXPECTED_PARAMETER_TYPE_MISMATCH.on(declaredParameter, expectedType)); } } @@ -280,7 +280,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor { context.expressionTypingServices.checkFunctionReturnType(expression.getFunctionLiteral(), context.replaceScope(functionInnerScope). replaceExpectedType(returnType).replaceBindingTrace(temporaryTrace), temporaryTrace); if (expectedReturnType != null) { - if (!JetTypeChecker.INSTANCE.isSubtypeOf(expectedReturnType, returnType)) { + if (!JetTypeChecker.INSTANCE.isSubtypeOf(returnType, expectedReturnType)) { temporaryTrace.report(EXPECTED_RETURN_TYPE_MISMATCH.on(returnTypeRef, expectedReturnType)); } } diff --git a/compiler/testData/diagnostics/tests/functionLiterals/ExpectedParameterTypeMismatchVariance.kt b/compiler/testData/diagnostics/tests/functionLiterals/ExpectedParameterTypeMismatchVariance.kt index 26796bbb4d8..1cadc4052fc 100644 --- a/compiler/testData/diagnostics/tests/functionLiterals/ExpectedParameterTypeMismatchVariance.kt +++ b/compiler/testData/diagnostics/tests/functionLiterals/ExpectedParameterTypeMismatchVariance.kt @@ -8,12 +8,12 @@ fun foo(f: (Trait) -> Trait) = f fun test(s: Sub) { foo { - (t: Super): Sub -> s + (t: Super): Sub -> s } foo { (t: Trait): Trait -> s } foo { - (t: Sub): Super -> s + (t: Sub): Super -> s } }