summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatricio Inzaghi <51960393+pinzaghi@users.noreply.github.com>2020-12-09 14:51:24 +0100
committerGitHub <noreply@github.com>2020-12-09 05:51:24 -0800
commit47043dd3cc82fd53ce4de3e3f12f05ffff0eb963 (patch)
treecf48e12ebd7b39eb46496228efa7bb3aa59ecc93
parentef4998692c753a635eba58975ae80834dfc14538 (diff)
downloadpycparser-47043dd3cc82fd53ce4de3e3f12f05ffff0eb963.tar.gz
Extra line breaks when c_ast.If are chained (#401)
-rw-r--r--pycparser/c_generator.py2
-rw-r--r--tests/test_c_generator.py16
2 files changed, 18 insertions, 0 deletions
diff --git a/pycparser/c_generator.py b/pycparser/c_generator.py
index 36b95fb..983d578 100644
--- a/pycparser/c_generator.py
+++ b/pycparser/c_generator.py
@@ -399,6 +399,8 @@ class CGenerator(object):
# compute its own indentation.
#
return self.visit(n)
+ elif typ in (c_ast.If,):
+ return indent + self.visit(n)
else:
return indent + self.visit(n) + '\n'
diff --git a/tests/test_c_generator.py b/tests/test_c_generator.py
index a7e52e8..3c724a0 100644
--- a/tests/test_c_generator.py
+++ b/tests/test_c_generator.py
@@ -423,5 +423,21 @@ class TestCasttoC(unittest.TestCase):
self.assertEqual(generator.visit(c_ast.Cast(void_type, test_fun)),
'(void) test_fun()')
+ def test_nested_else_if_line_breaks(self):
+ generator = c_generator.CGenerator()
+ test_ast1 = c_ast.If(None, None, None)
+ test_ast2 = c_ast.If(None, None, c_ast.If(None, None, None))
+ test_ast3 = c_ast.If(None, None, c_ast.If(None, None, c_ast.If(None, None, None)))
+ test_ast4 = c_ast.If(None, c_ast.Compound([]), c_ast.If(None, c_ast.Compound([]), c_ast.If(None, c_ast.Compound([]), None)))
+
+ self.assertEqual(generator.visit(test_ast1),
+ 'if ()\n \n')
+ self.assertEqual(generator.visit(test_ast2),
+ 'if ()\n \nelse\n if ()\n \n')
+ self.assertEqual(generator.visit(test_ast3),
+ 'if ()\n \nelse\n if ()\n \nelse\n if ()\n \n')
+ self.assertEqual(generator.visit(test_ast4),
+ 'if ()\n{\n}\nelse\n if ()\n{\n}\nelse\n if ()\n{\n}\n')
+
if __name__ == "__main__":
unittest.main()