mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-07 22:44:27 +08:00
Fix context completions and super calls.
This commit is contained in:
@@ -232,22 +232,21 @@ class Completion:
|
|||||||
"""
|
"""
|
||||||
Autocomplete inherited methods when overriding in child class.
|
Autocomplete inherited methods when overriding in child class.
|
||||||
"""
|
"""
|
||||||
return
|
|
||||||
leaf = self._module_node.get_leaf_for_position(self._position, include_prefixes=True)
|
leaf = self._module_node.get_leaf_for_position(self._position, include_prefixes=True)
|
||||||
cls = leaf.get_parent_until(tree.Class)
|
cls = leaf.get_parent_until(tree.Class)
|
||||||
if isinstance(cls, (tree.Class, tree.Function)):
|
if isinstance(cls, (tree.Class, tree.Function)):
|
||||||
# Complete the methods that are defined in the super classes.
|
# Complete the methods that are defined in the super classes.
|
||||||
cls = self._evaluator.wrap(cls)
|
random_context = self._module_context.create_context(cls)
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
|
||||||
if cls.start_pos[1] >= leaf.start_pos[1]:
|
if cls.start_pos[1] >= leaf.start_pos[1]:
|
||||||
return
|
return
|
||||||
|
|
||||||
filters = cls.get_filters(search_global=False, is_instance=True)
|
filters = random_context.get_filters(search_global=False, is_instance=True)
|
||||||
# The first dict is the dictionary of class itself.
|
# The first dict is the dictionary of class itself.
|
||||||
next(filters)
|
next(filters)
|
||||||
for filter in filters:
|
for filter in filters:
|
||||||
for name in filter.values():
|
for name in filter.values():
|
||||||
if (name.parent.type == 'funcdef') == is_function:
|
if (name.api_type == 'function') == is_function:
|
||||||
yield name
|
yield name
|
||||||
|
|||||||
@@ -255,6 +255,7 @@ class CompiledName(AbstractNameDefinition):
|
|||||||
name = None
|
name = None
|
||||||
return '<%s: (%s).%s>' % (self.__class__.__name__, name, self.string_name)
|
return '<%s: (%s).%s>' % (self.__class__.__name__, name, self.string_name)
|
||||||
|
|
||||||
|
@property
|
||||||
def api_type(self):
|
def api_type(self):
|
||||||
return self.infer()[0].api_type
|
return self.infer()[0].api_type
|
||||||
|
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ def builtins_super(evaluator, types, objects, context):
|
|||||||
# TODO make this able to detect multiple inheritance super
|
# TODO make this able to detect multiple inheritance super
|
||||||
if isinstance(context, InstanceFunctionExecution):
|
if isinstance(context, InstanceFunctionExecution):
|
||||||
su = context.instance.py__class__().py__bases__()
|
su = context.instance.py__class__().py__bases__()
|
||||||
return su[0].infer()
|
return unite(context.execute_evaluated() for context in su[0].infer())
|
||||||
return set()
|
return set()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user