mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 22:14:27 +08:00
Start using the correct parser for each environment
This commit is contained in:
@@ -115,7 +115,7 @@ class Script(object):
|
||||
# Load the Python grammar of the current interpreter.
|
||||
self._grammar = parso.load_grammar()
|
||||
project = Project(sys_path=sys_path)
|
||||
self._evaluator = Evaluator(self._grammar, project, environment)
|
||||
self._evaluator = Evaluator(project, environment)
|
||||
project.add_script_path(self.path)
|
||||
debug.speed('init')
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ class _BaseEnvironment(object):
|
||||
return Project(self.get_sys_path())
|
||||
|
||||
@memoize_method
|
||||
def get_parser(self):
|
||||
def get_grammar(self):
|
||||
version_string = '%s.%s' % (self.version_info.major, self.version_info.minor)
|
||||
return parso.load_grammar(version=version_string)
|
||||
|
||||
|
||||
@@ -87,8 +87,13 @@ from jedi.evaluate.syntax_tree import eval_trailer, eval_expr_stmt, \
|
||||
|
||||
|
||||
class Evaluator(object):
|
||||
def __init__(self, grammar, project, environment=None):
|
||||
self.grammar = grammar
|
||||
def __init__(self, project, environment=None):
|
||||
if environment is None:
|
||||
environment = get_default_environment()
|
||||
self.environment = environment
|
||||
self.compiled_subprocess = environment.get_evaluator_subprocess(self)
|
||||
self.grammar = environment.get_grammar()
|
||||
|
||||
self.latest_grammar = parso.load_grammar(version='3.6')
|
||||
self.memoize_cache = {} # for memoize decorators
|
||||
# To memorize modules -> equals `sys.modules`.
|
||||
@@ -104,11 +109,6 @@ class Evaluator(object):
|
||||
self.access_cache = {}
|
||||
project.add_evaluator(self)
|
||||
|
||||
if environment is None:
|
||||
environment = get_default_environment()
|
||||
self.environment = environment
|
||||
self.compiled_subprocess = environment.get_evaluator_subprocess(self)
|
||||
|
||||
self.reset_recursion_limitations()
|
||||
|
||||
@property
|
||||
|
||||
@@ -203,7 +203,6 @@ class Listener(object):
|
||||
except KeyError:
|
||||
from jedi.api.environment import InterpreterEnvironment
|
||||
evaluator = Evaluator(
|
||||
grammar=None,
|
||||
project=project.Project(),
|
||||
environment=InterpreterEnvironment()
|
||||
)
|
||||
|
||||
@@ -15,7 +15,7 @@ def test_find_python_environments():
|
||||
for env in envs:
|
||||
assert env.version_info
|
||||
assert env.get_sys_path()
|
||||
parser_version = env.get_parser().version_info
|
||||
parser_version = env.get_grammar().version_info
|
||||
assert parser_version[:2] == env.version_info[:2]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user