From 6bd7ef56f1d87ebb371e6030b11396f6fd9156a4 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Mon, 22 Sep 2014 15:41:27 +0200 Subject: [PATCH] Now most tests pass and we're able to continue getting rid of parsing.representation.Name. --- jedi/api/__init__.py | 2 +- jedi/evaluate/representation.py | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index 1d0484d6..d88b3422 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -180,7 +180,7 @@ class Script(object): comp_dct = {} for c, s in set(completions): # TODO Remove this line. c should be a namepart even before that. - if isinstance(c, pr.Name): + if c.isinstance(pr.Name): c = c.names[-1] n = str(c) if settings.case_insensitive_completion \ diff --git a/jedi/evaluate/representation.py b/jedi/evaluate/representation.py index bf785f34..f510a340 100644 --- a/jedi/evaluate/representation.py +++ b/jedi/evaluate/representation.py @@ -168,6 +168,10 @@ class Instance(use_metaclass(CachedMetaClass, Executed)): # Only names with the selfname are being added. # It is also important, that they have a len() of 2, # because otherwise, they are just something else + if isinstance(n, pr.NamePart): + # NamePart currently means a function + # TODO change this branch to scan properly for self names. + continue if unicode(n.names[0]) == self_name and len(n.names) == 2: add_self_dot_name(n) @@ -243,7 +247,12 @@ def get_instance_el(evaluator, instance, var, is_class_var=False): untouched. """ if isinstance(var, (Instance, compiled.CompiledObject, pr.Operator, Token, - pr.Module, FunctionExecution)): + pr.Module, FunctionExecution, pr.NamePart)): + if isinstance(var, pr.NamePart): + # TODO temp solution, remove later, NameParts should never get + # here. + par = get_instance_el(evaluator, instance, var.parent, is_class_var) + return helpers.FakeName(unicode(var), par, var.start_pos) return var var = wrap(evaluator, var) @@ -275,6 +284,9 @@ class InstanceElement(use_metaclass(CachedMetaClass, pr.Base)): return par def get_parent_until(self, *args, **kwargs): + if isinstance(self.var, pr.NamePart): + # TODO NameParts should never even be InstanceElements + return pr.Simple.get_parent_until(self.parent, *args, **kwargs) return pr.Simple.get_parent_until(self, *args, **kwargs) def get_definition(self):