Fix an issue with f-strings, fixes #1224

This commit is contained in:
Dave Halter
2018-09-30 13:26:54 +02:00
parent 4545d91929
commit 6a2a2a9fa1
2 changed files with 11 additions and 4 deletions

View File

@@ -105,14 +105,17 @@ def get_stack_at_position(grammar, code_lines, module_node, pos):
# TODO This is for now not an official parso API that exists purely
# for Jedi.
tokens = grammar._tokenize(code)
for token_ in tokens:
if token_.string == safeword:
for token in tokens:
if token.string == safeword:
raise EndMarkerReached()
elif token_.prefix.endswith(safeword):
elif token.prefix.endswith(safeword):
# This happens with comments.
raise EndMarkerReached()
elif token.string.endswith(safeword):
yield token # Probably an f-string literal that was not finished.
raise EndMarkerReached()
else:
yield token_
yield token
# The code might be indedented, just remove it.
code = dedent(_get_code_for_stack(code_lines, module_node, pos))

View File

@@ -28,3 +28,7 @@ Fr'''sasdf''' + ''
#? ['upper']
f'xyz'.uppe
#? 3 []
f'f'