diff --git a/java/java-impl/src/com/intellij/psi/impl/source/tree/injected/JavadocInjector.java b/java/java-impl/src/com/intellij/psi/impl/source/tree/injected/JavadocInjector.java index a3f0ee8dfa5b..b09b0e4cb0fa 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/tree/injected/JavadocInjector.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/tree/injected/JavadocInjector.java @@ -30,8 +30,13 @@ public class JavadocInjector implements MultiHostInjector { final PsiSnippetDocTagImpl snippet = (PsiSnippetDocTagImpl)context; - registrar.startInjecting(getLanguage(snippet)) - .addPlace(null, null, snippet, innerRangeStrippingQuotes(snippet)) + final Language language = getLanguage(snippet); + + final String prefix = language == JavaLanguage.INSTANCE ? "class ___JavadocSnippetPlaceholder { " : null; + final String suffix = language == JavaLanguage.INSTANCE ? " }" : null; + + registrar.startInjecting(language) + .addPlace(prefix, suffix, snippet, innerRangeStrippingQuotes(snippet)) .doneInjecting(); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/Snippet.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/Snippet.java index e767515432b2..7e4e070cbaf5 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/Snippet.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/Snippet.java @@ -1,5 +1,5 @@ /** {@snippet : - * Body + * Body * } */ class A { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/SnippetInstructions.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/SnippetInstructions.java new file mode 100644 index 000000000000..026a5809f936 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/SnippetInstructions.java @@ -0,0 +1,11 @@ +/** {@snippet : + * { + * Optional v = null; + * if (v.isPresent()) { + * System.out.println("v: " + v.get()); + * } + * } + * } + */ +class A { +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/SnippetMethod.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/SnippetMethod.java new file mode 100644 index 000000000000..9b4c0a77a9c9 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/SnippetMethod.java @@ -0,0 +1,6 @@ +/** {@snippet : + * void f() {} + * } + */ +class A { +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/JavadocHighlightingTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/JavadocHighlightingTest.java index 4deec4935a0a..834f39a574e8 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/JavadocHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/JavadocHighlightingTest.java @@ -127,6 +127,8 @@ public class JavadocHighlightingTest extends LightDaemonAnalyzerTestCase { public void testThrowsInheritDoc() { doTest(); } public void testSnippetInlineTag() { doTest(); } public void testSnippet() { doTest(); } + public void testSnippetMethod() { doTest(); } + public void testSnippetInstructions() { doTest(); } public void testIssueLinksInJavaDoc() { IssueNavigationConfiguration navigationConfiguration = IssueNavigationConfiguration.getInstance(getProject()); @@ -143,7 +145,7 @@ public class JavadocHighlightingTest extends LightDaemonAnalyzerTestCase { } else { List refs = PlatformTestUtil.collectWebReferences(getFile()); - assertTrue(refs.stream().allMatch(PsiReferenceBase::isSoft)); + assertTrue(ContainerUtil.and(refs, PsiReferenceBase::isSoft)); assertEquals(expected, ContainerUtil.map(refs, WebReference::getUrl)); } } @@ -165,7 +167,7 @@ public class JavadocHighlightingTest extends LightDaemonAnalyzerTestCase { } else { List refs = PlatformTestUtil.collectWebReferences(getFile()); - assertTrue(refs.stream().allMatch(PsiReferenceBase::isSoft)); + assertTrue(ContainerUtil.and(refs, PsiReferenceBase::isSoft)); assertEquals(expected, refs.stream().map(PsiReferenceBase::getCanonicalText).collect(Collectors.toSet())); } }