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"
This commit is contained in:
Ilya.Kazakevich
2017-02-01 16:23:02 +03:00
parent d6bc173acc
commit 5d021fdd17
@@ -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) {