mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-16 02:27:06 +08:00
Progress in creating anonymous instances.
This commit is contained in:
@@ -78,6 +78,7 @@ from jedi.evaluate import precedence
|
||||
from jedi.evaluate import param
|
||||
from jedi.evaluate import helpers
|
||||
from jedi.evaluate.context import Context
|
||||
from jedi.evaluate.instance import AnonymousInstance
|
||||
|
||||
|
||||
class Evaluator(object):
|
||||
@@ -528,13 +529,12 @@ class Evaluator(object):
|
||||
elif is_funcdef:
|
||||
return er.AnonymousFunctionExecution(self, parent_context, scope_node)
|
||||
elif scope_node.type == 'classdef':
|
||||
class_context = er.ClassContext(self, scope_node, parent_context)
|
||||
if child_is_funcdef:
|
||||
# anonymous instance
|
||||
raise NotImplementedError
|
||||
return AnonymousInstance(self, parent_context, class_context)
|
||||
else:
|
||||
return er.ClassContext(self, scope_node, parent_context)
|
||||
raise DeprecationWarning
|
||||
return self.wrap(scope, parent_context=parent_context)
|
||||
return class_context
|
||||
|
||||
if node.is_scope():
|
||||
scope_node = node
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
from abc import abstractproperty
|
||||
|
||||
from jedi.common import unite, to_list
|
||||
from jedi.common import unite
|
||||
from jedi import debug
|
||||
from jedi.evaluate import compiled
|
||||
from jedi.evaluate.filters import ParserTreeFilter, ContextName, TreeNameDefinition
|
||||
from jedi.evaluate.context import Context, LazyKnownContext
|
||||
from jedi.evaluate.cache import memoize_default
|
||||
from jedi.cache import memoize_method
|
||||
from jedi.evaluate import representation as er
|
||||
from jedi.evaluate.dynamic import search_params
|
||||
|
||||
|
||||
class AbstractInstanceContext(Context):
|
||||
@@ -181,6 +183,16 @@ class TreeInstance(AbstractInstanceContext):
|
||||
return class_context
|
||||
|
||||
|
||||
class AnonymousInstance(TreeInstance):
|
||||
def __init__(self, evaluator, parent_context, class_context):
|
||||
super(AnonymousInstance, self).__init__(
|
||||
evaluator,
|
||||
parent_context,
|
||||
class_context,
|
||||
var_args=None
|
||||
)
|
||||
|
||||
|
||||
class CompiledInstanceClassFilter(compiled.CompiledObjectFilter):
|
||||
def __init__(self, evaluator, instance, compiled_object):
|
||||
super(CompiledInstanceClassFilter, self).__init__(
|
||||
@@ -313,13 +325,19 @@ class InstanceVarArgs(object):
|
||||
self._instance = instance
|
||||
self._var_args = var_args
|
||||
|
||||
@memoize_method
|
||||
def get_var_args(self):
|
||||
if self._var_args is None:
|
||||
return search_params(self.evaluator, self.parent_context, self.funcdef)
|
||||
return self._var_args
|
||||
|
||||
def unpack(self, func=None):
|
||||
yield None, LazyKnownContext(self._instance)
|
||||
for values in self._var_args.unpack(func):
|
||||
for values in self._get_var_args.unpack(func):
|
||||
yield values
|
||||
|
||||
def get_calling_var_args(self):
|
||||
return self._var_args.get_calling_var_args()
|
||||
return self._get_var_args().get_calling_var_args()
|
||||
|
||||
|
||||
class InstanceFunctionExecution(er.FunctionExecutionContext):
|
||||
|
||||
Reference in New Issue
Block a user