! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic ! A construct entity does not have the POINTER or ALLOCATABLE attribute, ! except in SELECT RANK. subroutine test(up,ua,rp,ra) class(*), pointer :: up class(*), allocatable :: ua real, pointer :: rp(..) real, allocatable :: ra(..) real, target :: x real, pointer :: p real, allocatable :: a associate (s => p) !ERROR: The left-hand side of a pointer assignment is not definable !BECAUSE: 's' is not a pointer s => x !ERROR: Entity in ALLOCATE statement must have the ALLOCATABLE or POINTER attribute allocate(s) !ERROR: Name in DEALLOCATE statement must have the ALLOCATABLE or POINTER attribute deallocate(s) !ERROR: 's' may not appear in NULLIFY !BECAUSE: 's' is not a pointer nullify(s) end associate select type(s => up) type is (real) !ERROR: The left-hand side of a pointer assignment is not definable !BECAUSE: 's' is not a pointer s => x !ERROR: Entity in ALLOCATE statement must have the ALLOCATABLE or POINTER attribute allocate(s) !ERROR: Name in DEALLOCATE statement must have the ALLOCATABLE or POINTER attribute deallocate(s) !ERROR: 's' may not appear in NULLIFY !BECAUSE: 's' is not a pointer nullify(s) end select select rank(s => rp) rank(0) s => x ! ok allocate(s) ! ok deallocate(s) ! ok nullify(s) ! ok !ERROR: RANK (*) cannot be used when selector is POINTER or ALLOCATABLE rank(*) rank default !ERROR: The left-hand side of a pointer assignment must not be an assumed-rank dummy argument !ERROR: pointer 's' associated with object 'x' with incompatible type or shape s => x !ERROR: An assumed-rank dummy argument may not appear in an ALLOCATE statement allocate(s) deallocate(s) ! ok nullify(s) ! ok end select associate (s => a) !ERROR: Entity in ALLOCATE statement must have the ALLOCATABLE or POINTER attribute allocate(s) !ERROR: Name in DEALLOCATE statement must have the ALLOCATABLE or POINTER attribute deallocate(s) end associate select type(s => ua) type is (real) !ERROR: Entity in ALLOCATE statement must have the ALLOCATABLE or POINTER attribute allocate(s) !ERROR: Name in DEALLOCATE statement must have the ALLOCATABLE or POINTER attribute deallocate(s) end select select rank(s => ra) rank(0) allocate(s) ! ok deallocate(s) ! ok !ERROR: RANK (*) cannot be used when selector is POINTER or ALLOCATABLE rank(*) rank default !ERROR: An assumed-rank dummy argument may not appear in an ALLOCATE statement allocate(s) deallocate(s) ! ok end select end