1
0
forked from VimPlug/jedi

remove crazy PushBackIterator from statement parser

This commit is contained in:
Dave Halter
2014-02-27 17:40:01 +01:00
parent 85b5fdf85f
commit 7de4b14461

View File

@@ -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