Fix reporting of EXPECTING_PARAMETER/RETURN_TYPE_MISMATCH
This commit is contained in:
+2
-2
@@ -215,7 +215,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
if (typeReference != null) {
|
if (typeReference != null) {
|
||||||
type = context.expressionTypingServices.getTypeResolver().resolveType(context.scope, typeReference, context.trace, true);
|
type = context.expressionTypingServices.getTypeResolver().resolveType(context.scope, typeReference, context.trace, true);
|
||||||
if (expectedType != null) {
|
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));
|
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).
|
context.expressionTypingServices.checkFunctionReturnType(expression.getFunctionLiteral(), context.replaceScope(functionInnerScope).
|
||||||
replaceExpectedType(returnType).replaceBindingTrace(temporaryTrace), temporaryTrace);
|
replaceExpectedType(returnType).replaceBindingTrace(temporaryTrace), temporaryTrace);
|
||||||
if (expectedReturnType != null) {
|
if (expectedReturnType != null) {
|
||||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(expectedReturnType, returnType)) {
|
if (!JetTypeChecker.INSTANCE.isSubtypeOf(returnType, expectedReturnType)) {
|
||||||
temporaryTrace.report(EXPECTED_RETURN_TYPE_MISMATCH.on(returnTypeRef, expectedReturnType));
|
temporaryTrace.report(EXPECTED_RETURN_TYPE_MISMATCH.on(returnTypeRef, expectedReturnType));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -8,12 +8,12 @@ fun foo(f: (Trait) -> Trait) = f
|
|||||||
|
|
||||||
fun test(s: Sub) {
|
fun test(s: Sub) {
|
||||||
foo {
|
foo {
|
||||||
(<!EXPECTED_PARAMETER_TYPE_MISMATCH!>t: Super<!>): <!EXPECTED_RETURN_TYPE_MISMATCH!>Sub<!> -> s
|
(t: Super): Sub -> s
|
||||||
}
|
}
|
||||||
foo {
|
foo {
|
||||||
(t: Trait): Trait -> s
|
(t: Trait): Trait -> s
|
||||||
}
|
}
|
||||||
foo {
|
foo {
|
||||||
(t: Sub): Super -> s
|
(<!EXPECTED_PARAMETER_TYPE_MISMATCH!>t: Sub<!>): <!EXPECTED_RETURN_TYPE_MISMATCH!>Super<!> -> s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user