Refactor something to use .type instead of isinstance.

This commit is contained in:
Dave Halter
2016-06-30 09:55:21 +02:00
parent 689284c615
commit 6b41db96bf
4 changed files with 12 additions and 3 deletions

View File

@@ -179,9 +179,11 @@ class Completion:
scope = get_user_scope(self._module, self._position) scope = get_user_scope(self._module, self._position)
if not scope.is_scope(): # Might be a flow (if/while/etc). if not scope.is_scope(): # Might be a flow (if/while/etc).
scope = scope.get_parent_scope() scope = scope.get_parent_scope()
scope = self._evaluator.wrap(scope)
debug.dbg('global completion scope: %s', scope)
names_dicts = global_names_dict_generator( names_dicts = global_names_dict_generator(
self._evaluator, self._evaluator,
self._evaluator.wrap(scope), scope,
self._position self._position
) )
completion_names = [] completion_names = []

View File

@@ -22,6 +22,7 @@ from jedi.evaluate.compiled import mixed
class MixedModule(object): class MixedModule(object):
resets_positions = True resets_positions = True
type = 'mixed_module'
def __init__(self, evaluator, parser_module, namespaces): def __init__(self, evaluator, parser_module, namespaces):
self._evaluator = evaluator self._evaluator = evaluator

View File

@@ -235,7 +235,12 @@ class NameFinder(object):
""" """
for n in names: for n in names:
definition = n.parent definition = n.parent
if isinstance(definition, (tree.Function, tree.Class, tree.Module)): if isinstance(definition, (compiled.CompiledObject,
iterable.BuiltinMethod)):
# TODO this if should really be removed by changing the type of
# those classes.
yield n
elif definition.type in ('funcdef', 'classdef', 'file_input'):
yield self._evaluator.wrap(definition).name yield self._evaluator.wrap(definition).name
else: else:
yield n yield n

View File

@@ -59,7 +59,8 @@ def test_side_effect_completion():
_GlobalNameSpace.SideEffectContainer.foo = 1 _GlobalNameSpace.SideEffectContainer.foo = 1
side_effect = get_completion('SideEffectContainer', _GlobalNameSpace.__dict__) side_effect = get_completion('SideEffectContainer', _GlobalNameSpace.__dict__)
assert isinstance(side_effect._definition, mixed.MixedObject) # It's a class that contains MixedObject.
assert isinstance(side_effect._definition.base, mixed.MixedObject)
foo = get_completion('SideEffectContainer.foo', _GlobalNameSpace.__dict__) foo = get_completion('SideEffectContainer.foo', _GlobalNameSpace.__dict__)
assert foo.name == 'foo' assert foo.name == 'foo'