From 19a5643a2e057a4f3e9e07bcbdf23df10c335b0e Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Mon, 21 Sep 2015 14:29:15 +0200 Subject: [PATCH] Few fixes to the nodes_to_execute logic. --- jedi/parser/tree.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/jedi/parser/tree.py b/jedi/parser/tree.py index 88d4fddc..646de965 100644 --- a/jedi/parser/tree.py +++ b/jedi/parser/tree.py @@ -722,10 +722,10 @@ class Class(ClassOrFunc): def get_super_arglist(self): if self.children[2] != '(': # Has no parentheses - return None + return [] else: if self.children[3] == ')': # Empty parentheses - return None + return [] else: return self.children[3] @@ -744,12 +744,14 @@ class Class(ClassOrFunc): def nodes_to_execute(self, last_added=False): # Yield itself, class needs to be executed for decorator checks. yield self - for param in self.get_super_arglist: - if param.default is None: - yield param.default - else: - # metaclass= + # Super arguments. + for args in self.get_super_arglist: + if args.type == 'args': + # metaclass= or list comprehension or */** raise NotImplementedError('Metaclasses not implemented') + else: + yield args + # care for the class suite: for node_to_execute in self.children[-1].nodes_to_execute(): yield node_to_execute @@ -1226,6 +1228,12 @@ class YieldExpr(BaseNode): def type(self): return 'yield_expr' + def nodes_to_execute(self, last_added=False): + if len(self.children) > 1: + return self.children[1].nodes_to_execute() + else: + return [] + def _defined_names(current): """