139 lines · plain
1! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic2module m3 type boring4 end type5 type hasAlloc6 real, allocatable :: x7 end type8 type hasInit9 real :: x = 1.10 end type11 type hasFinal12 contains13 final final14 end type15 contains16 elemental subroutine final(x)17 type(hasFinal), intent(in out) :: x18 end19 20 recursive subroutine typeOutAssumedRank(a,b,c,d)21 type(boring), intent(out) :: a(..)22 type(hasAlloc), intent(out) :: b(..)23 type(hasInit), intent(out) :: c(..)24 type(hasFinal), intent(out) :: d(..)25 !PORTABILITY: Assumed-rank actual argument should not be associated with INTENT(OUT) assumed-rank dummy argument [-Wportability]26 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization27 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization28 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization29 call typeOutAssumedRank(a, b, c, d)30 !PORTABILITY: Assumed-rank actual argument should not be associated with INTENT(OUT) assumed-rank dummy argument [-Wportability]31 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization32 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization33 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization34 call classOutAssumedRank(a, b, c, d)35 !PORTABILITY: Assumed-rank actual argument should not be associated with INTENT(OUT) assumed-rank dummy argument [-Wportability]36 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization37 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization38 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization39 call unlimitedOutAssumedRank(a, b, c, d)40 end41 recursive subroutine typeOutAssumedRankAlloc(a,b,c,d)42 type(boring), intent(out), allocatable :: a(..)43 type(hasAlloc), intent(out), allocatable :: b(..)44 type(hasInit), intent(out), allocatable :: c(..)45 type(hasFinal), intent(out), allocatable :: d(..)46 call typeOutAssumedRank(a, b, c, d)47 call typeOutAssumedRankAlloc(a, b, c, d)48 end49 recursive subroutine classOutAssumedRank(a,b,c,d)50 class(boring), intent(out) :: a(..)51 class(hasAlloc), intent(out) :: b(..)52 class(hasInit), intent(out) :: c(..)53 class(hasFinal), intent(out) :: d(..)54 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization55 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization56 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization57 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization58 call typeOutAssumedRank(a, b, c, d)59 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization60 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization61 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization62 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization63 call classOutAssumedRank(a, b, c, d)64 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization65 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization66 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization67 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization68 call unlimitedOutAssumedRank(a, b, c, d)69 end70 recursive subroutine classOutAssumedRankAlloc(a,b,c,d)71 class(boring), intent(out), allocatable :: a(..)72 class(hasAlloc), intent(out), allocatable :: b(..)73 class(hasInit), intent(out), allocatable :: c(..)74 class(hasFinal), intent(out), allocatable :: d(..)75 call classOutAssumedRank(a, b, c, d)76 call classOutAssumedRankAlloc(a, b, c, d)77 call unlimitedOutAssumedRank(a, b, c, d)78 end79 recursive subroutine unlimitedOutAssumedRank(a,b,c,d)80 class(*), intent(out) :: a(..), b(..), c(..), d(..)81 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization82 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization83 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization84 !ERROR: Assumed-rank actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization85 call unlimitedOutAssumedRank(a, b, c, d)86 end87 recursive subroutine unlimitedOutAssumedRankAlloc(a,b,c,d)88 class(*), intent(out), allocatable :: a(..), b(..), c(..), d(..)89 call unlimitedOutAssumedRank(a, b, c, d)90 call unlimitedOutAssumedRankAlloc(a, b, c, d)91 end92 93 subroutine typeAssumedSize(a,b,c,d)94 type(boring) a(*)95 type(hasAlloc) b(*)96 type(hasInit) c(*)97 type(hasFinal) d(*)98 !PORTABILITY: Assumed-size actual argument should not be associated with INTENT(OUT) assumed-rank dummy argument [-Wportability]99 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization100 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization101 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization102 call typeOutAssumedRank(a,b,c,d)103 !PORTABILITY: Assumed-size actual argument should not be associated with INTENT(OUT) assumed-rank dummy argument [-Wportability]104 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization105 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization106 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization107 call classOutAssumedRank(a,b,c,d)108 !PORTABILITY: Assumed-size actual argument should not be associated with INTENT(OUT) assumed-rank dummy argument [-Wportability]109 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization110 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization111 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization112 call unlimitedOutAssumedRank(a,b,c,d)113 end114 subroutine classAssumedSize(a,b,c,d)115 class(boring) a(*)116 class(hasAlloc) b(*)117 class(hasInit) c(*)118 class(hasFinal) d(*)119 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization120 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization121 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization122 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization123 call classOutAssumedRank(a,b,c,d)124 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization125 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization126 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization127 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization128 call unlimitedOutAssumedRank(a,b,c,d)129 end130 subroutine unlimitedAssumedSize(a,b,c,d)131 class(*) a(*), b(*), c(*), d(*)132 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization133 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization134 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization135 !ERROR: Assumed-size actual argument may not be associated with INTENT(OUT) assumed-rank dummy argument requiring finalization, destruction, or initialization136 call unlimitedOutAssumedRank(a, b, c, d)137 end138end139