Debugger: remove while loop
#KT-10043 Fixed
This commit is contained in:
@@ -48,7 +48,7 @@ public class CodeInsightUtils {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static KtExpression findExpression(@NotNull PsiFile file, int startOffset, int endOffset) {
|
public static KtExpression findExpression(@NotNull PsiFile file, int startOffset, int endOffset) {
|
||||||
PsiElement element = findElementOfClassAtRange(file, startOffset, endOffset, KtExpression.class);
|
KtExpression element = findElementOfClassAtRange(file, startOffset, endOffset, KtExpression.class);
|
||||||
if (element == null) return null;
|
if (element == null) return null;
|
||||||
|
|
||||||
// TODO: Support binary operations in "Introduce..." refactorings
|
// TODO: Support binary operations in "Introduce..." refactorings
|
||||||
@@ -73,7 +73,7 @@ public class CodeInsightUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
KtExpression expression = (KtExpression) element;
|
KtExpression expression = element;
|
||||||
|
|
||||||
BindingContext context = ResolutionUtils.analyze(expression);
|
BindingContext context = ResolutionUtils.analyze(expression);
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ public class CodeInsightUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static PsiElement findElementOfClassAtRange(@NotNull PsiFile file, int startOffset, int endOffset, Class<KtExpression> aClass) {
|
public static <T extends PsiElement> T findElementOfClassAtRange(@NotNull PsiFile file, int startOffset, int endOffset, Class<T> aClass) {
|
||||||
// When selected range is this@Fo<select>o</select> we'd like to return `@Foo`
|
// When selected range is this@Fo<select>o</select> we'd like to return `@Foo`
|
||||||
// But it's PSI looks like: (AT IDENTIFIER):JetLabel
|
// But it's PSI looks like: (AT IDENTIFIER):JetLabel
|
||||||
// So if we search parent starting exactly at IDENTIFIER then we find nothing
|
// So if we search parent starting exactly at IDENTIFIER then we find nothing
|
||||||
@@ -149,13 +149,13 @@ public class CodeInsightUtils {
|
|||||||
startOffset = element1.getTextRange().getStartOffset();
|
startOffset = element1.getTextRange().getStartOffset();
|
||||||
endOffset = element2.getTextRange().getEndOffset();
|
endOffset = element2.getTextRange().getEndOffset();
|
||||||
|
|
||||||
KtExpression ktExpression = PsiTreeUtil.findElementOfClassAtRange(file, startOffset, endOffset, aClass);
|
T newElement = PsiTreeUtil.findElementOfClassAtRange(file, startOffset, endOffset, aClass);
|
||||||
if (ktExpression == null ||
|
if (newElement == null ||
|
||||||
ktExpression.getTextRange().getStartOffset() != startOffset ||
|
newElement.getTextRange().getStartOffset() != startOffset ||
|
||||||
ktExpression.getTextRange().getEndOffset() != endOffset) {
|
newElement.getTextRange().getEndOffset() != endOffset) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return ktExpression;
|
return newElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PsiElement getParentLabelOrElement(@Nullable PsiElement element) {
|
private static PsiElement getParentLabelOrElement(@Nullable PsiElement element) {
|
||||||
|
|||||||
+3
-6
@@ -34,6 +34,8 @@ import org.jetbrains.kotlin.idea.util.application.runReadAction
|
|||||||
import org.jetbrains.kotlin.idea.util.psi.patternMatching.toRange
|
import org.jetbrains.kotlin.idea.util.psi.patternMatching.toRange
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.codeFragmentUtil.suppressDiagnosticsInDebugMode
|
import org.jetbrains.kotlin.psi.codeFragmentUtil.suppressDiagnosticsInDebugMode
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||||
|
|
||||||
fun getFunctionForExtractedFragment(
|
fun getFunctionForExtractedFragment(
|
||||||
codeFragment: KtCodeFragment,
|
codeFragment: KtCodeFragment,
|
||||||
@@ -138,12 +140,7 @@ private fun addImportsToFile(newImportList: KtImportList?, tmpFile: KtFile) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun KtFile.getElementInCopy(e: PsiElement): PsiElement? {
|
private fun KtFile.getElementInCopy(e: PsiElement): PsiElement? {
|
||||||
val offset = e.textRange?.startOffset ?: return null
|
return CodeInsightUtils.findElementOfClassAtRange(this, e.startOffset, e.endOffset, e.javaClass)
|
||||||
var elementAt = this.findElementAt(offset)
|
|
||||||
while (elementAt == null || elementAt.textRange?.endOffset != e.textRange?.endOffset) {
|
|
||||||
elementAt = elementAt?.parent
|
|
||||||
}
|
|
||||||
return elementAt
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getExpressionToAddDebugExpressionBefore(tmpFile: KtFile, contextElement: PsiElement?, line: Int): PsiElement? {
|
private fun getExpressionToAddDebugExpressionBefore(tmpFile: KtFile, contextElement: PsiElement?, line: Int): PsiElement? {
|
||||||
|
|||||||
Reference in New Issue
Block a user