From 5d021fdd1785f183686204406c8cf64702a00d67 Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Sat, 28 Jan 2017 01:08:52 +0300 Subject: [PATCH] PY-22401: Infinite loop fixed for cases when element can't be resolved * PyQualifiedName::removeLastElement() does not change instance , it just creates new instance leaving former unchanged. So, currentName was always "initialName - 1 component" --- python/src/com/jetbrains/extenstions/QualifiedNameExt.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/src/com/jetbrains/extenstions/QualifiedNameExt.kt b/python/src/com/jetbrains/extenstions/QualifiedNameExt.kt index 51dbfa17128f..2926732b4b77 100644 --- a/python/src/com/jetbrains/extenstions/QualifiedNameExt.kt +++ b/python/src/com/jetbrains/extenstions/QualifiedNameExt.kt @@ -27,7 +27,7 @@ import com.jetbrains.python.psi.types.TypeEvalContext */ fun QualifiedName.toElement(module: Module, context: TypeEvalContext): PsiElement? { val facade = PyPsiFacadeImpl.getInstance(module.project) - var currentName = this + var currentName = QualifiedName.fromComponents(this.components) var element: PsiElement? = null @@ -40,8 +40,8 @@ fun QualifiedName.toElement(module: Module, context: TypeEvalContext): PsiElemen if (element != null) { break } - lastElement = this.lastComponent!! - currentName = this.removeLastComponent() + lastElement = currentName.lastComponent!! + currentName = currentName.removeLastComponent() } if (lastElement != null && element is PyClass) {