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 == '.':
force_point = False
elif force_point:
# it is reversed, therefore a number is getting recognized
# as a floating point number
if tok_type == tokenize.NUMBER and tok_str[0] == '.':
# Reversed tokenizing, therefore a number is recognized as a
# floating point number.
# 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
else:
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.evaluate import compiled
from jedi.evaluate import Evaluator
from jedi import Script
def test_simple():
@@ -47,3 +48,19 @@ def test_doc():
"""
obj = compiled.CompiledObject(''.__getnewargs__)
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'