brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.8 KiB · c264f8e Raw
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