diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index eee58868..3ee4f529 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -819,7 +819,6 @@ def create_index_types(evaluator, index): Handles slices in subscript nodes. """ if tree.is_node(index, 'subscript'): # subscript is a slice operation. - start, stop, step = None, None, None result = [] for el in index.children: if el == ':': diff --git a/jedi/parser/tree.py b/jedi/parser/tree.py index 10fbeccd..04677601 100644 --- a/jedi/parser/tree.py +++ b/jedi/parser/tree.py @@ -377,6 +377,10 @@ class Name(Leaf): self.start_pos[0], self.start_pos[1]) def is_definition(self): + if self.parent.type in ('power', 'atom_expr'): + # In `self.x = 3` self is not a definition, but x is. + return False + stmt = self.get_definition() if stmt.type in ('funcdef', 'classdef', 'file_input', 'param'): return self == stmt.name diff --git a/test/completion/arrays.py b/test/completion/arrays.py index e2ec70d8..c2aba71e 100644 --- a/test/completion/arrays.py +++ b/test/completion/arrays.py @@ -386,3 +386,18 @@ recursion1([1,2])[0] for x in [1] + ['']: #? int() str() x + +# ----------------- +# For loops with attribute assignment. +# ----------------- +def test_func(): + x = 'asdf' + for x.something in [6,7,8]: + pass + #? str() + x + + for x.something, b in [[6, 6.0]]: + pass + #? str() + x