diff --git a/jedi/parsing_representation.py b/jedi/parsing_representation.py index 1576861f..4dcf50f6 100644 --- a/jedi/parsing_representation.py +++ b/jedi/parsing_representation.py @@ -423,6 +423,8 @@ class Class(Scope): string += ':\n' string += super(Class, self).get_code(True, indention) if self.is_empty(): + if self.docstr: + string += indention string += "pass\n" return string @@ -472,6 +474,8 @@ class Function(Scope): string += "def %s(%s):\n" % (self.name, params) string += super(Function, self).get_code(True, indention) if self.is_empty(): + if self.docstr: + string += indention string += 'pass\n' return string diff --git a/test/test_parsing_representation.py b/test/test_parsing_representation.py new file mode 100644 index 00000000..e090d4d4 --- /dev/null +++ b/test/test_parsing_representation.py @@ -0,0 +1,29 @@ +from jedi.parsing import Parser + +def test_get_code(): + """Use the same code that the parser also generates, to compare""" + s = \ +'''"""a docstring""" +class SomeClass(object, mixin): + def __init__(self): + self.xy = 3.0 + 'statement docstr' + def some_method(self): + return 1 + def yield_method(self): + while hasattr(self, 'xy'): + yield True + for x in [1, 2]: + yield x + def empty(self): + pass +class Empty: + pass +class WithDocstring: + """class docstr""" + pass +def method_with_docstring(): + """class docstr""" + pass +''' + assert Parser(s).module.get_code() == s