1
0
forked from VimPlug/jedi

Fake context python code is now not the base for a lot of things anymore. It just gets executed.

This commit is contained in:
Dave Halter
2017-11-28 18:26:12 +01:00
parent a2b08eabc6
commit 47114178e9
4 changed files with 18 additions and 19 deletions
+7 -9
View File
@@ -67,6 +67,13 @@ class CompiledObject(Context):
@CheckAttribute
def py__call__(self, params):
if self.tree_node is not None and self.tree_node.type == 'funcdef':
from jedi.evaluate.context.function import FunctionContext
return FunctionContext(
self.evaluator,
parent_context=self.parent_context,
funcdef=self.tree_node
).py__call__(params)
if self.access.is_class():
from jedi.evaluate.context import CompiledInstance
return ContextSet(CompiledInstance(self.evaluator, self.parent_context, self, params))
@@ -480,9 +487,6 @@ def _create_from_name(evaluator, compiled_object, name):
faked = None
try:
faked = fake.get_faked_with_parent_context(compiled_object, name)
if faked.type == 'funcdef':
from jedi.evaluate.context.function import FunctionContext
return FunctionContext(evaluator, compiled_object, faked)
except fake.FakeDoesNotExist:
pass
@@ -559,12 +563,6 @@ def _create(evaluator, access, parent_context=None, faked=None):
else:
for access2, tree_node in zip(accesses, tree_nodes):
parent_context = create(evaluator, access2, parent_context, faked=tree_node)
# TODO this if is ugly. Please remove, it may make certain
# properties of that function unusable.
if tree_node.type == 'function':
from jedi.evaluate.context.function import FunctionContext
return FunctionContext(evaluator, parent_context.parent_context, tree_node)
return parent_context
# TODO wow this is a mess....
if parent_context is None and not faked:
+3 -2
View File
@@ -253,7 +253,8 @@ class CompiledInstanceName(compiled.CompiledName):
@iterator_to_context_set
def infer(self):
for result_context in super(CompiledInstanceName, self).infer():
if isinstance(result_context, FunctionContext):
is_function = result_context.api_type == 'function'
if result_context.tree_node is not None and is_function:
parent_context = result_context.parent_context
while parent_context.is_class():
parent_context = parent_context.parent_context
@@ -263,7 +264,7 @@ class CompiledInstanceName(compiled.CompiledName):
parent_context, result_context.tree_node
)
else:
if result_context.api_type == 'function':
if is_function:
yield CompiledBoundMethod(result_context)
else:
yield result_context