1
0
forked from VimPlug/jedi

fix multiplication of arrays with precedences

This commit is contained in:
Dave Halter
2014-03-09 02:23:13 +01:00
parent 61fa9b7fb4
commit e2832e1172
3 changed files with 11 additions and 11 deletions

View File

@@ -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 []

View File

@@ -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

View File

@@ -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