diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java index 1f8d88ae665f..969dfdbcd6b7 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java @@ -42,8 +42,10 @@ import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static com.intellij.openapi.util.Conditions.notInstanceOf; import static com.intellij.patterns.PsiJavaPatterns.*; import static com.intellij.patterns.StandardPatterns.not; +import static com.intellij.psi.SyntaxTraverser.psiApi; public class JavaKeywordCompletion { public static final ElementPattern AFTER_DOT = psiElement().afterLeaf("."); @@ -668,6 +670,10 @@ public class JavaKeywordCompletion { if (psiElement().inside(PsiSwitchStatement.class).accepts(position)) { result.consume(br); } + + for (PsiLabeledStatement labeled : psiApi().parents(position).takeWhile(notInstanceOf(PsiMember.class)).filter(PsiLabeledStatement.class)) { + result.consume(TailTypeDecorator.withTail(LookupElementBuilder.create("break " + labeled.getName()).bold(), TailType.SEMICOLON)); + } } private static boolean isStatementPosition(PsiElement position) { diff --git a/java/java-tests/testData/codeInsight/completion/keywords/breakInLabeledBlock.java b/java/java-tests/testData/codeInsight/completion/keywords/breakInLabeledBlock.java new file mode 100644 index 000000000000..d53e2174e7c3 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/keywords/breakInLabeledBlock.java @@ -0,0 +1,7 @@ +public class Class2 { + void foo() { + label: { + + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/KeywordCompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/KeywordCompletionTest.java index ddc784b08a25..f8896492654c 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/KeywordCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/KeywordCompletionTest.java @@ -137,6 +137,7 @@ public class KeywordCompletionTest extends LightCompletionTestCase { public void testArrayClass() throws Throwable { doTest(1, "class", "interface"); } public void testIntInGenerics() throws Throwable { doTest(2, "int", "char", "final"); } public void testIntInGenerics2() throws Throwable { doTest(2, "int", "char", "final"); } + public void testBreakInLabeledBlock() { doTest(1, "break label", "continue"); } public void testTryInExpression() throws Exception { configureByFile(BASE_PATH + "/" + getTestName(true) + ".java");