diff --git a/jedi/parser/representation.py b/jedi/parser/representation.py index a561aa61..55ad20ab 100644 --- a/jedi/parser/representation.py +++ b/jedi/parser/representation.py @@ -49,15 +49,15 @@ from jedi.parser import token as token_pr SCOPE_CONTENTS = ['asserts', 'subscopes', 'imports', 'statements', 'returns'] - class GetCodeState(object): """A helper class for passing the state of get_code in a thread-safe manner""" - __slots__ = ("last_pos") + __slots__ = ("last_pos",) def __init__(self): self.last_pos = (0, 0) + class Base(object): """ This is just here to have an isinstance check, which is also used on @@ -1474,3 +1474,19 @@ class ListComprehension(Base): statements = self.stmt, self.middle, self.input code = [s.get_code().replace('\n', '') for s in statements] return "%s for %s in %s" % tuple(code) + + +class Operator(): + __slots__ = ('operator', '_line', '_column') + + def __init__(self, operator, start_pos): + self.operator = operator + self._line = start_pos[0] + self._column = start_pos[1] + + @property + def start_pos(self): + return self._column, self._line + + def get_code(self): + return self.operator diff --git a/jedi/parser/token.py b/jedi/parser/token.py index 108dcabc..715bf1d3 100644 --- a/jedi/parser/token.py +++ b/jedi/parser/token.py @@ -76,7 +76,7 @@ class Token(object): # Backward compatibility def __getitem__(self, key): # Builds the same structure as tuple used to have - if key == 0: + if key == 0: return self.token_type elif key == 1: return self.token diff --git a/test/test_parser/test_get_code.py b/test/test_parser/test_get_code.py index 506f030a..55595731 100644 --- a/test/test_parser/test_get_code.py +++ b/test/test_parser/test_get_code.py @@ -1,6 +1,9 @@ -import jedi.parser as parser import difflib +import pytest + +import jedi.parser as parser + code_basic_features = ''' """A mod docstring""" @@ -36,11 +39,19 @@ def diff_code_assert(a, b, n=4): pass +@pytest.mark.skipif('True', reason='Refactor a few parser things first.') def test_basic_parsing(): """Validate the parsing features""" prs = parser.Parser(code_basic_features) -# diff_code_assert( -# code_basic_features, -# prs.top_module.get_code2() -# ) + diff_code_assert( + code_basic_features, + prs.module.get_code2() + ) + + +@pytest.mark.skipif('True', reason='Not yet working.') +def test_operators(): + src = '5 * 3' + prs = parser.Parser(src) + diff_code_assert(src, prs.module.get_code())