mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-08 23:04:48 +08:00
Finally fixed all black box tests in python 2.
This commit is contained in:
@@ -540,6 +540,21 @@ class Evaluator(object):
|
|||||||
return element
|
return element
|
||||||
|
|
||||||
def create_context(self, base_context, node):
|
def create_context(self, base_context, node):
|
||||||
|
def parent_scope(node):
|
||||||
|
while True:
|
||||||
|
node = node.parent
|
||||||
|
|
||||||
|
if node.is_scope():
|
||||||
|
return node
|
||||||
|
elif node.type in ('argument', 'testlist_comp'):
|
||||||
|
if node.children[1].type == 'comp_for':
|
||||||
|
return node.children[1]
|
||||||
|
elif node.type == 'dictorsetmaker':
|
||||||
|
for n in node.children[1:4]:
|
||||||
|
# In dictionaries it can be pretty much anything.
|
||||||
|
if node.children[1].type == 'comp_for':
|
||||||
|
return node
|
||||||
|
|
||||||
def from_scope_node(scope_node, child_is_funcdef=None):
|
def from_scope_node(scope_node, child_is_funcdef=None):
|
||||||
if scope_node == base_node:
|
if scope_node == base_node:
|
||||||
return base_context
|
return base_context
|
||||||
@@ -573,5 +588,5 @@ class Evaluator(object):
|
|||||||
if node.is_scope():
|
if node.is_scope():
|
||||||
scope_node = node
|
scope_node = node
|
||||||
else:
|
else:
|
||||||
scope_node = node.get_parent_scope()
|
scope_node = parent_scope(node)
|
||||||
return from_scope_node(scope_node)
|
return from_scope_node(scope_node)
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ def _load_faked_module(module):
|
|||||||
|
|
||||||
def _search_scope(scope, obj_name):
|
def _search_scope(scope, obj_name):
|
||||||
for s in scope.subscopes:
|
for s in scope.subscopes:
|
||||||
if str(s.name) == obj_name:
|
if s.name.value == obj_name:
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
|
||||||
@@ -191,6 +191,14 @@ def _get_faked(module, obj, name=None):
|
|||||||
|
|
||||||
|
|
||||||
def get_faked(evaluator, module, obj, name=None, parent_context=None):
|
def get_faked(evaluator, module, obj, name=None, parent_context=None):
|
||||||
|
if parent_context and parent_context.classdef is not None:
|
||||||
|
# Try to search in already clearly defined stuff.
|
||||||
|
found = _search_scope(parent_context.classdef, name)
|
||||||
|
if found is not None:
|
||||||
|
return found
|
||||||
|
else:
|
||||||
|
raise FakeDoesNotExist
|
||||||
|
|
||||||
faked, fake_module = _get_faked(module and module.obj, obj, name)
|
faked, fake_module = _get_faked(module and module.obj, obj, name)
|
||||||
if module is not None:
|
if module is not None:
|
||||||
module.used_names = fake_module.used_names
|
module.used_names = fake_module.used_names
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
def proxy(object, callback=None):
|
def proxy(object, callback=None):
|
||||||
return object
|
return object
|
||||||
|
|
||||||
class weakref():
|
class ref():
|
||||||
def __init__(self, object, callback=None):
|
def __init__(self, object, callback=None):
|
||||||
self.__object = object
|
self.__object = object
|
||||||
|
|
||||||
def __call__(self):
|
def __call__(self):
|
||||||
return self.__object
|
return self.__object
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ A(3).test2()
|
|||||||
|
|
||||||
|
|
||||||
# -----------------
|
# -----------------
|
||||||
# list comprehensions
|
# comprehensions
|
||||||
# -----------------
|
# -----------------
|
||||||
|
|
||||||
def from_comprehension(foo):
|
def from_comprehension(foo):
|
||||||
|
|||||||
Reference in New Issue
Block a user