Take all responsibility for updating trackers, stop delegating it to Java-plugin code
This commit is contained in:
@@ -35,7 +35,8 @@ public class JetBlockExpression extends JetExpressionImpl implements JetStatemen
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldChangeModificationCount(PsiElement place) {
|
public boolean shouldChangeModificationCount(PsiElement place) {
|
||||||
return JetModifiableBlockHelper.shouldChangeModificationCount(place);
|
// To prent OutOfBlockModification increase from JavaCodeBlockModificationListener
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import com.intellij.lang.ASTNode;
|
|||||||
import com.intellij.navigation.ItemPresentation;
|
import com.intellij.navigation.ItemPresentation;
|
||||||
import com.intellij.navigation.ItemPresentationProviders;
|
import com.intellij.navigation.ItemPresentationProviders;
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
|
import com.intellij.psi.PsiModifiableCodeBlock;
|
||||||
import com.intellij.psi.tree.IElementType;
|
import com.intellij.psi.tree.IElementType;
|
||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -32,7 +33,8 @@ import org.jetbrains.jet.lexer.JetTokens;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class JetNamedFunction extends JetTypeParameterListOwnerStub<PsiJetFunctionStub> implements JetFunction, JetWithExpressionInitializer {
|
public class JetNamedFunction extends JetTypeParameterListOwnerStub<PsiJetFunctionStub>
|
||||||
|
implements JetFunction, JetWithExpressionInitializer, PsiModifiableCodeBlock {
|
||||||
public JetNamedFunction(@NotNull ASTNode node) {
|
public JetNamedFunction(@NotNull ASTNode node) {
|
||||||
super(node);
|
super(node);
|
||||||
}
|
}
|
||||||
@@ -189,4 +191,10 @@ public class JetNamedFunction extends JetTypeParameterListOwnerStub<PsiJetFuncti
|
|||||||
PsiElement parent = getParent();
|
PsiElement parent = getParent();
|
||||||
return !(parent instanceof JetFile || parent instanceof JetClassBody);
|
return !(parent instanceof JetFile || parent instanceof JetClassBody);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldChangeModificationCount(PsiElement place) {
|
||||||
|
// Suppress Java check for out-of-block
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import com.intellij.navigation.ItemPresentation;
|
|||||||
import com.intellij.navigation.ItemPresentationProviders;
|
import com.intellij.navigation.ItemPresentationProviders;
|
||||||
import com.intellij.openapi.diagnostic.Logger;
|
import com.intellij.openapi.diagnostic.Logger;
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
|
import com.intellij.psi.PsiModifiableCodeBlock;
|
||||||
import com.intellij.psi.tree.IElementType;
|
import com.intellij.psi.tree.IElementType;
|
||||||
import com.intellij.psi.tree.TokenSet;
|
import com.intellij.psi.tree.TokenSet;
|
||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
@@ -37,7 +38,8 @@ import java.util.List;
|
|||||||
import static org.jetbrains.jet.JetNodeTypes.PROPERTY_DELEGATE;
|
import static org.jetbrains.jet.JetNodeTypes.PROPERTY_DELEGATE;
|
||||||
import static org.jetbrains.jet.lexer.JetTokens.*;
|
import static org.jetbrains.jet.lexer.JetTokens.*;
|
||||||
|
|
||||||
public class JetProperty extends JetTypeParameterListOwnerStub<PsiJetPropertyStub> implements JetVariableDeclaration {
|
public class JetProperty extends JetTypeParameterListOwnerStub<PsiJetPropertyStub>
|
||||||
|
implements JetVariableDeclaration, PsiModifiableCodeBlock {
|
||||||
|
|
||||||
private static final Logger LOG = Logger.getInstance(JetProperty.class);
|
private static final Logger LOG = Logger.getInstance(JetProperty.class);
|
||||||
|
|
||||||
@@ -263,4 +265,10 @@ public class JetProperty extends JetTypeParameterListOwnerStub<PsiJetPropertyStu
|
|||||||
public ItemPresentation getPresentation() {
|
public ItemPresentation getPresentation() {
|
||||||
return ItemPresentationProviders.getItemPresentation(this);
|
return ItemPresentationProviders.getItemPresentation(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldChangeModificationCount(PsiElement place) {
|
||||||
|
// Suppress Java check for out-of-block
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-3
@@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.jet.lang.psi.JetBlockExpression;
|
import org.jetbrains.jet.lang.psi.JetBlockExpression;
|
||||||
import org.jetbrains.jet.lang.psi.JetClass;
|
import org.jetbrains.jet.lang.psi.JetClass;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetModifiableBlockHelper;
|
||||||
|
|
||||||
public class JetCodeBlockModificationListener implements PsiTreeChangePreprocessor {
|
public class JetCodeBlockModificationListener implements PsiTreeChangePreprocessor {
|
||||||
private static final Logger LOG = Logger.getInstance("#org.jetbrains.jet.asJava.JetCodeBlockModificationListener");
|
private static final Logger LOG = Logger.getInstance("#org.jetbrains.jet.asJava.JetCodeBlockModificationListener");
|
||||||
@@ -75,7 +76,7 @@ public class JetCodeBlockModificationListener implements PsiTreeChangePreprocess
|
|||||||
private void processChange(PsiElement parent, PsiElement child1, PsiElement child2) {
|
private void processChange(PsiElement parent, PsiElement child1, PsiElement child2) {
|
||||||
try {
|
try {
|
||||||
if (!isInsideCodeBlock(parent)) {
|
if (!isInsideCodeBlock(parent)) {
|
||||||
if (parent != null && parent.getContainingFile() instanceof JetFile) {
|
if (parent.getContainingFile() instanceof JetFile) {
|
||||||
myModificationTracker.incCounter();
|
myModificationTracker.incCounter();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -84,7 +85,7 @@ public class JetCodeBlockModificationListener implements PsiTreeChangePreprocess
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (containsClassesInside(child1) || child2 != child1 && containsClassesInside(child2)) {
|
if (containsClassesInside(child1) || (child2 != child1 && containsClassesInside(child2))) {
|
||||||
myModificationTracker.incCounter();
|
myModificationTracker.incCounter();
|
||||||
}
|
}
|
||||||
} catch (PsiInvalidElementAccessException e) {
|
} catch (PsiInvalidElementAccessException e) {
|
||||||
@@ -119,7 +120,9 @@ public class JetCodeBlockModificationListener implements PsiTreeChangePreprocess
|
|||||||
}
|
}
|
||||||
if (parent instanceof JetClass) return false; // anonymous or local class
|
if (parent instanceof JetClass) return false; // anonymous or local class
|
||||||
if (parent instanceof JetBlockExpression) {
|
if (parent instanceof JetBlockExpression) {
|
||||||
return true;
|
if (!JetModifiableBlockHelper.shouldChangeModificationCount(element)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
parent = parent.getParent();
|
parent = parent.getParent();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user