forked from VimPlug/jedi
More parser tree simplifications.
This commit is contained in:
@@ -154,10 +154,10 @@ class Evaluator(object):
|
||||
c_node = ContextualizedName(context, seek_name)
|
||||
types = finder.check_tuple_assignments(self, c_node, types)
|
||||
|
||||
first_operation = stmt.first_operation()
|
||||
if first_operation not in ('=', None) and first_operation.type == 'operator':
|
||||
first_operator = next(stmt.yield_operators(), None)
|
||||
if first_operator not in ('=', None) and first_operator.type == 'operator':
|
||||
# `=` is always the last character in aug assignments -> -1
|
||||
operator = copy.copy(first_operation)
|
||||
operator = copy.copy(first_operator)
|
||||
operator.value = operator.value[:-1]
|
||||
name = str(stmt.get_defined_names()[0])
|
||||
left = context.py__getattribute__(
|
||||
|
||||
@@ -312,7 +312,7 @@ def _check_flow_information(context, flow, search_name, pos):
|
||||
for name in names:
|
||||
ass = tree.search_ancestor(name, 'assert_stmt')
|
||||
if ass is not None:
|
||||
result = _check_isinstance_type(context, ass.assertion(), search_name)
|
||||
result = _check_isinstance_type(context, ass.assertion, search_name)
|
||||
if result is not None:
|
||||
return result
|
||||
|
||||
|
||||
@@ -965,6 +965,7 @@ class KeywordStatement(PythonBaseNode):
|
||||
class AssertStmt(KeywordStatement):
|
||||
__slots__ = ()
|
||||
|
||||
@property
|
||||
def assertion(self):
|
||||
return self.children[1]
|
||||
|
||||
@@ -972,9 +973,6 @@ class AssertStmt(KeywordStatement):
|
||||
class GlobalStmt(KeywordStatement):
|
||||
__slots__ = ()
|
||||
|
||||
def get_defined_names(self):
|
||||
return []
|
||||
|
||||
def get_global_names(self):
|
||||
return self.children[1::2]
|
||||
|
||||
@@ -984,12 +982,9 @@ class ReturnStmt(KeywordStatement):
|
||||
|
||||
|
||||
class YieldExpr(PythonBaseNode):
|
||||
type = 'yield_expr'
|
||||
__slots__ = ()
|
||||
|
||||
@property
|
||||
def type(self):
|
||||
return 'yield_expr'
|
||||
|
||||
|
||||
def _defined_names(current):
|
||||
"""
|
||||
@@ -1030,14 +1025,20 @@ class ExprStmt(PythonBaseNode, DocstringMixin):
|
||||
"""Returns the right-hand-side of the equals."""
|
||||
return self.children[-1]
|
||||
|
||||
def first_operation(self):
|
||||
def yield_operators(self):
|
||||
"""
|
||||
Returns `+=`, `=`, etc or None if there is no operation.
|
||||
Returns a generator of `+=`, `=`, etc. or None if there is no operation.
|
||||
"""
|
||||
try:
|
||||
return self.children[1]
|
||||
except IndexError:
|
||||
return None
|
||||
first = self.children[1]
|
||||
if first.type == 'annassign':
|
||||
if len(first.children) <= 2:
|
||||
return # No operator is available, it's just PEP 484.
|
||||
|
||||
first = first.children[2]
|
||||
yield first
|
||||
|
||||
for operator in self.children[3::2]:
|
||||
yield operator
|
||||
|
||||
|
||||
class Param(PythonBaseNode):
|
||||
@@ -1109,6 +1110,7 @@ class Param(PythonBaseNode):
|
||||
return search_ancestor(self, ('funcdef', 'lambda'))
|
||||
|
||||
def get_description(self):
|
||||
# TODO Remove?
|
||||
children = self.children
|
||||
if children[-1] == ',':
|
||||
children = children[:-1]
|
||||
|
||||
Reference in New Issue
Block a user