inducer / inducer/pycparserext

Coord.line is always set to 0 for Asm nodes

Open
#40 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
91
Forks
30
PR merge metrics
No merged PRs in 30d

Description

As the title says, the line number in the Coord object is always set to 0 for Asm nodes. This happens because lineno in the following lines

https://github.com/inducer/pycparserext/blob/b602b4de77bee3a9e41223fa1d6bb91dd56209e3/pycparserext/ext_c_parser.py#L300
https://github.com/inducer/pycparserext/blob/b602b4de77bee3a9e41223fa1d6bb91dd56209e3/pycparserext/ext_c_parser.py#L306
https://github.com/inducer/pycparserext/blob/b602b4de77bee3a9e41223fa1d6bb91dd56209e3/pycparserext/ext_c_parser.py#L313
https://github.com/inducer/pycparserext/blob/b602b4de77bee3a9e41223fa1d6bb91dd56209e3/pycparserext/ext_c_parser.py#L320

tries to get the 'lineno' attribute from p.slice[1] that isn't there so getattr() will return the default value of 0 instead of the actual line number.

I figured out that p.slice[2] contains the appropriate 'lineno' attribute. Changing the last param of the Asm constructor calls from

`coord=self._coord(p.lineno(1)))`

to

`coord=self._coord(p.lineno(2)))`

makes the code to return correct file:line position for Asm nodes. Coord.column seems often to be set to None while pycparser fills it with meaningful values.

Would you kindly verify whether that simply fix is okay?

I cannot provide any test case right now because it would require a file with several lines. I confirm that the above mentioned fix works for several real-world C sources I fed in so far.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.