From 693ba01e8313c18ba1d962702d53dab2fb5bd752 Mon Sep 17 00:00:00 2001 From: "Roman.Ivanov" Date: Mon, 10 Feb 2020 14:59:22 +0700 Subject: [PATCH] Java formatter: add space between type and name in pattern GitOrigin-RevId: 0357190e17a3486c70b8e7d0fa418918193ea6d7 --- .../java/JavaSpacePropertyProcessor.java | 8 +++++++ .../afterReified.java | 2 +- .../afterSafeCast.java | 2 +- .../psi/formatter/java/JavaFormatterTest.kt | 22 +++++++++++++++++-- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java b/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java index dfbd4018050f..3d54b16bed9e 100644 --- a/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java +++ b/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java @@ -664,6 +664,14 @@ public class JavaSpacePropertyProcessor extends JavaElementVisitor { } } + @Override + public void visitPatternVariable(PsiPatternVariable variable) { + super.visitPatternVariable(variable); + if (myType1 == JavaElementType.TYPE && myType2 == JavaTokenType.IDENTIFIER) { + createSpaceInCode(true); + } + } + @Override public void visitImportList(PsiImportList list) { if (ElementType.IMPORT_STATEMENT_BASE_BIT_SET.contains(myChild1.getElementType()) && diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReified.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReified.java index f5fc2d24005d..b6d05841a806 100644 --- a/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReified.java +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReified.java @@ -3,7 +3,7 @@ import java.util.List; class X { void test(Object obj) { - if (obj instanceof Listlist) { + if (obj instanceof List list) { } } } \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterSafeCast.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterSafeCast.java index e0334a56a901..539c2fdc8ae3 100644 --- a/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterSafeCast.java +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterSafeCast.java @@ -3,7 +3,7 @@ import java.util.*; class X { void test(List obj) { - if (obj instanceof ArrayListlist) { + if (obj instanceof ArrayList list) { } } } \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavaFormatterTest.kt b/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavaFormatterTest.kt index 166659aa5058..88868e3eda22 100644 --- a/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavaFormatterTest.kt +++ b/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavaFormatterTest.kt @@ -13,9 +13,9 @@ import com.intellij.psi.JavaCodeFragmentFactory import com.intellij.psi.PsiElement import com.intellij.psi.codeStyle.CodeStyleManager import com.intellij.psi.codeStyle.CommonCodeStyleSettings -import com.intellij.util.IncorrectOperationException -import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase import com.intellij.testFramework.LightProjectDescriptor +import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase +import com.intellij.util.IncorrectOperationException /** * **Note:** this class is too huge and hard to use. It's tests are intended to be split in multiple more fine-grained @@ -3978,4 +3978,22 @@ public enum LevelCode { } """.trimIndent()) } + + fun testInstanceofPatternWithGeneric() { + + doTextTest(""" + class A{ + void foo(Object x) { + if (x instanceof List a) {} + } + } + """.trimIndent(), """ + class A { + void foo(Object x) { + if (x instanceof List a) { + } + } + } + """.trimIndent()) + } } \ No newline at end of file