mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
groovy break, continue highlighting fix
This commit is contained in:
@@ -218,7 +218,7 @@ public class GroovyAnnotator implements Annotator {
|
||||
private static void checkLabeledStatement(GrLabeledStatement statement, AnnotationHolder holder) {
|
||||
final String name = statement.getLabelName();
|
||||
if (ResolveUtil.resolveLabeledStatement(name, statement, true) != null) {
|
||||
holder.createErrorAnnotation(statement.getLabel(), GroovyBundle.message("label.already.used", name));
|
||||
holder.createWarningAnnotation(statement.getLabel(), GroovyBundle.message("label.already.used", name));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,20 +232,18 @@ public class GroovyAnnotator implements Annotator {
|
||||
}
|
||||
}
|
||||
|
||||
final PsiElement targetStatement = statement.findTargetStatement();
|
||||
final GrStatement targetStatement = statement.findTargetStatement();
|
||||
if (targetStatement == null) {
|
||||
if (statement instanceof GrContinueStatement && label == null) {
|
||||
holder.createErrorAnnotation(statement, GroovyBundle.message("continue.outside.loop"));
|
||||
}
|
||||
else if (statement instanceof GrBreakStatement) {
|
||||
if (label == null) {
|
||||
holder.createErrorAnnotation(statement, GroovyBundle.message("break.outside.loop.or.switch"));
|
||||
}
|
||||
else if (findFirstLoop(statement) == null) {
|
||||
holder.createErrorAnnotation(statement, GroovyBundle.message("break.outside.loop"));
|
||||
}
|
||||
else if (statement instanceof GrBreakStatement && label == null) {
|
||||
holder.createErrorAnnotation(statement, GroovyBundle.message("break.outside.loop.or.switch"));
|
||||
}
|
||||
}
|
||||
if (statement instanceof GrBreakStatement && label != null && findFirstLoop(statement) == null) {
|
||||
holder.createErrorAnnotation(statement, GroovyBundle.message("break.outside.loop"));
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -241,8 +241,8 @@ public class ResolveUtil {
|
||||
do {
|
||||
PsiElement last = element;
|
||||
element = element.getParent();
|
||||
if (element == null || element instanceof GrMember || element instanceof GrClosableBlock || element instanceof GroovyFile) break;
|
||||
if (element instanceof GrStatement) {
|
||||
if (element == null || element instanceof GrMember || element instanceof GroovyFile) break;
|
||||
if (element instanceof GrStatement && !(element instanceof GrClosableBlock)) {
|
||||
statement = (GrStatement)element;
|
||||
}
|
||||
PsiElement sibling = element;
|
||||
@@ -253,6 +253,7 @@ public class ResolveUtil {
|
||||
}
|
||||
sibling = sibling.getPrevSibling();
|
||||
}
|
||||
if (element instanceof GrClosableBlock) break;
|
||||
}
|
||||
while (true);
|
||||
return new Pair<GrStatement, GrLabeledStatement>(null, null);
|
||||
|
||||
Reference in New Issue
Block a user