1
0
forked from VimPlug/jedi

Introduce get_qualified_names for names, it's easier to implement goto like this

This commit is contained in:
Dave Halter
2019-05-10 01:07:21 +02:00
parent f8f858216f
commit be6760e427
5 changed files with 59 additions and 18 deletions
+20
View File
@@ -23,6 +23,10 @@ class AbstractNameDefinition(object):
# name will always result on itself.
return {self}
@abstractmethod
def get_qualified_names(self):
raise NotImplementedError
def get_root_context(self):
return self.parent_context.get_root_context()
@@ -44,6 +48,12 @@ class AbstractTreeName(AbstractNameDefinition):
self.parent_context = parent_context
self.tree_name = tree_name
def get_qualified_names(self):
parent_names = self.parent_context.get_qualified_names()
if parent_names is None:
return None
return parent_names + [self.tree_name.value]
def goto(self):
return self.parent_context.evaluator.goto(self.parent_context, self.tree_name)
@@ -64,6 +74,9 @@ class ContextNameMixin(object):
def infer(self):
return ContextSet([self._context])
def get_qualified_names(self):
return self._context.get_qualified_names()
def get_root_context(self):
if self.parent_context is None: # A module
return self._context
@@ -79,6 +92,10 @@ class ContextName(ContextNameMixin, AbstractTreeName):
super(ContextName, self).__init__(context.parent_context, tree_name)
self._context = context
def goto(self):
from jedi.evaluate.gradual.stub_context import try_stub_to_actual_names
return try_stub_to_actual_names([self._context.name])
class TreeNameDefinition(AbstractTreeName):
_API_TYPES = dict(
@@ -143,6 +160,9 @@ class ImportName(AbstractNameDefinition):
self._from_module_context = parent_context
self.string_name = string_name
def get_qualified_names(self):
return []
@property
def parent_context(self):
m = self._from_module_context