From 99116cdcb73ba82ab3bd7cdba645c153bb4ee84f Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Fri, 5 Sep 2014 22:26:55 +0200 Subject: [PATCH] Add a Name.get_parent_stmt() function. --- jedi/api/classes.py | 2 +- jedi/parser/__init__.py | 8 ++++---- jedi/parser/representation.py | 10 ++++++++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/jedi/api/classes.py b/jedi/api/classes.py index d14937fc..96fe14c2 100644 --- a/jedi/api/classes.py +++ b/jedi/api/classes.py @@ -154,7 +154,7 @@ class BaseDefinition(object): if isinstance(stripped, iterable.Array): return 'instance' string = type(stripped).__name__.lower().replace('wrapper', '') - if string == 'exprstatement': + if string == 'exprstmt': return 'statement' else: return string diff --git a/jedi/parser/__init__.py b/jedi/parser/__init__.py index e186e8dc..66b05555 100644 --- a/jedi/parser/__init__.py +++ b/jedi/parser/__init__.py @@ -190,7 +190,7 @@ class Parser(object): # Classes don't have params, a Class works more like a function # call. param, tok = self._parse_statement(added_breaks=breaks, - stmt_class=pr.ExprStatement + stmt_class=pr.ExprStmt if is_class else pr.Param) if is_class: if param is not None: @@ -280,7 +280,7 @@ class Parser(object): return pr.Class(self.module, cname, superclasses, first_pos) def _parse_statement(self, pre_used_token=None, added_breaks=None, - stmt_class=pr.ExprStatement, names_are_set_vars=False, + stmt_class=pr.ExprStmt, names_are_set_vars=False, maybe_docstr=False): """ Parses statements like:: @@ -292,8 +292,8 @@ class Parser(object): :param pre_used_token: The pre parsed token. :type pre_used_token: set - :return: ExprStatement + last parsed token. - :rtype: (ExprStatement, str) + :return: ExprStmt + last parsed token. + :rtype: (ExprStmt, str) """ set_vars = [] level = 0 # The level of parentheses diff --git a/jedi/parser/representation.py b/jedi/parser/representation.py index ae0a7d89..118c0653 100644 --- a/jedi/parser/representation.py +++ b/jedi/parser/representation.py @@ -1223,7 +1223,7 @@ class Statement(Simple, DocstringMixin): self._expression_list = lst -class ExprStatement(Statement): +class ExprStmt(Statement): """ This class exists temporarily, to be able to distinguish real statements (``small_stmt`` in Python grammar) from the so called ``test`` parts, that @@ -1235,7 +1235,7 @@ class ExprStatement(Statement): """ -class Param(ExprStatement): +class Param(ExprStmt): """ The class which shows definitions of params of classes and functions. But this is not to define function calls. @@ -1463,6 +1463,9 @@ class NamePart(object): def get_code(self): return self._string + def get_parent_stmt(self): + return self.parent.parent_stmt() + def get_parent_until(self, *args, **kwargs): return self.parent.get_parent_until(*args, **kwargs) @@ -1501,6 +1504,9 @@ class Name(Simple): """ Returns the names in a full string format """ return self._get_code + def get_parent_stmt(self): + return self.get_parent_until(ExprStmt) + @property def end_pos(self): return self.names[-1].end_pos