This commit is contained in:
svtk
2011-11-21 19:28:13 +04:00
parent a7a5fa852e
commit 5fa9cbdf76
3 changed files with 4 additions and 4 deletions
@@ -89,7 +89,7 @@ public class FunctionDescriptorUtil {
ReceiverDescriptor.NO_RECEIVER, ReceiverDescriptor.NO_RECEIVER,
Collections.<TypeParameterDescriptor>emptyList(), Collections.<TypeParameterDescriptor>emptyList(),
JetStandardClasses.getValueParameters(functionDescriptor, functionType), JetStandardClasses.getValueParameters(functionDescriptor, functionType),
JetStandardClasses.obtainReturnTypeFromFunctionType(functionType), JetStandardClasses.getReturnTypeFromFunctionType(functionType),
Modality.FINAL, Visibility.LOCAL); Modality.FINAL, Visibility.LOCAL);
} }
} }
@@ -385,7 +385,7 @@ public class JetStandardClasses {
} }
@NotNull @NotNull
public static JetType obtainReturnTypeFromFunctionType(@NotNull JetType type) { public static JetType getReturnTypeFromFunctionType(@NotNull JetType type) {
assert isFunctionType(type); assert isFunctionType(type);
List<TypeProjection> arguments = type.getArguments(); List<TypeProjection> arguments = type.getArguments();
return arguments.get(arguments.size() - 1).getType(); return arguments.get(arguments.size() - 1).getType();
@@ -88,7 +88,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor {
} }
else { else {
if (functionTypeExpected) { if (functionTypeExpected) {
returnType = JetStandardClasses.obtainReturnTypeFromFunctionType(expectedType); returnType = JetStandardClasses.getReturnTypeFromFunctionType(expectedType);
} }
returnType = context.getServices().getBlockReturnedType(functionInnerScope, bodyExpression, CoercionStrategy.COERCION_TO_UNIT, returnType = context.getServices().getBlockReturnedType(functionInnerScope, bodyExpression, CoercionStrategy.COERCION_TO_UNIT,
context.replaceExpectedType(returnType).replaceExpectedReturnType(returnType)); context.replaceExpectedType(returnType).replaceExpectedReturnType(returnType));
@@ -98,7 +98,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor {
boolean hasDeclaredValueParameters = functionLiteral.getValueParameterList() != null; boolean hasDeclaredValueParameters = functionLiteral.getValueParameterList() != null;
if (!hasDeclaredValueParameters && functionTypeExpected) { if (!hasDeclaredValueParameters && functionTypeExpected) {
JetType expectedReturnType = JetStandardClasses.obtainReturnTypeFromFunctionType(expectedType); JetType expectedReturnType = JetStandardClasses.getReturnTypeFromFunctionType(expectedType);
if (JetStandardClasses.isUnit(expectedReturnType)) { if (JetStandardClasses.isUnit(expectedReturnType)) {
functionDescriptor.setReturnType(JetStandardClasses.getUnitType()); functionDescriptor.setReturnType(JetStandardClasses.getUnitType());
return DataFlowUtils.checkType(JetStandardClasses.getFunctionType(Collections.<AnnotationDescriptor>emptyList(), receiver, parameterTypes, JetStandardClasses.getUnitType()), expression, context); return DataFlowUtils.checkType(JetStandardClasses.getFunctionType(Collections.<AnnotationDescriptor>emptyList(), receiver, parameterTypes, JetStandardClasses.getUnitType()), expression, context);