Start using the correct parser for each environment

This commit is contained in:
Dave Halter
2017-12-19 19:19:35 +01:00
parent a9ebd92c20
commit 96a67f9a4c
5 changed files with 10 additions and 11 deletions

View File

@@ -115,7 +115,7 @@ class Script(object):
# Load the Python grammar of the current interpreter. # Load the Python grammar of the current interpreter.
self._grammar = parso.load_grammar() self._grammar = parso.load_grammar()
project = Project(sys_path=sys_path) project = Project(sys_path=sys_path)
self._evaluator = Evaluator(self._grammar, project, environment) self._evaluator = Evaluator(project, environment)
project.add_script_path(self.path) project.add_script_path(self.path)
debug.speed('init') debug.speed('init')

View File

@@ -28,7 +28,7 @@ class _BaseEnvironment(object):
return Project(self.get_sys_path()) return Project(self.get_sys_path())
@memoize_method @memoize_method
def get_parser(self): def get_grammar(self):
version_string = '%s.%s' % (self.version_info.major, self.version_info.minor) version_string = '%s.%s' % (self.version_info.major, self.version_info.minor)
return parso.load_grammar(version=version_string) return parso.load_grammar(version=version_string)

View File

@@ -87,8 +87,13 @@ from jedi.evaluate.syntax_tree import eval_trailer, eval_expr_stmt, \
class Evaluator(object): class Evaluator(object):
def __init__(self, grammar, project, environment=None): def __init__(self, project, environment=None):
self.grammar = grammar 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.latest_grammar = parso.load_grammar(version='3.6')
self.memoize_cache = {} # for memoize decorators self.memoize_cache = {} # for memoize decorators
# To memorize modules -> equals `sys.modules`. # To memorize modules -> equals `sys.modules`.
@@ -104,11 +109,6 @@ class Evaluator(object):
self.access_cache = {} self.access_cache = {}
project.add_evaluator(self) 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() self.reset_recursion_limitations()
@property @property

View File

@@ -203,7 +203,6 @@ class Listener(object):
except KeyError: except KeyError:
from jedi.api.environment import InterpreterEnvironment from jedi.api.environment import InterpreterEnvironment
evaluator = Evaluator( evaluator = Evaluator(
grammar=None,
project=project.Project(), project=project.Project(),
environment=InterpreterEnvironment() environment=InterpreterEnvironment()
) )

View File

@@ -15,7 +15,7 @@ def test_find_python_environments():
for env in envs: for env in envs:
assert env.version_info assert env.version_info
assert env.get_sys_path() 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] assert parser_version[:2] == env.version_info[:2]