32 lines
697 B
Fortran
32 lines
697 B
Fortran
! { 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
|
|
! { dg-final { cleanup-modules "m1" } }
|