diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index f858e136..58d0c113 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -108,7 +108,7 @@ class Evaluator(object): scopes = f.scopes(search_global) if is_goto: return f.filter_name(scopes) - return f.find(scopes, resolve_decorator) + return f.find(scopes, resolve_decorator, search_global) @memoize_default(default=[], evaluator_is_first_arg=True) @recursion.recursion_decorator diff --git a/jedi/evaluate/analysis.py b/jedi/evaluate/analysis.py index af6c4bdc..ab39beb4 100644 --- a/jedi/evaluate/analysis.py +++ b/jedi/evaluate/analysis.py @@ -9,8 +9,9 @@ from jedi.evaluate.compiled import CompiledObject CODES = { 'attribute-error': (1, AttributeError, 'Potential AttributeError.'), - 'import-error': (2, ImportError, 'Potential ImportError.'), - 'type-error-generator': (3, TypeError, "TypeError: 'generator' object is not subscriptable."), + 'name-error': (2, NameError, 'Potential NameError.'), + 'import-error': (3, ImportError, 'Potential ImportError.'), + 'type-error-generator': (4, TypeError, "TypeError: 'generator' object is not subscriptable."), } diff --git a/jedi/evaluate/finder.py b/jedi/evaluate/finder.py index d84a4298..164a19fc 100644 --- a/jedi/evaluate/finder.py +++ b/jedi/evaluate/finder.py @@ -34,7 +34,7 @@ class NameFinder(object): self.name_str = name_str self.position = position - def find(self, scopes, resolve_decorator=True): + def find(self, scopes, resolve_decorator=True, search_global=False): if unicode(self.name_str) == 'None': # Filter None, because it's really just a keyword, nobody wants to # access it. @@ -47,7 +47,8 @@ class NameFinder(object): and not (isinstance(self.name_str, pr.NamePart) and isinstance(self.name_str.parent.parent, pr.Param)): if not isinstance(self.name_str, (str, unicode)): # TODO Remove - analysis.add(self._evaluator, 'attribute-error', self.name_str) + err_type = 'name-error' if search_global else 'attribute-error' + analysis.add(self._evaluator, err_type, self.name_str) debug.dbg('finder._names_to_types: %s, old: %s', names, types) return self._resolve_descriptors(types)