subroutine test()
implicit none
integer, parameter :: n = 10
type :: field_type
real, dimension(10) :: data
end type field_type
type(field_type) :: a, b(5)
a%data(n) = 0.0
b%data(n) = 1.0
b(:)%data(n) = 2.0
end subroutine test
(i.e. b is an array of structures but is accessed without any indication that it is an array) results in a crash:
File "/home/kbc59144/Projects/PSyclone/src/psyclone/psyir/frontend/fparser2.py", line 3870, in _assignment_handler
self.process_nodes(parent=assignment, nodes=[node.items[0]])
File "/home/kbc59144/Projects/PSyclone/src/psyclone/psyir/frontend/fparser2.py", line 2677, in process_nodes
psy_child = self._create_child(child, parent)
File "/home/kbc59144/Projects/PSyclone/src/psyclone/psyir/frontend/fparser2.py", line 2740, in _create_child
return handler(child, parent)
File "/home/kbc59144/Projects/PSyclone/src/psyclone/psyir/frontend/fparser2.py", line 3943, in _data_ref_handler
new_ref = _create_struct_reference(
File "/home/kbc59144/Projects/PSyclone/src/psyclone/psyir/frontend/fparser2.py", line 986, in _create_struct_reference
return base_ref.create(base_symbol, new_members, parent=parent)
File "/home/kbc59144/Projects/PSyclone/src/psyclone/psyir/nodes/structure_reference.py", line 129, in create
return StructureReference.\
File "/home/kbc59144/Projects/PSyclone/src/psyclone/psyir/nodes/structure_reference.py", line 178, in _create
raise TypeError(
TypeError: A StructureReference must refer to a symbol that is (or could be) a structure, however symbol 'b' has type 'Array<field_type: DataTypeSymbol, shape=[5]>'.
Running PSyclone on:
(i.e.
b
is an array of structures but is accessed without any indication that it is an array) results in a crash: