1*70cbedcdSPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic 2*70cbedcdSPeter Klauslermodule m 3*70cbedcdSPeter Klausler type boring 4*70cbedcdSPeter Klausler end type 5*70cbedcdSPeter Klausler type hasAlloc 6*70cbedcdSPeter Klausler real, allocatable :: x 7*70cbedcdSPeter Klausler end type 8*70cbedcdSPeter Klausler type hasInit 9*70cbedcdSPeter Klausler real :: x = 1. 10*70cbedcdSPeter Klausler end type 11*70cbedcdSPeter Klausler type hasFinal 12*70cbedcdSPeter Klausler contains 13*70cbedcdSPeter Klausler final final 14*70cbedcdSPeter Klausler end type 15*70cbedcdSPeter Klausler contains 16*70cbedcdSPeter Klausler elemental subroutine final(x) 17*70cbedcdSPeter Klausler type(hasFinal), intent(in out) :: x 18*70cbedcdSPeter Klausler end 19*70cbedcdSPeter Klausler 20*70cbedcdSPeter Klausler recursive subroutine typeOutAssumedRank(a,b,c,d) 21*70cbedcdSPeter Klausler type(boring), intent(out) :: a(..) 22*70cbedcdSPeter Klausler type(hasAlloc), intent(out) :: b(..) 23*70cbedcdSPeter Klausler type(hasInit), intent(out) :: c(..) 24*70cbedcdSPeter Klausler type(hasFinal), intent(out) :: d(..) 25*70cbedcdSPeter Klausler !PORTABILITY: Assumed-rank actual argument should not be associated with INTENT(OUT) assumed-rank dummy argument 26*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 27*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 28*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 29*70cbedcdSPeter Klausler call typeOutAssumedRank(a, b, c, d) 30*70cbedcdSPeter Klausler !PORTABILITY: Assumed-rank actual argument should not be associated with INTENT(OUT) assumed-rank dummy argument 31*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 32*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 33*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 34*70cbedcdSPeter Klausler call classOutAssumedRank(a, b, c, d) 35*70cbedcdSPeter Klausler !PORTABILITY: Assumed-rank actual argument should not be associated with INTENT(OUT) assumed-rank dummy argument 36*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 37*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 38*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 39*70cbedcdSPeter Klausler call unlimitedOutAssumedRank(a, b, c, d) 40*70cbedcdSPeter Klausler end 41*70cbedcdSPeter Klausler recursive subroutine typeOutAssumedRankAlloc(a,b,c,d) 42*70cbedcdSPeter Klausler type(boring), intent(out), allocatable :: a(..) 43*70cbedcdSPeter Klausler type(hasAlloc), intent(out), allocatable :: b(..) 44*70cbedcdSPeter Klausler type(hasInit), intent(out), allocatable :: c(..) 45*70cbedcdSPeter Klausler type(hasFinal), intent(out), allocatable :: d(..) 46*70cbedcdSPeter Klausler call typeOutAssumedRank(a, b, c, d) 47*70cbedcdSPeter Klausler call typeOutAssumedRankAlloc(a, b, c, d) 48*70cbedcdSPeter Klausler end 49*70cbedcdSPeter Klausler recursive subroutine classOutAssumedRank(a,b,c,d) 50*70cbedcdSPeter Klausler class(boring), intent(out) :: a(..) 51*70cbedcdSPeter Klausler class(hasAlloc), intent(out) :: b(..) 52*70cbedcdSPeter Klausler class(hasInit), intent(out) :: c(..) 53*70cbedcdSPeter Klausler class(hasFinal), intent(out) :: d(..) 54*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 55*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 56*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 57*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 58*70cbedcdSPeter Klausler call typeOutAssumedRank(a, b, c, d) 59*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 60*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 61*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 62*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 63*70cbedcdSPeter Klausler call classOutAssumedRank(a, b, c, d) 64*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 65*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 66*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 67*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 68*70cbedcdSPeter Klausler call unlimitedOutAssumedRank(a, b, c, d) 69*70cbedcdSPeter Klausler end 70*70cbedcdSPeter Klausler recursive subroutine classOutAssumedRankAlloc(a,b,c,d) 71*70cbedcdSPeter Klausler class(boring), intent(out), allocatable :: a(..) 72*70cbedcdSPeter Klausler class(hasAlloc), intent(out), allocatable :: b(..) 73*70cbedcdSPeter Klausler class(hasInit), intent(out), allocatable :: c(..) 74*70cbedcdSPeter Klausler class(hasFinal), intent(out), allocatable :: d(..) 75*70cbedcdSPeter Klausler call classOutAssumedRank(a, b, c, d) 76*70cbedcdSPeter Klausler call classOutAssumedRankAlloc(a, b, c, d) 77*70cbedcdSPeter Klausler call unlimitedOutAssumedRank(a, b, c, d) 78*70cbedcdSPeter Klausler end 79*70cbedcdSPeter Klausler recursive subroutine unlimitedOutAssumedRank(a,b,c,d) 80*70cbedcdSPeter Klausler class(*), intent(out) :: a(..), b(..), c(..), d(..) 81*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 82*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 83*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 84*70cbedcdSPeter Klausler !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 85*70cbedcdSPeter Klausler call unlimitedOutAssumedRank(a, b, c, d) 86*70cbedcdSPeter Klausler end 87*70cbedcdSPeter Klausler recursive subroutine unlimitedOutAssumedRankAlloc(a,b,c,d) 88*70cbedcdSPeter Klausler class(*), intent(out), allocatable :: a(..), b(..), c(..), d(..) 89*70cbedcdSPeter Klausler call unlimitedOutAssumedRank(a, b, c, d) 90*70cbedcdSPeter Klausler call unlimitedOutAssumedRankAlloc(a, b, c, d) 91*70cbedcdSPeter Klausler end 92*70cbedcdSPeter Klausler 93*70cbedcdSPeter Klausler subroutine typeAssumedSize(a,b,c,d) 94*70cbedcdSPeter Klausler type(boring) a(*) 95*70cbedcdSPeter Klausler type(hasAlloc) b(*) 96*70cbedcdSPeter Klausler type(hasInit) c(*) 97*70cbedcdSPeter Klausler type(hasFinal) d(*) 98*70cbedcdSPeter Klausler !PORTABILITY: Assumed-size actual argument should not be associated with INTENT(OUT) assumed-rank dummy argument 99*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 100*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 101*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 102*70cbedcdSPeter Klausler call typeOutAssumedRank(a,b,c,d) 103*70cbedcdSPeter Klausler !PORTABILITY: Assumed-size actual argument should not be associated with INTENT(OUT) assumed-rank dummy argument 104*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 105*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 106*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 107*70cbedcdSPeter Klausler call classOutAssumedRank(a,b,c,d) 108*70cbedcdSPeter Klausler !PORTABILITY: Assumed-size actual argument should not be associated with INTENT(OUT) assumed-rank dummy argument 109*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 110*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 111*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 112*70cbedcdSPeter Klausler call unlimitedOutAssumedRank(a,b,c,d) 113*70cbedcdSPeter Klausler end 114*70cbedcdSPeter Klausler subroutine classAssumedSize(a,b,c,d) 115*70cbedcdSPeter Klausler class(boring) a(*) 116*70cbedcdSPeter Klausler class(hasAlloc) b(*) 117*70cbedcdSPeter Klausler class(hasInit) c(*) 118*70cbedcdSPeter Klausler class(hasFinal) d(*) 119*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 120*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 121*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 122*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 123*70cbedcdSPeter Klausler call classOutAssumedRank(a,b,c,d) 124*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 125*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 126*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 127*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 128*70cbedcdSPeter Klausler call unlimitedOutAssumedRank(a,b,c,d) 129*70cbedcdSPeter Klausler end 130*70cbedcdSPeter Klausler subroutine unlimitedAssumedSize(a,b,c,d) 131*70cbedcdSPeter Klausler class(*) a(*), b(*), c(*), d(*) 132*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 133*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 134*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 135*70cbedcdSPeter Klausler !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization 136*70cbedcdSPeter Klausler call unlimitedOutAssumedRank(a, b, c, d) 137*70cbedcdSPeter Klausler end 138*70cbedcdSPeter Klauslerend 139