forked from VimPlug/jedi
remove crazy PushBackIterator from statement parser
This commit is contained in:
@@ -932,6 +932,7 @@ isinstance(c, (tokenize.Token, Operator)) else unicode(c)
|
|||||||
arr = Array(self._sub_module, start_pos, array_type, self)
|
arr = Array(self._sub_module, start_pos, array_type, self)
|
||||||
if add_el is not None:
|
if add_el is not None:
|
||||||
arr.add_statement(add_el)
|
arr.add_statement(add_el)
|
||||||
|
old_stmt = add_el
|
||||||
|
|
||||||
maybe_dict = array_type == Array.SET
|
maybe_dict = array_type == Array.SET
|
||||||
break_tok = None
|
break_tok = None
|
||||||
@@ -945,12 +946,12 @@ isinstance(c, (tokenize.Token, Operator)) else unicode(c)
|
|||||||
else:
|
else:
|
||||||
if break_tok == ',':
|
if break_tok == ',':
|
||||||
is_array = True
|
is_array = True
|
||||||
is_key = maybe_dict and break_tok == ':'
|
arr.add_statement(stmt, is_key=maybe_dict and break_tok == ':')
|
||||||
arr.add_statement(stmt, is_key)
|
|
||||||
if break_tok in closing_brackets \
|
if break_tok in closing_brackets \
|
||||||
or break_tok in added_breaks \
|
or break_tok in added_breaks \
|
||||||
or is_assignment(break_tok):
|
or is_assignment(break_tok):
|
||||||
break
|
break
|
||||||
|
old_stmt = stmt
|
||||||
if arr.type == Array.TUPLE and len(arr) == 1 and not is_array:
|
if arr.type == Array.TUPLE and len(arr) == 1 and not is_array:
|
||||||
arr.type = Array.NOARRAY
|
arr.type = Array.NOARRAY
|
||||||
if not arr.values and maybe_dict:
|
if not arr.values and maybe_dict:
|
||||||
@@ -958,7 +959,7 @@ isinstance(c, (tokenize.Token, Operator)) else unicode(c)
|
|||||||
# always dictionaries and not sets.
|
# always dictionaries and not sets.
|
||||||
arr.type = Array.DICT
|
arr.type = Array.DICT
|
||||||
|
|
||||||
arr.end_pos = token_iterator.current[1].end_pos
|
arr.end_pos = (break_tok or stmt or old_stmt).end_pos
|
||||||
return arr, break_tok
|
return arr, break_tok
|
||||||
|
|
||||||
def parse_stmt(token_iterator, maybe_dict=False, added_breaks=(),
|
def parse_stmt(token_iterator, maybe_dict=False, added_breaks=(),
|
||||||
@@ -968,7 +969,7 @@ isinstance(c, (tokenize.Token, Operator)) else unicode(c)
|
|||||||
first = True
|
first = True
|
||||||
end_pos = None, None
|
end_pos = None, None
|
||||||
tok = None
|
tok = None
|
||||||
for i, tok in token_iterator:
|
for tok in token_iterator:
|
||||||
end_pos = tok.end_pos
|
end_pos = tok.end_pos
|
||||||
if first:
|
if first:
|
||||||
start_pos = tok.start_pos
|
start_pos = tok.start_pos
|
||||||
@@ -1098,8 +1099,8 @@ isinstance(c, (tokenize.Token, Operator)) else unicode(c)
|
|||||||
brackets = {'(': Array.TUPLE, '[': Array.LIST, '{': Array.SET}
|
brackets = {'(': Array.TUPLE, '[': Array.LIST, '{': Array.SET}
|
||||||
closing_brackets = ')', '}', ']'
|
closing_brackets = ')', '}', ']'
|
||||||
|
|
||||||
token_iterator = common.PushBackIterator(enumerate(self.token_list))
|
token_iterator = iter(self.token_list)
|
||||||
for i, tok in token_iterator:
|
for tok in token_iterator:
|
||||||
if isinstance(tok, tokenize.Token):
|
if isinstance(tok, tokenize.Token):
|
||||||
token_type = tok.type
|
token_type = tok.type
|
||||||
tok_str = tok.string
|
tok_str = tok.string
|
||||||
|
|||||||
Reference in New Issue
Block a user