diff options
author | Eli Bendersky <eliben@users.noreply.github.com> | 2015-12-15 05:46:23 -0800 |
---|---|---|
committer | Eli Bendersky <eliben@users.noreply.github.com> | 2015-12-15 05:46:23 -0800 |
commit | aceb9c95bd2bf877e301208a34693516eea27850 (patch) | |
tree | f50dc61752f20083a16b15b8d8066680ae0dabfa | |
parent | 904cecd150c2c5c768944d199169957cdb8433f9 (diff) | |
parent | 8a1740608ae3383e1187b897ce4a070b4c3f1cde (diff) | |
download | pycparser-aceb9c95bd2bf877e301208a34693516eea27850.tar.gz |
Merge pull request #108 from cod3monk/bugfix
Fix for #107 "No coord for Prgama Node"
-rw-r--r-- | pycparser/c_parser.py | 4 | ||||
-rwxr-xr-x | tests/test_c_parser.py | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/pycparser/c_parser.py b/pycparser/c_parser.py index 494f501..c5a9e68 100644 --- a/pycparser/c_parser.py +++ b/pycparser/c_parser.py @@ -557,9 +557,9 @@ class CParser(PLYParser): | PPPRAGMA PPPRAGMASTR """ if len(p) == 3: - p[0] = c_ast.Pragma(p[2]) + p[0] = c_ast.Pragma(p[2], self._coord(p.lineno(2))) else: - p[0] = c_ast.Pragma("") + p[0] = c_ast.Pragma("", self._coord(p.lineno(1))) # In function definitions, the declarator can be followed by # a declaration list, for old "K&R style" function definitios. diff --git a/tests/test_c_parser.py b/tests/test_c_parser.py index ed957dc..521f77f 100755 --- a/tests/test_c_parser.py +++ b/tests/test_c_parser.py @@ -1290,14 +1290,21 @@ class TestCParser_fundamentals(TestCParser_base): void main() { #pragma foo for(;;) {} + #pragma } ''' s1_ast = self.parse(s1) self.assertTrue(isinstance(s1_ast.ext[0], Pragma)) self.assertEqual(s1_ast.ext[0].string, 'bar') + self.assertEqual(s1_ast.ext[0].coord.line, 2) self.assertTrue(isinstance(s1_ast.ext[1].body.block_items[0], Pragma)) self.assertEqual(s1_ast.ext[1].body.block_items[0].string, 'foo') + self.assertEqual(s1_ast.ext[1].body.block_items[0].coord.line, 4) + + self.assertTrue(isinstance(s1_ast.ext[1].body.block_items[2], Pragma)) + self.assertEqual(s1_ast.ext[1].body.block_items[2].string, '') + self.assertEqual(s1_ast.ext[1].body.block_items[2].coord.line, 6) class TestCParser_whole_code(TestCParser_base): |