Definite returns extracted as a separate issue KT-281
This commit is contained in:
@@ -241,7 +241,7 @@ public class JetTypeInferrer {
|
||||
expectedReturnType = NO_EXPECTED_TYPE;
|
||||
}
|
||||
JetScope functionInnerScope = FunctionDescriptorUtil.getFunctionInnerScope(outerScope, functionDescriptor, trace);
|
||||
checkFunctionReturnType(functionInnerScope, function, expectedReturnType, dataFlowInfo, CoercionStrategy.NO_COERCION);
|
||||
checkFunctionReturnType(functionInnerScope, function, expectedReturnType, dataFlowInfo);
|
||||
// Map<JetElement, JetType> typeMap = collectReturnedExpressionsWithTypes(outerScope, function, functionDescriptor, expectedReturnType);
|
||||
// if (typeMap.isEmpty()) {
|
||||
// return; // The function returns Nothing
|
||||
@@ -276,10 +276,10 @@ public class JetTypeInferrer {
|
||||
}
|
||||
|
||||
public void checkFunctionReturnType(JetScope functionInnerScope, JetDeclarationWithBody function, @NotNull final JetType expectedReturnType) {
|
||||
checkFunctionReturnType(functionInnerScope, function, expectedReturnType, DataFlowInfo.getEmpty(), CoercionStrategy.NO_COERCION);
|
||||
checkFunctionReturnType(functionInnerScope, function, expectedReturnType, DataFlowInfo.getEmpty());
|
||||
}
|
||||
|
||||
private void checkFunctionReturnType(JetScope functionInnerScope, JetDeclarationWithBody function, @NotNull final JetType expectedReturnType, @NotNull DataFlowInfo dataFlowInfo, CoercionStrategy coercionForLastExpression) {
|
||||
private void checkFunctionReturnType(JetScope functionInnerScope, JetDeclarationWithBody function, @NotNull final JetType expectedReturnType, @NotNull DataFlowInfo dataFlowInfo) {
|
||||
JetExpression bodyExpression = function.getBodyExpression();
|
||||
assert bodyExpression != null;
|
||||
|
||||
@@ -935,7 +935,7 @@ public class JetTypeInferrer {
|
||||
JetTypeReference returnTypeRef = functionLiteral.getReturnTypeRef();
|
||||
if (returnTypeRef != null) {
|
||||
returnType = context.typeResolver.resolveType(context.scope, returnTypeRef);
|
||||
context.services.checkFunctionReturnType(functionInnerScope, expression, returnType, context.dataFlowInfo, CoercionStrategy.COERCION_TO_UNIT);
|
||||
context.services.checkFunctionReturnType(functionInnerScope, expression, returnType, context.dataFlowInfo);
|
||||
}
|
||||
else {
|
||||
if (functionTypeExpected) {
|
||||
|
||||
@@ -115,20 +115,6 @@ fun blockReturnValueTypeMatch() : Int {
|
||||
fun blockNoReturnIfValDeclaration(): Int {
|
||||
<error>val x = 1</error>
|
||||
}
|
||||
fun blockNoReturnIfEmptyIf(): Int {
|
||||
if (1 < 2) <error>{}</error> else <error>{}</error>
|
||||
}
|
||||
fun blockNoReturnIfUnitInOneBranch(): Int {
|
||||
if (1 < 2) {
|
||||
return 1
|
||||
} else {
|
||||
if (3 < 4) <error>{
|
||||
}</error> else {
|
||||
return 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val a = <error>return 1</error>
|
||||
|
||||
class A() {
|
||||
|
||||
Reference in New Issue
Block a user