mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-04 17:20:55 +07:00
[javadoc] IDEA-285556 Support language injection into snippet
Add an enclosing class for snippets in order not to make users define a class in a snippet code to eliminate syntax errors when the code consists of a set of instructions GitOrigin-RevId: c6f52f94d51fdc6393c8a9fdc0ddb615e8d37b17
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f628190d6d
commit
34ec0bb7c9
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/** {<warning descr="'@snippet' tag is not available at this language level">@snippet</warning> :
|
||||
* <error descr="'class' or 'interface' expected">Body</error>
|
||||
* Body<EOLError descr="Identifier expected"></EOLError>
|
||||
* }
|
||||
*/
|
||||
class A {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
/** {<warning descr="'@snippet' tag is not available at this language level">@snippet</warning> :
|
||||
* {
|
||||
* Optional<Integer> v = null;
|
||||
* if (v.isPresent()) {
|
||||
* System.out.println("v: " + v.get());
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
class A {
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
/** {<warning descr="'@snippet' tag is not available at this language level">@snippet</warning> :
|
||||
* void f() {}
|
||||
* }
|
||||
*/
|
||||
class A {
|
||||
}
|
||||
@@ -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<WebReference> 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<WebReference> 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()));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user