robotpy / robotpy-cppheaderparser

DEPRECATED: use cxxheaderparser instead
Other
123 stars 39 forks source link

Regression in 4.0.0 #41

Closed tpaviot closed 4 years ago

tpaviot commented 4 years ago

The following code works on 3.3.0 release but fails from 4.0.0 and later:

import CppHeaderParser

h = """
template <class SomeType> class A {
 public:
  typedef B <SomeType> C;

  A();

 protected:
  C aCInstance;
};

"""
a = CppHeaderParser.CppHeader(h, "string")
print(a)

The error message is the following:

Traceback (most recent call last):
  File "ess.py", line 15, in <module>
    a = CppHeaderParser.CppHeader(h, "string")
  File "/home/thomas/miniconda3/envs/bindgen/lib/python3.7/site-packages/CppHeaderParser/CppHeaderParser.py", line 2981, in __init__
    self.finalize()
  File "/home/thomas/miniconda3/envs/bindgen/lib/python3.7/site-packages/CppHeaderParser/CppHeaderParser.py", line 1918, in finalize
    self.finalize_vars()
  File "/home/thomas/miniconda3/envs/bindgen/lib/python3.7/site-packages/CppHeaderParser/CppHeaderParser.py", line 1664, in finalize_vars
    var["raw_type"] = var["method"]["path"] + "::" + tag
KeyError: 'method'

Note that the issue comes from the last line C aCInstance;. If type is changed to something else but C, string is parse correctly.

ping @rainman110

virtuald commented 4 years ago

Just out of curiosity, how many more of these do you have? :)

tpaviot commented 4 years ago

I still have to pass 4.0.0, 5.0.0, 5.0.1 and 5.0.2 steps, wait and see ;)

tpaviot commented 4 years ago

@virtuald FYI it's a work related to https://github.com/tpaviot/pythonocc-generator and https://github.com/tpaviot/pythonocc-core projects, python bindings for the opencascade c++ library https://dev.opencascade.org/

virtuald commented 4 years ago

See https://github.com/robotpy/robotpy-cppheaderparser/pull/42