1240620Sjimharris! { dg-do compile }
2252263Sjimharris! Testcase from PR 25396: User defined operators returning arrays.
3240620Sjimharrismodule geometry
4240620Sjimharris
5240620Sjimharris  implicit none
6240620Sjimharris
7240620Sjimharris  interface operator(.cross.)
8240620Sjimharris     module procedure cross
9240620Sjimharris  end interface
10240620Sjimharris
11240620Sjimharriscontains
12240620Sjimharris
13240620Sjimharris    ! Cross product between two 3d vectors.
14240620Sjimharris    pure function cross(a, b)
15240620Sjimharris      real, dimension(3), intent(in) :: a,b
16240620Sjimharris      real, dimension(3) :: cross
17240620Sjimharris
18240620Sjimharris     cross = (/ a(2) * b(3) - a(3) * b(2), &
19240620Sjimharris           a(3) * b(1) - a(1) * b(3), &
20240620Sjimharris           a(1) * b(2) - a(2) * b(1) /)
21240620Sjimharris    end function cross
22240620Sjimharris
23240620Sjimharrisend module geometry
24240620Sjimharris
25240620Sjimharrisprogram opshape
26240620Sjimharris  use geometry
27240620Sjimharris
28240620Sjimharris  implicit none
29240620Sjimharris
30240620Sjimharris  real :: t(3,3), a
31240620Sjimharris
32240620Sjimharris  a = dot_product (t(:,1), t(:,2) .cross. t(:,3))
33240620Sjimharris
34240620Sjimharrisend program opshape
35253109Sjimharris