mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 14:04:26 +08:00
Use Context.create_name instead of weird playing with params everywhere
This commit is contained in:
@@ -302,8 +302,8 @@ class Script(object):
|
|||||||
# Without a name we really just want to jump to the result e.g.
|
# Without a name we really just want to jump to the result e.g.
|
||||||
# executed by `foo()`, if we the cursor is after `)`.
|
# executed by `foo()`, if we the cursor is after `)`.
|
||||||
return self.goto_definitions(only_stubs=only_stubs, prefer_stubs=prefer_stubs)
|
return self.goto_definitions(only_stubs=only_stubs, prefer_stubs=prefer_stubs)
|
||||||
context = self._get_module_context().create_context(tree_name)
|
name = self._get_module_context().create_name(tree_name)
|
||||||
names = list(self._inference_state.goto(context, tree_name))
|
names = list(name.goto())
|
||||||
|
|
||||||
if follow_imports:
|
if follow_imports:
|
||||||
names = filter_follow_imports(names)
|
names = filter_follow_imports(names)
|
||||||
|
|||||||
@@ -305,6 +305,7 @@ class InferenceState(object):
|
|||||||
if is_simple_name:
|
if is_simple_name:
|
||||||
return [TreeNameDefinition(context, name)]
|
return [TreeNameDefinition(context, name)]
|
||||||
elif type_ == 'param':
|
elif type_ == 'param':
|
||||||
|
assert False
|
||||||
funcdef = tree.search_ancestor(name, 'funcdef', 'lambdef')
|
funcdef = tree.search_ancestor(name, 'funcdef', 'lambdef')
|
||||||
func = context.get_root_context().create_value(funcdef)
|
func = context.get_root_context().create_value(funcdef)
|
||||||
return [SimpleParamName(func, name)]
|
return [SimpleParamName(func, name)]
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from parso.python.tree import Name
|
|||||||
|
|
||||||
from jedi.inference.filters import ParserTreeFilter, MergedFilter, \
|
from jedi.inference.filters import ParserTreeFilter, MergedFilter, \
|
||||||
GlobalNameFilter
|
GlobalNameFilter
|
||||||
|
from jedi.inference.names import SimpleParamName, TreeNameDefinition
|
||||||
from jedi.inference.base_value import NO_VALUES, ValueSet
|
from jedi.inference.base_value import NO_VALUES, ValueSet
|
||||||
from jedi.parser_utils import get_parent_scope
|
from jedi.parser_utils import get_parent_scope
|
||||||
from jedi import debug
|
from jedi import debug
|
||||||
@@ -271,6 +272,16 @@ class TreeContextMixin(object):
|
|||||||
scope_node = parent_scope(scope_node)
|
scope_node = parent_scope(scope_node)
|
||||||
return from_scope_node(scope_node, is_nested=True)
|
return from_scope_node(scope_node, is_nested=True)
|
||||||
|
|
||||||
|
def create_name(self, tree_name):
|
||||||
|
definition = tree_name.get_definition()
|
||||||
|
if definition and definition.type == 'param' and definition.name == tree_name:
|
||||||
|
funcdef = search_ancestor(definition, 'funcdef', 'lambdef')
|
||||||
|
func = self.create_value(funcdef)
|
||||||
|
return SimpleParamName(func, tree_name)
|
||||||
|
else:
|
||||||
|
context = self.create_context(tree_name)
|
||||||
|
return TreeNameDefinition(context, tree_name)
|
||||||
|
|
||||||
|
|
||||||
class FunctionContext(TreeContextMixin, ValueContext):
|
class FunctionContext(TreeContextMixin, ValueContext):
|
||||||
def get_filters(self, until_position=None, origin_scope=None):
|
def get_filters(self, until_position=None, origin_scope=None):
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
from parso.python.tree import search_ancestor
|
|
||||||
|
|
||||||
from jedi.inference import imports
|
from jedi.inference import imports
|
||||||
from jedi.inference.names import TreeNameDefinition, SimpleParamName
|
|
||||||
|
|
||||||
|
|
||||||
def _resolve_names(definition_names, avoid_names=()):
|
def _resolve_names(definition_names, avoid_names=()):
|
||||||
@@ -29,14 +26,7 @@ def _dictionarize(names):
|
|||||||
|
|
||||||
|
|
||||||
def _find_names(module_context, tree_name):
|
def _find_names(module_context, tree_name):
|
||||||
definition = tree_name.get_definition()
|
name = module_context.create_name(tree_name)
|
||||||
if definition and definition.type == 'param' and definition.name == tree_name:
|
|
||||||
funcdef = search_ancestor(definition, 'funcdef', 'lambdef')
|
|
||||||
func = module_context.create_value(funcdef)
|
|
||||||
name = SimpleParamName(func, tree_name)
|
|
||||||
else:
|
|
||||||
context = module_context.create_context(tree_name)
|
|
||||||
name = TreeNameDefinition(context, tree_name)
|
|
||||||
found_names = set(name.goto())
|
found_names = set(name.goto())
|
||||||
found_names.add(name)
|
found_names.add(name)
|
||||||
return _dictionarize(_resolve_names(found_names))
|
return _dictionarize(_resolve_names(found_names))
|
||||||
|
|||||||
Reference in New Issue
Block a user