forked from VimPlug/jedi
simple generator static analysis subscript check
This commit is contained in:
@@ -8,6 +8,7 @@ from jedi import debug
|
|||||||
CODES = {
|
CODES = {
|
||||||
'attribute-error': (1, 'Potential AttributeError.'),
|
'attribute-error': (1, 'Potential AttributeError.'),
|
||||||
'import-error': (2, 'Potential ImportError.'),
|
'import-error': (2, 'Potential ImportError.'),
|
||||||
|
'type-error-generator': (3, "TypeError: 'generator' object is not subscriptable."),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ from jedi.evaluate import helpers
|
|||||||
from jedi.evaluate import precedence
|
from jedi.evaluate import precedence
|
||||||
from jedi.evaluate.cache import CachedMetaClass, memoize_default, NO_DEFAULT
|
from jedi.evaluate.cache import CachedMetaClass, memoize_default, NO_DEFAULT
|
||||||
from jedi.cache import underscore_memoization
|
from jedi.cache import underscore_memoization
|
||||||
|
from jedi.evaluate import analysis
|
||||||
|
|
||||||
|
|
||||||
class Generator(use_metaclass(CachedMetaClass, pr.Base)):
|
class Generator(use_metaclass(CachedMetaClass, pr.Base)):
|
||||||
@@ -61,7 +62,8 @@ class Generator(use_metaclass(CachedMetaClass, pr.Base)):
|
|||||||
return self._evaluator.execute(self.func, self.var_args, True)
|
return self._evaluator.execute(self.func, self.var_args, True)
|
||||||
|
|
||||||
def get_index_types(self, index_array):
|
def get_index_types(self, index_array):
|
||||||
debug.warning('Tried to get array access on a generator: %s', self)
|
#debug.warning('Tried to get array access on a generator: %s', self)
|
||||||
|
analysis.add(self._evaluator, 'type-error-generator', index_array)
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def __getattr__(self, name):
|
def __getattr__(self, name):
|
||||||
|
|||||||
8
test/static_analysis/generators.py
Normal file
8
test/static_analysis/generators.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
def generator():
|
||||||
|
yield 1
|
||||||
|
|
||||||
|
#! type-error-generator
|
||||||
|
generator()[0]
|
||||||
|
|
||||||
|
list(generator())[0]
|
||||||
|
|
||||||
Reference in New Issue
Block a user