diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index d098f25f..f3b0a1a9 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -71,7 +71,6 @@ backtracking algorithm. import itertools from jedi._compatibility import next, hasattr, unicode -from jedi import common from jedi.parser import representation as pr from jedi.parser.tokenize import Token from jedi import debug @@ -189,13 +188,6 @@ class Evaluator(object): elif isinstance(element, compiled.CompiledObject): return [element] ''' - elif isinstance(call, pr.Operator): - if call == '*': - if [r for r in result if isinstance(r, iterable.Array) - or isinstance(r, compiled.CompiledObject) - and isinstance(r.obj, (str, unicode))]: - # if it is an iterable, ignore * operations - next(calls_iterator) elif call == 'if': # Ternary operators. for call in calls_iterator: @@ -206,8 +198,6 @@ class Evaluator(object): break continue ''' - elif isinstance(element, pr.Operator): - pass elif not isinstance(element, Token): return self.eval_call(element) return [] diff --git a/jedi/evaluate/param.py b/jedi/evaluate/param.py index db982e7e..04b21e21 100644 --- a/jedi/evaluate/param.py +++ b/jedi/evaluate/param.py @@ -2,7 +2,7 @@ import copy from jedi.parser import representation as pr from jedi.evaluate import iterable -from jedi.evaluate import common +from jedi import common from jedi.evaluate import helpers diff --git a/jedi/evaluate/precedence.py b/jedi/evaluate/precedence.py index e08812ae..4617a575 100644 --- a/jedi/evaluate/precedence.py +++ b/jedi/evaluate/precedence.py @@ -2,9 +2,12 @@ Handles operator precedence. """ +from jedi._compatibility import unicode from jedi.parser import representation as pr from jedi import debug from jedi.common import PushBackIterator +from jedi.evaluate.compiled import CompiledObject +from jedi.evaluate import iterable class PythonGrammar(object): @@ -152,4 +155,11 @@ def _check_operator(iterator, priority=PythonGrammar.LOWEST_PRIORITY): def calculate(left, operator, right): + + if operator == '*': + if [l for l in left if isinstance(l, iterable.Array) + or isinstance(l, CompiledObject) + and isinstance(l.obj, (str, unicode))]: + # if it is an iterable, ignore * operations + return left return left + right