From 6aebaca52330bf98a55a4d217138d71a45ecaf5c Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 14 Dec 2023 19:59:21 +0100 Subject: [PATCH] [java] deprecate and scheduler for removal PsiModifiableCodeBlock interface is not used externally, and after removing PsiModificationTracker#getOutOfCodeBlockModificationCount() it makes no sense anymore. ^IDEA-340901 fixed GitOrigin-RevId: e121babc02bf14f820dd8b3f974111e8240d692b --- .../src/com/intellij/psi/PsiCodeBlock.java | 9 ++++++++- .../com/intellij/psi/PsiModifiableCodeBlock.java | 6 ++++++ .../psi/impl/source/tree/java/PsiCodeBlockImpl.java | 6 ------ .../groovy/lang/psi/impl/GroovyFileImpl.java | 13 +------------ .../psi/impl/statements/blocks/GrOpenBlockImpl.java | 9 +-------- .../streams/psi/impl/JavaStreamChainBuilder.java | 2 +- 6 files changed, 17 insertions(+), 28 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/PsiCodeBlock.java b/java/java-psi-api/src/com/intellij/psi/PsiCodeBlock.java index 450a5f58fa00..b6a77371248d 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiCodeBlock.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiCodeBlock.java @@ -21,7 +21,7 @@ import org.jetbrains.annotations.Nullable; /** * Represents a Java code block, usually surrounded by curly braces. */ -public interface PsiCodeBlock extends PsiElement, PsiModifiableCodeBlock { +public interface PsiCodeBlock extends PsiElement { /** * The empty array of PSI code blocks which can be reused to avoid unnecessary allocations. */ @@ -81,4 +81,11 @@ public interface PsiCodeBlock extends PsiElement, PsiModifiableCodeBlock { default boolean isEmpty() { return getStatementCount() == 0; } + + + @SuppressWarnings("unused") //keep for binary compatibility. + default boolean shouldChangeModificationCount(PsiElement place) { + PsiElement parent = getParent(); + return !(parent instanceof PsiMethod || parent instanceof PsiClassInitializer); + } } diff --git a/java/java-psi-api/src/com/intellij/psi/PsiModifiableCodeBlock.java b/java/java-psi-api/src/com/intellij/psi/PsiModifiableCodeBlock.java index 2e1ca8c20367..01ea65de860d 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiModifiableCodeBlock.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiModifiableCodeBlock.java @@ -15,9 +15,15 @@ */ package com.intellij.psi; +import com.intellij.psi.util.PsiModificationTracker; +import org.jetbrains.annotations.ApiStatus; + /** * Represents psi element, which can be modified without caches reset. + * @deprecated because {@link PsiModificationTracker}.getOutOfCodeBlockModificationCount() was removed, there is no more code that calls the method */ +@ApiStatus.ScheduledForRemoval +@Deprecated public interface PsiModifiableCodeBlock { /** * @param place where change was detected diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiCodeBlockImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiCodeBlockImpl.java index 9a1a7bf7974d..234aaa20d220 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiCodeBlockImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiCodeBlockImpl.java @@ -276,10 +276,4 @@ public final class PsiCodeBlockImpl extends LazyParseablePsiElement implements P } return true; } - - @Override - public boolean shouldChangeModificationCount(PsiElement place) { - PsiElement parent = getParent(); - return !(parent instanceof PsiMethod || parent instanceof PsiClassInitializer); - } } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java index b5acf92bcc9d..61dd2a8292b2 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java @@ -12,7 +12,6 @@ import com.intellij.psi.stubs.StubElement; import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; import com.intellij.psi.util.PsiModificationTracker; -import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; @@ -45,7 +44,7 @@ import static org.jetbrains.plugins.groovy.lang.resolve.bindings.BindingsKt.proc /** * Implements all abstractions related to Groovy file */ -public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile, PsiModifiableCodeBlock { +public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile { private static final Logger LOG = Logger.getInstance(GroovyFileImpl.class); @@ -351,16 +350,6 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile, Ps return PsiImplUtilKt.getScriptDeclarations(this, topLevelOnly); } - @Override - public boolean shouldChangeModificationCount(PsiElement place) { - if (!isContentsLoaded()) return true; - // 1. We actually should never get GrTypeDefinition as a parent, because it is a PsiClass, - // and PsiClasses prevent to go up in a tree any further - // 2. If place is under a variable then @BaseScript or @Field may be changed, - // which actually is a change in Java Structure - return !isScript() || PsiTreeUtil.getParentOfType(place, GrTypeDefinition.class, GrVariableDeclaration.class) != null; - } - @NotNull @Override public GroovyFileImports getImports() { diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/blocks/GrOpenBlockImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/blocks/GrOpenBlockImpl.java index b97fb5a5465d..4af099f7bef0 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/blocks/GrOpenBlockImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/blocks/GrOpenBlockImpl.java @@ -3,7 +3,6 @@ package org.jetbrains.plugins.groovy.lang.psi.impl.statements.blocks; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiModifiableCodeBlock; import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.groovy.lang.psi.GroovyElementVisitor; @@ -11,7 +10,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrClassInitializer; import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrOpenBlock; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod; -public class GrOpenBlockImpl extends GrBlockImpl implements GrOpenBlock, PsiModifiableCodeBlock { +public class GrOpenBlockImpl extends GrBlockImpl implements GrOpenBlock { public GrOpenBlockImpl(@NotNull IElementType type, CharSequence buffer) { super(type, buffer); @@ -32,10 +31,4 @@ public class GrOpenBlockImpl extends GrBlockImpl implements GrOpenBlock, PsiModi final PsiElement parent = getParent(); return parent instanceof GrMethod || parent instanceof GrClassInitializer; } - - @Override - public boolean shouldChangeModificationCount(PsiElement place) { - final PsiElement parent = getParent(); - return !(parent instanceof GrMethod) && !(parent instanceof GrClassInitializer); - } } diff --git a/plugins/stream-debugger/src/com/intellij/debugger/streams/psi/impl/JavaStreamChainBuilder.java b/plugins/stream-debugger/src/com/intellij/debugger/streams/psi/impl/JavaStreamChainBuilder.java index 454a2654427b..a369db05da4c 100644 --- a/plugins/stream-debugger/src/com/intellij/debugger/streams/psi/impl/JavaStreamChainBuilder.java +++ b/plugins/stream-debugger/src/com/intellij/debugger/streams/psi/impl/JavaStreamChainBuilder.java @@ -73,7 +73,7 @@ public class JavaStreamChainBuilder implements StreamChainBuilder { while (current != null) { final PsiElement parent = current.getParent(); - if (parent instanceof PsiModifiableCodeBlock || parent instanceof PsiLambdaExpression || parent instanceof PsiStatement) { + if (parent instanceof PsiCodeBlock || parent instanceof PsiLambdaExpression || parent instanceof PsiStatement) { break; }