| ! { dg-do compile } |
| ! PR fortran/34661 ICE on user-defined assignments in where statements |
| ! Testcase contributed by Joost VandeVondele |
| |
| MODULE M1 |
| IMPLICIT NONE |
| TYPE T1 |
| INTEGER :: I |
| END TYPE T1 |
| INTERFACE ASSIGNMENT(=) |
| MODULE PROCEDURE S1 |
| END INTERFACE |
| CONTAINS |
| SUBROUTINE S1(I,J) |
| TYPE(T1), INTENT(OUT) :: I(2) |
| TYPE(T1), INTENT(IN) :: J(2) |
| I%I=-J%I |
| END SUBROUTINE S1 |
| END MODULE M1 |
| |
| USE M1 |
| TYPE(T1) :: I(2),J(2) |
| I(:)%I=1 |
| WHERE (I(:)%I>0) |
| J=I ! { dg-error "Non-ELEMENTAL user-defined assignment in WHERE" } |
| END WHERE |
| |
| WHERE (I(:)%I>0) J=I ! { dg-error "Non-ELEMENTAL user-defined assignment in WHERE" } |
| |
| END |