!RUN: %python %S/test_errors.py %s %flang_fc1 module m contains subroutine s(x, y, mask) class(*), allocatable, intent(in out) :: x(:), y(:) logical, intent(in) :: mask(:) select type(x) type is(integer) print *, 'before, x is integer', x type is(real) print *, 'before, x is real', x class default print *, 'before, x has some other type' end select select type(y) type is(integer) print *, 'y is integer', y type is(real) print *, 'y is real', y end select print *, 'mask', mask !ERROR: Assignment to whole polymorphic allocatable 'x' may not be nested in a WHERE statement or construct where(mask) x = y select type(x) type is(integer) print *, 'after, x is integer', x type is(real) print *, 'after, x is real', x class default print *, 'before, x has some other type' end select print * end end program main use m class(*), allocatable :: x(:), y(:) x = [1, 2] y = [3., 4.] call s(x, y, [.false., .false.]) x = [1, 2] y = [3., 4.] call s(x, y, [.false., .true.]) x = [1, 2] y = [3., 4.] call s(x, y, [.true., .false.]) x = [1, 2] y = [3., 4.] call s(x, y, [.true., .true.]) end program main