From 10df0f933f931a8e0e70304d823f6df0dc3000bd Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Thu, 5 Mar 2015 15:30:07 +0100 Subject: [PATCH] Remove the strange check in the parser to always create expr_stmt and file_input. --- jedi/parser/__init__.py | 6 ++++++ jedi/parser/pgen2/parse.py | 7 +++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/jedi/parser/__init__.py b/jedi/parser/__init__.py index 64434b03..3dc982bc 100644 --- a/jedi/parser/__init__.py +++ b/jedi/parser/__init__.py @@ -153,6 +153,12 @@ class Parser(object): self.error_recovery) tokenizer = tokenizer or tokenize.source_tokens(source) self.module = p.parse(self._tokenize(tokenizer)) + if self.module.type != 'file_input': + # If there's only one statement, we get back a non-module. That's + # not what we want, we want a module, so we add it here: + self.module = self.convert_node(grammar, + grammar.symbol2number['file_input'], + [self.module]) if added_newline: self.remove_last_newline() diff --git a/jedi/parser/pgen2/parse.py b/jedi/parser/pgen2/parse.py index 7d6dac73..c8ba70d3 100644 --- a/jedi/parser/pgen2/parse.py +++ b/jedi/parser/pgen2/parse.py @@ -190,11 +190,10 @@ class PgenParser(object): # If there's exactly one child, return that child instead of creating a # new node. We still create expr_stmt and file_input though, because a # lot of Jedi depends on its logic. - if len(children) != 1 or type in (-1, - self.grammar.symbol2number['file_input']): - newnode = self.convert_node(self.grammar, type, children) - else: + if len(children) == 1: newnode = children[0] + else: + newnode = self.convert_node(self.grammar, type, children) try: # Equal to: