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 754e0bb26267..d0f18bca4e0a 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 @@ -1,10 +1,10 @@ -// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.psi.impl.source.tree.injected; import com.intellij.lang.Language; import com.intellij.lang.injection.MultiHostInjector; import com.intellij.lang.injection.MultiHostRegistrar; -import com.intellij.lang.java.JavaLanguage; +import com.intellij.lang.java.JShellLanguage; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import com.intellij.psi.impl.source.javadoc.PsiSnippetDocTagImpl; @@ -22,8 +22,6 @@ import java.util.List; public class JavadocInjector implements MultiHostInjector { private static final String LANG_ATTR_KEY = "lang"; - private static final String SNIPPET_INJECTION_JAVA_HEADER = "class ___JavadocSnippetPlaceholder {\n" + - " void ___JavadocSnippetPlaceholderMethod() throws Throwable {\n"; @Override public void getLanguagesToInject(@NotNull MultiHostRegistrar registrar, @@ -34,22 +32,19 @@ public class JavadocInjector implements MultiHostInjector { final Language language = getLanguage(snippet); - final String prefix = language == JavaLanguage.INSTANCE ? SNIPPET_INJECTION_JAVA_HEADER : null; - final String suffix = language == JavaLanguage.INSTANCE ? "\n}}" : null; - final List ranges = snippet.getContentRanges(); if (ranges.isEmpty()) return; registrar.startInjecting(language); if (ranges.size() == 1) { - registrar.addPlace(prefix, suffix, snippet, ranges.get(0)); + registrar.addPlace(null, null, snippet, ranges.get(0)); } else { - registrar.addPlace(prefix, null, snippet, ranges.get(0)); + registrar.addPlace(null, null, snippet, ranges.get(0)); for (TextRange range : ranges.subList(1, ranges.size() - 1)) { registrar.addPlace(null, null, snippet, range); } - registrar.addPlace(null, suffix, snippet, ContainerUtil.getLastItem(ranges)); + registrar.addPlace(null, null, snippet, ContainerUtil.getLastItem(ranges)); } registrar.doneInjecting(); @@ -57,7 +52,7 @@ public class JavadocInjector implements MultiHostInjector { private static @NotNull Language getLanguage(@NotNull PsiSnippetDocTagImpl snippet) { PsiSnippetDocTagValue valueElement = snippet.getValueElement(); - if (valueElement == null) return JavaLanguage.INSTANCE; + if (valueElement == null) return JShellLanguage.INSTANCE; final PsiSnippetAttributeList attributeList = valueElement.getAttributeList(); for (PsiSnippetAttribute attribute : attributeList.getAttributes()) { @@ -73,7 +68,7 @@ public class JavadocInjector implements MultiHostInjector { return language; } - return JavaLanguage.INSTANCE; + return JShellLanguage.INSTANCE; } private static @Nullable Language findRegisteredLanguage(@NotNull String langValueText) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/SnippetMethod.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/SnippetMethod.java index a95317dc23ad..9b4c0a77a9c9 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/SnippetMethod.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/SnippetMethod.java @@ -1,5 +1,5 @@ /** {@snippet : - * void f() {} + * void f() {} * } */ class A { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javadocDeclaration/SnippetMethod.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javadocDeclaration/SnippetMethod.java index a95317dc23ad..9b4c0a77a9c9 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javadocDeclaration/SnippetMethod.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javadocDeclaration/SnippetMethod.java @@ -1,5 +1,5 @@ /** {@snippet : - * void f() {} + * void f() {} * } */ class A { diff --git a/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectEmptyBody.java b/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectEmptyBody.java index f0b3453e547f..2e7dbe9dfbe5 100644 --- a/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectEmptyBody.java +++ b/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectEmptyBody.java @@ -1,4 +1,4 @@ -// "JAVA" "true" +// "JShellLanguage" "true" /** * {@snippet :} diff --git a/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectEmptyLinesOnly.java b/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectEmptyLinesOnly.java index 1f8fc1c34e49..9a8639485ab4 100644 --- a/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectEmptyLinesOnly.java +++ b/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectEmptyLinesOnly.java @@ -1,4 +1,4 @@ -// "JAVA" "true" +// "JShellLanguage" "true" /** * A simple program. diff --git a/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectJavaImplicitly.java b/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectJavaImplicitly.java index 00a11f91dff4..c66dab53cab5 100644 --- a/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectJavaImplicitly.java +++ b/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectJavaImplicitly.java @@ -1,4 +1,4 @@ -// "JAVA" "true" +// "JShellLanguage" "true" /** * {@snippet : diff --git a/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectJavaWhenInvalidLanguageName.java b/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectJavaWhenInvalidLanguageName.java index 25749f500647..d7c1178c68d0 100644 --- a/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectJavaWhenInvalidLanguageName.java +++ b/java/java-tests/testData/codeInsight/javadoc/snippet/beforeInjectJavaWhenInvalidLanguageName.java @@ -1,4 +1,4 @@ -// "JAVA" "true" +// "JShellLanguage" "true" /** * {@snippet lang=_NONEXISTING_LANGUAGE_: diff --git a/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterInjectEmptyBody.java b/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterInjectEmptyBody.java index e45914baa07e..8b137891791f 100644 --- a/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterInjectEmptyBody.java +++ b/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterInjectEmptyBody.java @@ -1,6 +1 @@ -// "JAVA" "true" -class ___JavadocSnippetPlaceholder { - void ___JavadocSnippetPlaceholderMethod() throws Throwable { - -}} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterInjectEmptyLinesOnly.java b/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterInjectEmptyLinesOnly.java index e45914baa07e..8b137891791f 100644 --- a/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterInjectEmptyLinesOnly.java +++ b/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterInjectEmptyLinesOnly.java @@ -1,6 +1 @@ -// "JAVA" "true" -class ___JavadocSnippetPlaceholder { - void ___JavadocSnippetPlaceholderMethod() throws Throwable { - -}} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterInjectJavaImplicitly.java b/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterInjectJavaImplicitly.java index 8069d015fc7a..58c1ede41fd0 100644 --- a/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterInjectJavaImplicitly.java +++ b/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterInjectJavaImplicitly.java @@ -1,7 +1,3 @@ -// "JAVA" "true" - -class ___JavadocSnippetPlaceholder { - void ___JavadocSnippetPlaceholderMethod() throws Throwable { class Main { void f(Optional e) { if (v.isPresent()) { @@ -9,4 +5,3 @@ class Main { } } } -}} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterNoLeadingAsterisks.java b/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterNoLeadingAsterisks.java index b3e3be633e2d..0028f1223b8d 100644 --- a/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterNoLeadingAsterisks.java +++ b/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterNoLeadingAsterisks.java @@ -1,11 +1,6 @@ -// "_ignore" "true" - -class ___JavadocSnippetPlaceholder { - void ___JavadocSnippetPlaceholderMethod() throws Throwable { - class HelloWorld { +class HelloWorld { void f( ) { } } -}} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterUnalignedLeadingAsterisks.java b/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterUnalignedLeadingAsterisks.java index 68859672e644..ade8cfae9436 100644 --- a/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterUnalignedLeadingAsterisks.java +++ b/java/java-tests/testData/codeInsight/javadoc/snippet/file/afterUnalignedLeadingAsterisks.java @@ -1,11 +1,6 @@ -// "_ignore" "true" - -class ___JavadocSnippetPlaceholder { - void ___JavadocSnippetPlaceholderMethod() throws Throwable { - class HelloWorld { +class HelloWorld { void f( ) { } } -}} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadoc/snippet/file/beforeInjectEmptyBody.java b/java/java-tests/testData/codeInsight/javadoc/snippet/file/beforeInjectEmptyBody.java index f0b3453e547f..2e7dbe9dfbe5 100644 --- a/java/java-tests/testData/codeInsight/javadoc/snippet/file/beforeInjectEmptyBody.java +++ b/java/java-tests/testData/codeInsight/javadoc/snippet/file/beforeInjectEmptyBody.java @@ -1,4 +1,4 @@ -// "JAVA" "true" +// "JShellLanguage" "true" /** * {@snippet :} diff --git a/java/java-tests/testData/codeInsight/javadoc/snippet/file/beforeInjectEmptyLinesOnly.java b/java/java-tests/testData/codeInsight/javadoc/snippet/file/beforeInjectEmptyLinesOnly.java index 1f8fc1c34e49..9a8639485ab4 100644 --- a/java/java-tests/testData/codeInsight/javadoc/snippet/file/beforeInjectEmptyLinesOnly.java +++ b/java/java-tests/testData/codeInsight/javadoc/snippet/file/beforeInjectEmptyLinesOnly.java @@ -1,4 +1,4 @@ -// "JAVA" "true" +// "JShellLanguage" "true" /** * A simple program. diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/javadoc/JavadocSnippetInjectionFileTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/javadoc/JavadocSnippetInjectionFileTest.java index 4e96f52ad45a..64e59945a8ff 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/javadoc/JavadocSnippetInjectionFileTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/javadoc/JavadocSnippetInjectionFileTest.java @@ -1,18 +1,20 @@ -// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.java.codeInsight.javadoc; +import com.intellij.JavaTestUtil; import com.intellij.codeInsight.daemon.quickFix.ActionHint; import com.intellij.codeInsight.daemon.quickFix.LightQuickFixParameterizedTestCase; import com.intellij.lang.injection.InjectedLanguageManager; -import com.intellij.openapi.application.WriteAction; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.javadoc.PsiSnippetDocTag; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtilCore; +import com.intellij.testFramework.EqualsToFile; import com.intellij.testFramework.LightProjectDescriptor; import org.jetbrains.annotations.NotNull; +import java.io.File; import java.util.concurrent.atomic.AtomicReference; import static com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase.JAVA_18; @@ -29,20 +31,13 @@ public class JavadocSnippetInjectionFileTest extends LightQuickFixParameterizedT final int offset = getEditor().getCaretModel().getPrimaryCaret().getOffset(); final PsiElement snippet = PsiUtilCore.getElementAtOffset(getFile(), offset); - final PsiClass enclosingClass = getEnclosingClass(snippet); final PsiClass injectedClass = getInjectedClass(snippet); - WriteAction.run(() -> enclosingClass.replace(injectedClass)); - checkResult(testName); - } - - private void checkResult(@NotNull final String testName) { - final String expectedFilePath = getBasePath() + "/after" + testName; - checkResultByFile(expectedFilePath); - } - - private static @NotNull PsiClass getEnclosingClass(PsiElement element) { - return PsiTreeUtil.getParentOfType(element, PsiClass.class); + EqualsToFile.assertEqualsToFile( + "Injected code", + new File(JavaTestUtil.getJavaTestDataPath(), getBasePath() + "/after" + testName), + injectedClass.getText() + ); } private @NotNull PsiClass getInjectedClass(PsiElement element) {