From ecf9043d972522d9e440b3fc836c8814148df843 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Fri, 16 May 2014 18:02:33 +0200 Subject: [PATCH] Improved error messages for AttributeErrors, however not a final version #408 --- jedi/evaluate/analysis.py | 2 +- jedi/evaluate/finder.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/jedi/evaluate/analysis.py b/jedi/evaluate/analysis.py index 74193231..f521c5bf 100644 --- a/jedi/evaluate/analysis.py +++ b/jedi/evaluate/analysis.py @@ -21,7 +21,7 @@ class Error(object): self._start_pos = start_pos self.name = name if message is None: - message = CODES[self.name][0] + message = CODES[self.name][2] self.message = message @property diff --git a/jedi/evaluate/finder.py b/jedi/evaluate/finder.py index 164a19fc..7d6a13e9 100644 --- a/jedi/evaluate/finder.py +++ b/jedi/evaluate/finder.py @@ -48,7 +48,9 @@ class NameFinder(object): and isinstance(self.name_str.parent.parent, pr.Param)): if not isinstance(self.name_str, (str, unicode)): # TODO Remove err_type = 'name-error' if search_global else 'attribute-error' - analysis.add(self._evaluator, err_type, self.name_str) + message = ('AttributeError: %s has no attribute %s' + % (self._last_filter_name_scope, self.name_str)) + analysis.add(self._evaluator, err_type, self.name_str, message) debug.dbg('finder._names_to_types: %s, old: %s', names, types) return self._resolve_descriptors(types) @@ -112,6 +114,7 @@ class NameFinder(object): if result: break + self._last_filter_name_scope = nscope debug.dbg('finder.filter_name "%s" in (%s-%s): %s@%s', self.name_str, self.scope, nscope, u(result), self.position) return result