string prefixes are now recognized by the backwards tokenizer

This commit is contained in:
Dave Halter
2014-07-01 01:19:07 +02:00
parent 5099c44593
commit ede685c717
2 changed files with 24 additions and 4 deletions

View File

@@ -91,9 +91,12 @@ class UserContext(object):
elif tok_str == '.': elif tok_str == '.':
force_point = False force_point = False
elif force_point: elif force_point:
# it is reversed, therefore a number is getting recognized # Reversed tokenizing, therefore a number is recognized as a
# as a floating point number # floating point number.
if tok_type == tokenize.NUMBER and tok_str[0] == '.': # The same is true for string prefixes -> represented as a
# combination of string and name.
if tok_type == tokenize.NUMBER and tok_str[0] == '.' \
or tok_type == tokenize.NAME and last_type == tokenize.STRING:
force_point = False force_point = False
else: else:
break break

View File

@@ -1,7 +1,8 @@
from jedi._compatibility import builtins from jedi._compatibility import builtins, is_py3
from jedi.parser.representation import Function from jedi.parser.representation import Function
from jedi.evaluate import compiled from jedi.evaluate import compiled
from jedi.evaluate import Evaluator from jedi.evaluate import Evaluator
from jedi import Script
def test_simple(): def test_simple():
@@ -47,3 +48,19 @@ def test_doc():
""" """
obj = compiled.CompiledObject(''.__getnewargs__) obj = compiled.CompiledObject(''.__getnewargs__)
assert obj.doc == '' assert obj.doc == ''
def test_string_literals():
def typ(string):
d = Script(string).goto_definitions()[0]
return d.name
assert typ('""') == 'str'
assert typ('r""') == 'str'
if is_py3:
assert typ('br""') == 'bytes'
assert typ('b""') == 'bytes'
assert typ('u""') == 'str'
else:
assert typ('b""') == 'string'
assert typ('u""') == 'unicode'