1! { dg-do compile }
2! PR fortran/34661 ICE on user-defined assignments in where statements
3! Testcase contributed by Joost VandeVondele
4
5MODULE M1
6 IMPLICIT NONE
7 TYPE T1
8   INTEGER :: I
9 END TYPE T1
10 INTERFACE ASSIGNMENT(=)
11  MODULE PROCEDURE S1
12 END INTERFACE
13CONTAINS
14 SUBROUTINE S1(I,J)
15   TYPE(T1), INTENT(OUT)  :: I(2)
16   TYPE(T1), INTENT(IN)  :: J(2)
17   I%I=-J%I
18 END SUBROUTINE S1
19END MODULE M1
20
21USE M1
22TYPE(T1) :: I(2),J(2)
23I(:)%I=1
24WHERE (I(:)%I>0)
25 J=I                       ! { dg-error "Non-ELEMENTAL user-defined assignment in WHERE" }
26END WHERE
27
28WHERE (I(:)%I>0) J=I       ! { dg-error "Non-ELEMENTAL user-defined assignment in WHERE" }
29
30END
31