diff --git a/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java b/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java index c1d06c0081c..e7e5587a9e3 100644 --- a/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -310,14 +310,23 @@ public class JetControlFlowProcessor { value(returnedExpression, false); } JetSimpleNameExpression labelElement = expression.getTargetLabel(); - JetElement subroutine = (labelElement != null) - ? resolveLabel(expression.getLabelName(), expression.getTargetLabel()) - : builder.getCurrentSubroutine(); - if (returnedExpression == null) { - builder.returnNoValue(subroutine); + JetElement subroutine; + if (labelElement != null) { + String labelName = expression.getLabelName(); + assert labelName != null; + subroutine = resolveLabel(labelName, labelElement); } else { - builder.returnValue(subroutine); + subroutine = builder.getCurrentSubroutine(); + // TODO : a context check + } + if (subroutine != null) { + if (returnedExpression == null) { + builder.returnNoValue(subroutine); + } + else { + builder.returnValue(subroutine); + } } } diff --git a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java index 62378b9d10e..06def93c675 100644 --- a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java +++ b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java @@ -1274,7 +1274,7 @@ public class JetTypeInferrer { @Override public void visitFunction(JetFunction function) { - super.visitFunction(function); // TODO + scope.addFunctionDescriptor(classDescriptorResolver.resolveFunctionDescriptor(scope.getContainingDeclaration(), scope, function)); } @Override