LabelResolver refactoring: removed 'reportUnresolved' parameter

This commit is contained in:
Svetlana Isakova
2014-05-12 19:28:53 +04:00
parent 2952ff558a
commit 8c8db832f1
@@ -114,7 +114,7 @@ public class LabelResolver {
} }
@Nullable @Nullable
private JetElement resolveControlLabel(@NotNull Name labelName, @NotNull JetSimpleNameExpression labelExpression, boolean reportUnresolved, ExpressionTypingContext context) { private JetElement resolveControlLabel(@NotNull Name labelName, @NotNull JetSimpleNameExpression labelExpression, ExpressionTypingContext context) {
Collection<DeclarationDescriptor> declarationsByLabel = context.scope.getDeclarationsByLabel(labelName); Collection<DeclarationDescriptor> declarationsByLabel = context.scope.getDeclarationsByLabel(labelName);
int size = declarationsByLabel.size(); int size = declarationsByLabel.size();
@@ -131,7 +131,11 @@ public class LabelResolver {
return element; return element;
} }
else if (size == 0) { else if (size == 0) {
return resolveNamedLabel(labelName, labelExpression, reportUnresolved, context); JetElement element = resolveNamedLabel(labelName, labelExpression, context);
if (element == null) {
context.trace.report(UNRESOLVED_REFERENCE.on(labelExpression, labelExpression));
}
return element;
} }
BindingContextUtils.reportAmbiguousLabel(context.trace, labelExpression, declarationsByLabel); BindingContextUtils.reportAmbiguousLabel(context.trace, labelExpression, declarationsByLabel);
return null; return null;
@@ -142,20 +146,16 @@ public class LabelResolver {
JetSimpleNameExpression labelElement = expression.getTargetLabel(); JetSimpleNameExpression labelElement = expression.getTargetLabel();
if (labelElement != null) { if (labelElement != null) {
Name labelName = Name.identifierForLabel(expression.getLabelName()); Name labelName = Name.identifierForLabel(expression.getLabelName());
return resolveControlLabel(labelName, labelElement, true, context); return resolveControlLabel(labelName, labelElement, context);
} }
return null; return null;
} }
private JetElement resolveNamedLabel(@NotNull Name labelName, @NotNull JetSimpleNameExpression labelExpression, boolean reportUnresolved, ExpressionTypingContext context) { private JetElement resolveNamedLabel(@NotNull Name labelName, @NotNull JetSimpleNameExpression labelExpression, ExpressionTypingContext context) {
List<JetElement> list = getElementsByLabelName(labelName, labelExpression); List<JetElement> list = getElementsByLabelName(labelName, labelExpression);
if (list.isEmpty()) { if (list.isEmpty()) return null;
if (reportUnresolved) {
context.trace.report(UNRESOLVED_REFERENCE.on(labelExpression, labelExpression)); if (list.size() > 1) {
}
return null;
}
else if (list.size() > 1) {
context.trace.report(LABEL_NAME_CLASH.on(labelExpression)); context.trace.report(LABEL_NAME_CLASH.on(labelExpression));
} }
@@ -202,7 +202,7 @@ public class LabelResolver {
return LabeledReceiverResolutionResult.labelResolutionSuccess(thisReceiver); return LabeledReceiverResolutionResult.labelResolutionSuccess(thisReceiver);
} }
else if (size == 0) { else if (size == 0) {
JetElement element = resolveNamedLabel(labelName, targetLabel, false, context); JetElement element = resolveNamedLabel(labelName, targetLabel, context);
if (element instanceof JetFunctionLiteral) { if (element instanceof JetFunctionLiteral) {
DeclarationDescriptor declarationDescriptor = DeclarationDescriptor declarationDescriptor =
context.trace.getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, element); context.trace.getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, element);