Clarifying comments for RETURN_NOT_ALLOWED

This commit is contained in:
Andrey Breslav
2013-08-16 15:19:28 +04:00
parent b4c7122528
commit 34df845778
@@ -485,6 +485,7 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
JetDeclaration parentDeclaration = PsiTreeUtil.getParentOfType(expression, JetDeclaration.class); JetDeclaration parentDeclaration = PsiTreeUtil.getParentOfType(expression, JetDeclaration.class);
if (parentDeclaration instanceof JetParameter) { if (parentDeclaration instanceof JetParameter) {
// In a default value for parameter
context.trace.report(RETURN_NOT_ALLOWED.on(expression)); context.trace.report(RETURN_NOT_ALLOWED.on(expression));
} }
assert parentDeclaration != null; assert parentDeclaration != null;
@@ -500,6 +501,7 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
containingFunctionDescriptor = DescriptorUtils.getParentOfType(containingFunctionDescriptor, FunctionDescriptor.class); containingFunctionDescriptor = DescriptorUtils.getParentOfType(containingFunctionDescriptor, FunctionDescriptor.class);
containingFunction = containingFunctionDescriptor != null ? BindingContextUtils.callableDescriptorToDeclaration(context.trace.getBindingContext(), containingFunctionDescriptor) : null; containingFunction = containingFunctionDescriptor != null ? BindingContextUtils.callableDescriptorToDeclaration(context.trace.getBindingContext(), containingFunctionDescriptor) : null;
} while (containingFunction instanceof JetFunctionLiteral); } while (containingFunction instanceof JetFunctionLiteral);
// Unqualified, in a function literal
context.trace.report(RETURN_NOT_ALLOWED.on(expression)); context.trace.report(RETURN_NOT_ALLOWED.on(expression));
} }
if (containingFunctionDescriptor != null) { if (containingFunctionDescriptor != null) {
@@ -507,6 +509,7 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
} }
} }
else { else {
// Outside a function
context.trace.report(RETURN_NOT_ALLOWED.on(expression)); context.trace.report(RETURN_NOT_ALLOWED.on(expression));
} }
} }
@@ -515,6 +518,7 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
if (functionDescriptor != null) { if (functionDescriptor != null) {
expectedType = DescriptorUtils.getFunctionExpectedReturnType(functionDescriptor, element); expectedType = DescriptorUtils.getFunctionExpectedReturnType(functionDescriptor, element);
if (functionDescriptor != containingFunctionDescriptor) { if (functionDescriptor != containingFunctionDescriptor) {
// Qualified, non-local
context.trace.report(RETURN_NOT_ALLOWED.on(expression)); context.trace.report(RETURN_NOT_ALLOWED.on(expression));
} }
} }