diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index 08e9b7b0..ba8b5ed6 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -518,7 +518,7 @@ class Script(object): names = usages.usages(self._evaluator, definitions, search_name, module) for d in set(definitions): - if isinstance(d, pr.Module): + if isinstance(d, (pr.Module, compiled.CompiledObject)): names.append(usages.Usage(self._evaluator, d, d)) elif isinstance(d, er.Instance): # Instances can be ignored, because they have been created by diff --git a/jedi/api/classes.py b/jedi/api/classes.py index 8683d194..cc388e0a 100644 --- a/jedi/api/classes.py +++ b/jedi/api/classes.py @@ -137,6 +137,8 @@ class BaseDefinition(object): return stripped.type() if isinstance(stripped, er.InstanceElement): stripped = stripped.var + if isinstance(stripped, pr.NamePart): + stripped = stripped.parent if isinstance(stripped, pr.Name): stripped = stripped.parent return type(stripped).__name__.lower() diff --git a/jedi/api/usages.py b/jedi/api/usages.py index 57043188..f984b778 100644 --- a/jedi/api/usages.py +++ b/jedi/api/usages.py @@ -9,10 +9,10 @@ from jedi.evaluate import helpers class Usage(classes.Definition): """TODO: document this""" def __init__(self, evaluator, name_part, scope): - super(Usage, self).__init__(evaluator, scope) + super(Usage, self).__init__(evaluator, name_part) self._start_pos = name_part.start_pos self.text = unicode(name_part) - self.end_pos = name_part.end_pos + #self.end_pos = name_part.end_pos @property def description(self): diff --git a/jedi/parser/representation.py b/jedi/parser/representation.py index ca02f5c4..d12b42fb 100644 --- a/jedi/parser/representation.py +++ b/jedi/parser/representation.py @@ -1395,6 +1395,9 @@ class NamePart(object): def __hash__(self): return hash(self.string) + def get_parent_until(self, *args, **kwargs): + return self.parent.get_parent_until(*args, **kwargs) + @property def start_pos(self): offset = self.parent._sub_module.line_offset diff --git a/test/completion/usages.py b/test/completion/usages.py index c64d5a2b..244d596c 100644 --- a/test/completion/usages.py +++ b/test/completion/usages.py @@ -255,7 +255,7 @@ check(DynamicParam()) # Compiled Objects # ----------------- -import sys +import _sre -#< 0 (-3,7), (0,0) -sys +#< 0 (-3,7), (0,0), ('_sre', None, None) +_sre diff --git a/test/run.py b/test/run.py index c6fd7640..52a8dec6 100755 --- a/test/run.py +++ b/test/run.py @@ -221,8 +221,10 @@ class IntegrationTestCase(object): # this means that there is a module specified wanted.append(pos_tup) else: - wanted.append((self.module_name, self.line_nr + pos_tup[0], - pos_tup[1])) + line = pos_tup[0] + if pos_tup[0] is not None: + line += self.line_nr + wanted.append((self.module_name, line, pos_tup[1])) return compare_cb(self, compare, sorted(wanted))