unexpected removal of procedures associated with derived types
sunt05 opened this issue · 1 comments
Hi there,
In the recent update to 0.2.13, we were excited to see the support for procedures of derived types.
However, out trial encountered an error:
Traceback (most recent call last):
File "/opt/homebrew/Caskroom/mambaforge/base/envs/suews-dev/lib/python3.9/site-packages/f90wrap/scripts/main.py", line 363, in main
tree = tf.transform_to_generic_wrapper(tree,
File "/opt/homebrew/Caskroom/mambaforge/base/envs/suews-dev/lib/python3.9/site-packages/f90wrap/transform.py", line 1343, in transform_to_generic_wrapper
tree = remove_private_symbols(tree, force_public)
File "/opt/homebrew/Caskroom/mambaforge/base/envs/suews-dev/lib/python3.9/site-packages/f90wrap/transform.py", line 226, in remove_private_symbols
node = AccessUpdater(force_public).visit(node)
File "/opt/homebrew/Caskroom/mambaforge/base/envs/suews-dev/lib/python3.9/site-packages/f90wrap/fortran.py", line 513, in visit
result = visitor(node)
File "/opt/homebrew/Caskroom/mambaforge/base/envs/suews-dev/lib/python3.9/site-packages/f90wrap/fortran.py", line 542, in generic_visit
value = self.visit(value)
File "/opt/homebrew/Caskroom/mambaforge/base/envs/suews-dev/lib/python3.9/site-packages/f90wrap/fortran.py", line 513, in visit
result = visitor(node)
File "/opt/homebrew/Caskroom/mambaforge/base/envs/suews-dev/lib/python3.9/site-packages/f90wrap/transform.py", line 103, in visit_Module
mod = self.generic_visit(mod)
File "/opt/homebrew/Caskroom/mambaforge/base/envs/suews-dev/lib/python3.9/site-packages/f90wrap/fortran.py", line 542, in generic_visit
value = self.visit(value)
File "/opt/homebrew/Caskroom/mambaforge/base/envs/suews-dev/lib/python3.9/site-packages/f90wrap/fortran.py", line 513, in visit
result = visitor(node)
File "/opt/homebrew/Caskroom/mambaforge/base/envs/suews-dev/lib/python3.9/site-packages/f90wrap/transform.py", line 146, in visit_Type
binding_names = [b.procedures[0].name for b in node.bindings]
File "/opt/homebrew/Caskroom/mambaforge/base/envs/suews-dev/lib/python3.9/site-packages/f90wrap/transform.py", line 146, in <listcomp>
binding_names = [b.procedures[0].name for b in node.bindings]
IndexError: list index out of range
f90wrap: IndexError('list index out of range')
After looking into the source code, it seems the issue was caused by missing procedures of derived types.
Further investigation led me to the code below:
Lines 1076 to 1079 in c6de284
which seems not to consider the the normalised names of the procedures belonging to derived types (e.g., procedureA__binding__moduleB
) as the procedures with normalised names won't be included in the kept_subs
list, leading to unintentional/accidental removal.
Sorry to be so slow this this - PR looks good, I'll go ahead and merge it and then close this isse.