1
0
forked from VimPlug/jedi

Fix some fstring issues for now

This commit is contained in:
Dave Halter
2018-04-05 01:11:04 +02:00
parent af956d70a3
commit 567c8b8097
5 changed files with 22 additions and 9 deletions

View File

@@ -11,6 +11,8 @@ from parso.python import tree
from jedi._compatibility import u
from jedi.evaluate.syntax_tree import eval_atom
from jedi.evaluate.helpers import evaluate_call_of_leaf
from jedi.evaluate.compiled import get_string_context_set
from jedi.evaluate.base_context import ContextSet
from jedi.cache import time_cache
@@ -193,6 +195,8 @@ def evaluate_goto_definition(evaluator, context, leaf):
return evaluate_call_of_leaf(context, leaf)
elif isinstance(leaf, tree.Literal):
return eval_atom(context, leaf)
elif leaf.type == 'fstring_string':
return get_string_context_set(evaluator)
return []

View File

@@ -28,6 +28,10 @@ def get_special_object(evaluator, identifier):
)
def get_string_context_set(evaluator):
return builtin_from_name(evaluator, u'str').execute_evaluated()
def load_module(evaluator, **kwargs):
access_path = evaluator.compiled_subprocess.load_module(**kwargs)
if access_path is None:

View File

@@ -23,8 +23,7 @@ class _ModuleAttributeName(AbstractNameDefinition):
self.string_name = string_name
def infer(self):
ctx = compiled.builtin_from_name(self.parent_context.evaluator, u'str')
return ctx.execute_evaluated()
return compiled.get_string_context_set(self.parent_context.evaluator)
class ModuleName(ContextNameMixin, AbstractNameDefinition):

View File

@@ -23,5 +23,5 @@ Fr'a{Foo.bar'
#? str()
Fr'sasdf'
#? 7 str()
#? 7
Fr'''sasdf''' + ''

View File

@@ -1,9 +1,15 @@
import pytest
from jedi.evaluate.context import CompiledInstance
def _eval_literal(Script, code):
def _eval_literal(Script, code, *, is_fstring=False):
def_, = Script(code).goto_definitions()
return def_._name._context.get_safe_value()
if is_fstring:
assert def_.name == 'str'
assert isinstance(def_._name._context, CompiledInstance)
return ''
else:
return def_._name._context.get_safe_value()
def test_f_strings(Script, environment):
@@ -14,10 +20,10 @@ def test_f_strings(Script, environment):
if environment.version_info < (3, 6):
pytest.skip()
assert _eval_literal(Script, 'f"asdf"') == ''
assert _eval_literal(Script, 'f"{asdf}"') == ''
assert _eval_literal(Script, 'F"{asdf}"') == ''
assert _eval_literal(Script, 'rF"{asdf}"') == ''
assert _eval_literal(Script, 'f"asdf"', is_fstring=True) == ''
assert _eval_literal(Script, 'f"{asdf} "', is_fstring=True) == ''
assert _eval_literal(Script, 'F"{asdf} "', is_fstring=True) == ''
assert _eval_literal(Script, 'rF"{asdf} "', is_fstring=True) == ''
def test_rb_strings(Script, environment):