Local functions allowed by the typechecker. Unresolved labels tolerated by the CF builder
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user