From ea62ad6a503b770d290df2a09ec02d7734f04ce9 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Mon, 7 Apr 2014 15:45:11 +0200 Subject: [PATCH] backwards tokenizer can now handle 10e-5 and so on literals --- jedi/parser/user_context.py | 12 ++++++++++-- test/test_api/test_api.py | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/jedi/parser/user_context.py b/jedi/parser/user_context.py index 96841dae..8a202b7c 100644 --- a/jedi/parser/user_context.py +++ b/jedi/parser/user_context.py @@ -7,6 +7,7 @@ from jedi._compatibility import u from jedi.parser.fast import FastParser from jedi.parser import representation from jedi import debug +from jedi.common import PushBackIterator class UserContext(object): @@ -62,7 +63,7 @@ class UserContext(object): open_brackets = ['(', '[', '{'] close_brackets = [')', ']', '}'] - gen = tokenize.generate_tokens(fetch_line) + gen = PushBackIterator(tokenize.generate_tokens(fetch_line)) string = u('') level = 0 force_point = False @@ -103,7 +104,14 @@ class UserContext(object): elif tok_type == tokenize.NUMBER: pass else: - break + if tok_str == '-': + next_tok = next(gen) + if next_tok.string == 'e': + gen.push_back(next_tok) + else: + break + else: + break x = start_pos[0] - end[0] + 1 l = self.get_line(x) diff --git a/test/test_api/test_api.py b/test/test_api/test_api.py index 46be9626..d9f43a73 100644 --- a/test/test_api/test_api.py +++ b/test/test_api/test_api.py @@ -68,10 +68,10 @@ def test_completion_on_number_literals(): # power notation _check_number('1.e14.') - #_check_number('1.e-3.') + _check_number('1.e-3.') _check_number('9e3.') assert api.Script('1.e3..').completions() == [] - #assert api.Script('1.e-13..').completions() == [] + assert api.Script('1.e-13..').completions() == [] def test_completion_on_hex_literals():