1! { dg-do compile } 2! 3! PR fortran/46122 4! 5! PROTECT check 6! 7! Contributed by Jared Ahern 8! 9 10MODULE amod 11 IMPLICIT NONE 12 TYPE foo 13 INTEGER :: i = 4 14 INTEGER, POINTER :: j => NULL() 15 END TYPE foo 16 TYPE(foo), SAVE, PROTECTED :: a 17 TYPE(foo), SAVE, PROTECTED, POINTER :: b 18 INTEGER, SAVE, PROTECTED :: i = 5 19 INTEGER, SAVE, PROTECTED, POINTER :: j => NULL() 20contains 21 subroutine alloc() 22 allocate(b,j) 23 end subroutine alloc 24END MODULE amod 25 26PROGRAM test 27 USE amod 28 IMPLICIT NONE 29 INTEGER, TARGET :: k 30 TYPE(foo), TARGET :: c 31 k = 2 ! local 32 c%i = 9 ! local 33 34 call alloc() 35 36 i = k ! { dg-error "is PROTECTED" } 37 j => k ! { dg-error "is PROTECTED" } 38 j = 3 ! OK 1 39 a = c ! { dg-error "is PROTECTED" } 40 a%i = k ! { dg-error "is PROTECTED" } 41 a%j => k ! { dg-error "is PROTECTED" } 42 a%j = 5 ! OK 2 43 b => c ! { dg-error "is PROTECTED" } 44 b%i = k ! OK 3 45 b%j => k ! OK 4 46 b%j = 5 ! OK 5 47 48END PROGRAM test 49