From dd6ade194ab5967094ef89cfb3888e1bab17eeb1 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Sun, 1 Nov 2015 13:21:41 +0100 Subject: [PATCH] += assignments bug fix. --- jedi/evaluate/__init__.py | 6 +++++- jedi/evaluate/iterable.py | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index dbf83def..3a5b1747 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -164,7 +164,11 @@ class Evaluator(object): t = self.eval_element(rhs) left = precedence.calculate(self, left, operator, t) types = left - del self.predefined_if_name_dict_dict[for_stmt] + if ordered: + # If there are no for entries, we cannot iterate and the + # types are defined by += entries. Therefore the for loop + # is never called. + del self.predefined_if_name_dict_dict[for_stmt] else: types = precedence.calculate(self, left, operator, types) debug.dbg('eval_statement result %s', types) diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index c8928c00..3c6671dd 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -406,7 +406,6 @@ def ordered_elements_of_iterable(evaluator, iterable_type, all_values): ordered = [literals_to_types(evaluator, all_values)] break else: - # Try for i, types in enumerate(sequence.per_index_values()): try: ordered[i] |= types