diff --git a/jedi/evaluate/docstrings.py b/jedi/evaluate/docstrings.py index 5449fcaa..e115cf06 100644 --- a/jedi/evaluate/docstrings.py +++ b/jedi/evaluate/docstrings.py @@ -119,4 +119,4 @@ def find_return_types(evaluator, func): if p.user_stmt() is None: return [] p.user_stmt().parent = func - return list(evaluator.eval_statement(p.user_stmt)) + return list(evaluator.eval_statement(p.user_stmt())) diff --git a/jedi/parser/__init__.py b/jedi/parser/__init__.py index f35603d2..fb96b3ef 100644 --- a/jedi/parser/__init__.py +++ b/jedi/parser/__init__.py @@ -82,6 +82,15 @@ class Parser(object): def __repr__(self): return "<%s: %s>" % (type(self).__name__, self.module) + def _check_user_stmt(self, simple): + # this is not user checking, just update the used_names + for tok_name in self.module.temp_used_names: + try: + self.module.used_names[tok_name].add(simple) + except KeyError: + self.module.used_names[tok_name] = set([simple]) + self.module.temp_used_names = [] + def _parse_dot_name(self, pre_used_token=None): """ The dot name parser parses a name, variable or function and returns @@ -371,6 +380,7 @@ class Parser(object): names_are_set_vars=names_are_set_vars) stmt.parent = self.top_module + self._check_user_stmt(stmt) if tok in always_break + not_first_break: self._gen.push_last_back() @@ -478,10 +488,12 @@ class Parser(object): end_pos = self.end_pos if count + 1 == len(imports) else e i = pr.Import(self.module, first_pos, end_pos, m, alias, defunct=defunct) + self._check_user_stmt(i) self._scope.add_import(i) if not imports: i = pr.Import(self.module, first_pos, self.end_pos, None, defunct=True) + self._check_user_stmt(i) self.freshscope = False elif tok == 'from': defunct = False @@ -513,6 +525,7 @@ class Parser(object): i = pr.Import(self.module, first_pos, end_pos, name, alias, mod, star, relative_count, defunct=defunct or defunct2) + self._check_user_stmt(i) self._scope.add_import(i) self.freshscope = False # loops diff --git a/jedi/parser/user_context.py b/jedi/parser/user_context.py index bf8c3757..daf6a5b1 100644 --- a/jedi/parser/user_context.py +++ b/jedi/parser/user_context.py @@ -195,8 +195,8 @@ class UserContextParser(object): parser = Parser(self._source, self._path, self._position, no_docstr=self._no_docstr) else: parser = FastParser(self._source, self._path, self._position) - # Don't pickle that module, because the main module is changing quickly - cache.save_parser(self._path, None, parser, pickling=False) + # Don't pickle that module, because the main module is changing quickly + cache.save_parser(self._path, None, parser, pickling=False) return parser @cache.underscore_memoization