Fix comprehensions type issues.

This commit is contained in:
Dave Halter
2015-09-22 02:13:20 +02:00
parent 4ffc24a919
commit 3a306a4f25
5 changed files with 47 additions and 26 deletions

View File

@@ -12,6 +12,17 @@ from jedi.evaluate.helpers import FakeName
from jedi.cache import underscore_memoization
def try_iter_content(types):
"""Helper method for static analysis."""
for typ in types:
try:
f = typ.iter_content
except AttributeError:
pass
else:
try_iter_content(f())
class Arguments(tree.Base):
def __init__(self, evaluator, argument_node, trailer=None):
"""
@@ -160,6 +171,16 @@ class Arguments(tree.Base):
else:
return None
def eval_all(self, func=None):
"""
Evaluates all arguments as a support for static analysis
(normally Jedi).
"""
for key, element_values in self.unpack():
for element in element_values:
types = self._evaluator.eval_element(element)
try_iter_content(types)
class ExecutedParam(tree.Param):
"""Fake a param and give it values."""