forked from VimPlug/jedi
fix multiplication of arrays with precedences
This commit is contained in:
@@ -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 []
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user