From 1e8dba92538e1d91de42f3e30fb661403861da67 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Mon, 21 Sep 2015 14:35:41 +0200 Subject: [PATCH] Fix classes in static analysis. --- jedi/parser/tree.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/jedi/parser/tree.py b/jedi/parser/tree.py index 646de965..98fc3843 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 [] + return None else: if self.children[3] == ')': # Empty parentheses - return [] + return None else: return self.children[3] @@ -745,19 +745,25 @@ class Class(ClassOrFunc): # Yield itself, class needs to be executed for decorator checks. yield self # 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 + arglist = self.get_super_arglist() + try: + children = arglist.children + except AttributeError: + if arglist is not None: + yield arglist + else: + for argument in children: + if argument.type == 'argument': + # metaclass= or list comprehension or */** + raise NotImplementedError('Metaclasses not implemented') + else: + yield argument # care for the class suite: for node_to_execute in self.children[-1].nodes_to_execute(): yield node_to_execute - def _create_params(parent, argslist_list): """ `argslist_list` is a list that can contain an argslist as a first item, but