inducer / inducer/pycparserext
Coord.line is always set to 0 for Asm nodes
- 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.