Debugger: remove while loop
#KT-10043 Fixed
This commit is contained in:
@@ -48,7 +48,7 @@ public class CodeInsightUtils {
|
||||
|
||||
@Nullable
|
||||
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;
|
||||
|
||||
// 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);
|
||||
|
||||
@@ -136,7 +136,7 @@ public class CodeInsightUtils {
|
||||
}
|
||||
|
||||
@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`
|
||||
// But it's PSI looks like: (AT IDENTIFIER):JetLabel
|
||||
// So if we search parent starting exactly at IDENTIFIER then we find nothing
|
||||
@@ -149,13 +149,13 @@ public class CodeInsightUtils {
|
||||
startOffset = element1.getTextRange().getStartOffset();
|
||||
endOffset = element2.getTextRange().getEndOffset();
|
||||
|
||||
KtExpression ktExpression = PsiTreeUtil.findElementOfClassAtRange(file, startOffset, endOffset, aClass);
|
||||
if (ktExpression == null ||
|
||||
ktExpression.getTextRange().getStartOffset() != startOffset ||
|
||||
ktExpression.getTextRange().getEndOffset() != endOffset) {
|
||||
T newElement = PsiTreeUtil.findElementOfClassAtRange(file, startOffset, endOffset, aClass);
|
||||
if (newElement == null ||
|
||||
newElement.getTextRange().getStartOffset() != startOffset ||
|
||||
newElement.getTextRange().getEndOffset() != endOffset) {
|
||||
return null;
|
||||
}
|
||||
return ktExpression;
|
||||
return newElement;
|
||||
}
|
||||
|
||||
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.psi.*
|
||||
import org.jetbrains.kotlin.psi.codeFragmentUtil.suppressDiagnosticsInDebugMode
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
fun getFunctionForExtractedFragment(
|
||||
codeFragment: KtCodeFragment,
|
||||
@@ -138,12 +140,7 @@ private fun addImportsToFile(newImportList: KtImportList?, tmpFile: KtFile) {
|
||||
}
|
||||
|
||||
private fun KtFile.getElementInCopy(e: PsiElement): PsiElement? {
|
||||
val offset = e.textRange?.startOffset ?: return null
|
||||
var elementAt = this.findElementAt(offset)
|
||||
while (elementAt == null || elementAt.textRange?.endOffset != e.textRange?.endOffset) {
|
||||
elementAt = elementAt?.parent
|
||||
}
|
||||
return elementAt
|
||||
return CodeInsightUtils.findElementOfClassAtRange(this, e.startOffset, e.endOffset, e.javaClass)
|
||||
}
|
||||
|
||||
private fun getExpressionToAddDebugExpressionBefore(tmpFile: KtFile, contextElement: PsiElement?, line: Int): PsiElement? {
|
||||
|
||||
Reference in New Issue
Block a user