forked from VimPlug/jedi
fix multiplication of arrays with precedences
This commit is contained in:
@@ -71,7 +71,6 @@ backtracking algorithm.
|
|||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
from jedi._compatibility import next, hasattr, unicode
|
from jedi._compatibility import next, hasattr, unicode
|
||||||
from jedi import common
|
|
||||||
from jedi.parser import representation as pr
|
from jedi.parser import representation as pr
|
||||||
from jedi.parser.tokenize import Token
|
from jedi.parser.tokenize import Token
|
||||||
from jedi import debug
|
from jedi import debug
|
||||||
@@ -189,13 +188,6 @@ class Evaluator(object):
|
|||||||
elif isinstance(element, compiled.CompiledObject):
|
elif isinstance(element, compiled.CompiledObject):
|
||||||
return [element]
|
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':
|
elif call == 'if':
|
||||||
# Ternary operators.
|
# Ternary operators.
|
||||||
for call in calls_iterator:
|
for call in calls_iterator:
|
||||||
@@ -206,8 +198,6 @@ class Evaluator(object):
|
|||||||
break
|
break
|
||||||
continue
|
continue
|
||||||
'''
|
'''
|
||||||
elif isinstance(element, pr.Operator):
|
|
||||||
pass
|
|
||||||
elif not isinstance(element, Token):
|
elif not isinstance(element, Token):
|
||||||
return self.eval_call(element)
|
return self.eval_call(element)
|
||||||
return []
|
return []
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import copy
|
|||||||
|
|
||||||
from jedi.parser import representation as pr
|
from jedi.parser import representation as pr
|
||||||
from jedi.evaluate import iterable
|
from jedi.evaluate import iterable
|
||||||
from jedi.evaluate import common
|
from jedi import common
|
||||||
from jedi.evaluate import helpers
|
from jedi.evaluate import helpers
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,12 @@
|
|||||||
Handles operator precedence.
|
Handles operator precedence.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from jedi._compatibility import unicode
|
||||||
from jedi.parser import representation as pr
|
from jedi.parser import representation as pr
|
||||||
from jedi import debug
|
from jedi import debug
|
||||||
from jedi.common import PushBackIterator
|
from jedi.common import PushBackIterator
|
||||||
|
from jedi.evaluate.compiled import CompiledObject
|
||||||
|
from jedi.evaluate import iterable
|
||||||
|
|
||||||
|
|
||||||
class PythonGrammar(object):
|
class PythonGrammar(object):
|
||||||
@@ -152,4 +155,11 @@ def _check_operator(iterator, priority=PythonGrammar.LOWEST_PRIORITY):
|
|||||||
|
|
||||||
|
|
||||||
def calculate(left, operator, right):
|
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
|
return left + right
|
||||||
|
|||||||
Reference in New Issue
Block a user