| ! { dg-do link } |
| ! |
| ! PR fortran/40571 |
| ! |
| ! This test case adds check for the new Fortran 2008 array parameters |
| ! in ISO_FORTRAN_ENV: integer_kinds, logical_kinds, character_kinds, |
| ! and real_kinds. |
| ! |
| ! The test thus also checks that the values of the parameter are used |
| ! and no copy is made. (Cf. PR 44856.) |
| |
| program test |
| use iso_fortran_env, only: integer_kinds, character_kinds |
| implicit none |
| integer :: aaaa(2),i |
| i=1 |
| |
| print *, integer_kinds |
| print *, integer_kinds(1) |
| print *, (integer_kinds) |
| print *, (integer_kinds + 1) |
| print *, integer_kinds(1:2) |
| print *, integer_kinds(i) |
| |
| aaaa = character_kinds |
| aaaa(1:2) = character_kinds(1:2) |
| aaaa(i) = character_kinds(i) |
| aaaa = character_kinds + 0 |
| aaaa(1:2) = character_kinds(1:2) + 0 |
| aaaa(i) = character_kinds(i) + 0 |
| end program test |
| |
| subroutine one() |
| use iso_fortran_env, only: ik => integer_kinds, ik2 => integer_kinds |
| implicit none |
| |
| if (any (ik /= ik2)) call never_call_me() |
| end subroutine one |
| |
| subroutine two() |
| use iso_fortran_env |
| implicit none |
| |
| ! Should be 1, 2, 4, 8 and possibly 16 |
| if (size (integer_kinds) < 4) call never_call_me() |
| if (any (integer_kinds(1:4) /= [1,2,4,8])) call never_call_me() |
| if (any (integer_kinds /= logical_kinds)) call never_call_me() |
| |
| if (size (character_kinds) /= 2) call never_call_me() |
| if (any (character_kinds /= [1,4])) call never_call_me() |
| |
| if (size (real_kinds) < 2) call never_call_me() |
| if (any (real_kinds(1:2) /= [4,8])) call never_call_me() |
| end subroutine two |
| |
| subroutine three() |
| use iso_fortran_env |
| integer :: i, j(2) |
| i = real_kinds(1) |
| j = real_kinds(1:2) |
| end subroutine three |