Skip to content

TypeError: _generate_type() got an unexpected keyword argument 'emit_declname' #48

@zehanort

Description

@zehanort

I am using pycparserext to parse, edit and then re-generate OpenCL kernels. During the re-generation phase, with some kernels, I get the following error:

File "<path>/test.py", line 131, in instrument_file
    f.write(gen.visit(ast))
File "<path>/env/lib/python3.7/site-packages/pycparser/c_generator.py", line 28, in visit
    return getattr(self, method, self.generic_visit)(node)
File "<path>/env/lib/python3.7/site-packages/pycparserext/ext_c_generator.py", line 155, in visit_FileAST
    s += self.visit(ext)
File "<path>/env/lib/python3.7/site-packages/pycparser/c_generator.py", line 28, in visit
    return getattr(self, method, self.generic_visit)(node)

... (long list of calls here) ...

File "<path>/env/lib/python3.7/site-packages/pycparser/c_generator.py", line 122, in visit_Cast
    s = '(' + self._generate_type(n.to_type, emit_declname=False) + ')'
TypeError: _generate_type() got an unexpected keyword argument 'emit_declname'

This error happens only when a call to visit_Cast occurs somewhere along the way.
Whats more, the only place where pycparserext is being used (and not pycparser) seems to be the second call in the trace above. Note that gen comes from pycparserext. From somewhere near the start of my script:

from pycparserext.ext_c_generator import OpenCLCGenerator
...
gen = OpenCLCGenerator()

It seems to me that your _generate_type() is called and not the one from pycparser, despite the fact that the trace says otherwise, given that it is the implementation of _generate_type() from pycparserext (and not from pycparser) that does not have the keyword argument emit_declname.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions