diff --git a/python/src/com/jetbrains/python/psi/impl/PyEvaluator.java b/python/src/com/jetbrains/python/psi/impl/PyEvaluator.java index cc71f722a8f5..b6b0e91cd305 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyEvaluator.java +++ b/python/src/com/jetbrains/python/psi/impl/PyEvaluator.java @@ -16,6 +16,7 @@ package com.jetbrains.python.psi.impl; import com.intellij.psi.PsiElement; +import com.intellij.psi.ResolveResult; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.containers.ContainerUtil; import com.jetbrains.python.PyNames; @@ -240,7 +241,11 @@ public class PyEvaluator { if (myNamespace != null) { return myNamespace.get(expression.getReferencedName()); } - PsiElement result = expression.getReference(PyResolveContext.noImplicits()).resolve(); + final ResolveResult[] results = expression.getReference(PyResolveContext.noImplicits()).multiResolve(false); + if (results.length != 1) { + return null; + } + PsiElement result = results[0].getElement(); if (result instanceof PyTargetExpression) { result = ((PyTargetExpression)result).findAssignedValue(); } diff --git a/python/testSrc/com/jetbrains/python/PyEvaluatorTest.java b/python/testSrc/com/jetbrains/python/PyEvaluatorTest.java index e96607330252..aee80fdb0e07 100644 --- a/python/testSrc/com/jetbrains/python/PyEvaluatorTest.java +++ b/python/testSrc/com/jetbrains/python/PyEvaluatorTest.java @@ -255,6 +255,15 @@ public class PyEvaluatorTest extends PyTestCase { assertTrue(byExpression("not False", Boolean.class)); } + public void testMultiResolve() { + final PyExpression expression = parseText("if condition:\n" + + " a = 1\n" + + "else:\n" + + " a = 3\n" + + "expr = a < 2"); + assertNull(new PyEvaluator().evaluate(expression)); + } + @NotNull private T byExpression(@NotNull String expression, @NotNull Class cls) { final Object value = new PyEvaluator().evaluate(parseExpression(expression));