From 66f75aa1cefc2238403252ca0618c0effb09de9c Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Thu, 11 Oct 2018 14:28:41 +0300 Subject: [PATCH] OffsetsElementSignatureProvider cleanup --- .../impl/OffsetsElementSignatureProvider.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/OffsetsElementSignatureProvider.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/OffsetsElementSignatureProvider.java index b15049ea709e..0a6b87b4017d 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/OffsetsElementSignatureProvider.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/OffsetsElementSignatureProvider.java @@ -155,11 +155,8 @@ public class OffsetsElementSignatureProvider extends AbstractElementSignaturePro // There is a possible case that we have a hierarchy of PSI elements that target the same document range. We need to find // out the right one then. - - int indexFromRoot = 0; - for (PsiElement e = element.getParent(); e != null && range.equals(e.getTextRange()); e = e.getParent()) { - indexFromRoot++; - } + + int indexFromRoot = getElementHierarchyIndex(element); if (processingInfoStorage != null) { processingInfoStorage.append(String.format("Target element index is %d. Current index from root is %d%n", index, indexFromRoot)); @@ -203,10 +200,8 @@ public class OffsetsElementSignatureProvider extends AbstractElementSignaturePro // There is a possible case that given PSI element has a parent or child that targets the same range. So, we remember // not only target range offsets but 'hierarchy index' as well. - int index = 0; - for (PsiElement e = element.getParent(); e != null && range.equals(e.getTextRange()); e = e.getParent()) { - index++; - } + int index = getElementHierarchyIndex(element); + buffer.append(ELEMENT_TOKENS_SEPARATOR).append(index); PsiFile containingFile = element.getContainingFile(); if (containingFile != null && containingFile.getViewProvider().getLanguages().size() > 1) { @@ -214,4 +209,13 @@ public class OffsetsElementSignatureProvider extends AbstractElementSignaturePro } return buffer.toString(); } + + private static int getElementHierarchyIndex(@NotNull PsiElement element) { + TextRange range = element.getTextRange(); + int index = 0; + for (PsiElement e = element.getParent(); e != null && range.equals(e.getTextRange()); e = e.getParent()) { + index++; + } + return index; + } }