ieee_inexact = ieee_flag_type(16)
type(ieee_flag_type), parameter :: &
- ieee_usual(:) = [ &
+ ieee_usual(*) = [ &
ieee_overflow, ieee_divide_by_zero, ieee_invalid ], &
- ieee_all(:) = [ &
+ ieee_all(*) = [ &
ieee_usual, ieee_underflow, ieee_inexact ]
type :: ieee_modes_type ! Fortran 2018, 17.7
integer, parameter :: atomic_int_kind = 8
integer, parameter :: atomic_logical_kind = 8
- integer, parameter :: character_kinds(:) = [1, 2, 4]
+ integer, parameter :: character_kinds(*) = [1, 2, 4]
integer, parameter :: int8 = 1, int16 = 2, int32 = 4, int64 = 8, int128 = 16
- integer, parameter :: integer_kinds(:) = [int8, int16, int32, int64, int128]
+ integer, parameter :: integer_kinds(*) = [int8, int16, int32, int64, int128]
integer, parameter :: &
logical8 = 1, logical16 = 2, logical32 = 4, logical64 = 8
- integer, parameter :: logical_kinds(:) = &
+ integer, parameter :: logical_kinds(*) = &
[logical8, logical16, logical32, logical64]
integer, parameter :: &
real16 = 2, real32 = 4, real64 = 8, real80 = 10, real128 = 16
- integer, parameter :: real_kinds(:) = &
+ integer, parameter :: real_kinds(*) = &
[real16, 3, real32, real64, real80, real128]
integer, parameter :: current_team = -1, initial_team = -2, parent_team = -3
integer(8) i
end type
- integer(8), parameter :: new_shape(:) = [2, 4]
+ integer(8), parameter :: new_shape(*) = [2, 4]
integer(4), parameter :: order(2) = [2, 1]
! Testing integers (similar to real and complex)
- integer(4), parameter :: int_source(:) = [1, 2, 3, 4, 5, 6]
+ integer(4), parameter :: int_source(*) = [1, 2, 3, 4, 5, 6]
integer(4), parameter :: int_pad(2) = [7, 8]
- integer(4), parameter :: int_expected_result(:, :) = reshape([1, 5, 2, 6, 3, 7, 4, 8], new_shape)
- integer(4), parameter :: int_result(:, :) = reshape(int_source, new_shape, int_pad, order)
+ integer(4), parameter :: int_expected_result(*, *) = reshape([1, 5, 2, 6, 3, 7, 4, 8], new_shape)
+ integer(4), parameter :: int_result(*, *) = reshape(int_source, new_shape, int_pad, order)
logical, parameter :: test_reshape_integer_1 = all(int_expected_result == int_result)
logical, parameter :: test_reshape_integer_2 = all(shape(int_result, 8).EQ.new_shape)
! Testing characters
- character(kind=1, len=3), parameter ::char_source(:) = ["abc", "def", "ghi", "jkl", "mno", "pqr"]
+ character(kind=1, len=3), parameter ::char_source(*) = ["abc", "def", "ghi", "jkl", "mno", "pqr"]
character(kind=1,len=3), parameter :: char_pad(2) = ["stu", "vxy"]
- character(kind=1, len=3), parameter :: char_expected_result(:, :) = &
+ character(kind=1, len=3), parameter :: char_expected_result(*, *) = &
reshape(["abc", "mno", "def", "pqr", "ghi", "stu", "jkl", "vxy"], new_shape)
- character(kind=1, len=3), parameter :: char_result(:, :) = &
+ character(kind=1, len=3), parameter :: char_result(*, *) = &
reshape(char_source, new_shape, char_pad, order)
logical, parameter :: test_reshape_char_1 = all(char_result == char_expected_result)
! Testing derived types
- type(A), parameter :: derived_source(:) = &
+ type(A), parameter :: derived_source(*) = &
[A(x=1.5, i=1), A(x=2.5, i=2), A(x=3.5, i=3), A(x=4.5, i=4), A(x=5.5, i=5), A(x=6.5, i=6)]
type(A), parameter :: derived_pad(2) = [A(x=7.5, i=7), A(x=8.5, i=8)]
- type(A), parameter :: derived_expected_result(:, :) = &
+ type(A), parameter :: derived_expected_result(*, *) = &
reshape([a::a(x=1.5_4,i=1_8),a(x=5.5_4,i=5_8),a(x=2.5_4,i=2_8), a(x=6.5_4,i=6_8), &
a(x=3.5_4,i=3_8),a(x=7.5_4,i=7_8),a(x=4.5_4,i=4_8),a(x=8.5_4,i=8_8)], new_shape)
- type(A), parameter :: derived_result(:, :) = reshape(derived_source, new_shape, derived_pad, order)
+ type(A), parameter :: derived_result(*, *) = reshape(derived_source, new_shape, derived_pad, order)
logical, parameter :: test_reshape_derived_1 = all((derived_result%x.EQ.derived_expected_result%x) &
.AND.(derived_result%i.EQ.derived_expected_result%i))
end type
type(t) :: ta(0:2)
character(len=2) :: ca(-1:1)
- integer, parameter :: lba1(:) = lbound(a1)
+ integer, parameter :: lba1(*) = lbound(a1)
logical, parameter :: test_lba1 = all(lba1 == [0])
- integer, parameter :: lba2(:) = lbound(a2)
+ integer, parameter :: lba2(*) = lbound(a2)
logical, parameter :: test_lba2 = all(lba2 == [0])
- integer, parameter :: uba2(:) = ubound(a2)
- logical, parameter :: test_uba2 = all(uba2 == [-1])
- integer, parameter :: lbtadim(:) = lbound(ta,1)
+ integer, parameter :: lbtadim(*) = lbound(ta,1)
logical, parameter :: test_lbtadim = lbtadim == 0
- integer, parameter :: ubtadim(:) = ubound(ta,1)
+ integer, parameter :: ubtadim(*) = ubound(ta,1)
logical, parameter :: test_ubtadim = ubtadim == 2
- integer, parameter :: lbta1(:) = lbound(ta)
+ integer, parameter :: lbta1(*) = lbound(ta)
logical, parameter :: test_lbta1 = all(lbta1 == [0])
- integer, parameter :: ubta1(:) = ubound(ta)
+ integer, parameter :: ubta1(*) = ubound(ta)
logical, parameter :: test_ubta1 = all(ubta1 == [2])
- integer, parameter :: lbta2(:) = lbound(ta(:))
+ integer, parameter :: lbta2(*) = lbound(ta(:))
logical, parameter :: test_lbta2 = all(lbta2 == [1])
- integer, parameter :: ubta2(:) = ubound(ta(:))
+ integer, parameter :: ubta2(*) = ubound(ta(:))
logical, parameter :: test_ubta2 = all(ubta2 == [3])
- integer, parameter :: lbta3(:) = lbound(ta%a)
+ integer, parameter :: lbta3(*) = lbound(ta%a)
logical, parameter :: test_lbta3 = all(lbta3 == [1])
- integer, parameter :: ubta3(:) = ubound(ta%a)
+ integer, parameter :: ubta3(*) = ubound(ta%a)
logical, parameter :: test_ubta3 = all(ubta3 == [3])
- integer, parameter :: lbca1(:) = lbound(ca)
+ integer, parameter :: lbca1(*) = lbound(ca)
logical, parameter :: test_lbca1 = all(lbca1 == [-1])
- integer, parameter :: ubca1(:) = ubound(ca)
+ integer, parameter :: ubca1(*) = ubound(ca)
logical, parameter :: test_ubca1 = all(ubca1 == [1])
- integer, parameter :: lbca2(:) = lbound(ca(:)(1:1))
+ integer, parameter :: lbca2(*) = lbound(ca(:)(1:1))
logical, parameter :: test_lbca2 = all(lbca2 == [1])
- integer, parameter :: ubca2(:) = ubound(ca(:)(1:1))
+ integer, parameter :: ubca2(*) = ubound(ca(:)(1:1))
logical, parameter :: test_ubca2 = all(ubca2 == [3])
- integer, parameter :: lbfoo(:) = lbound(foo())
+ integer, parameter :: lbfoo(*) = lbound(foo())
logical, parameter :: test_lbfoo = all(lbfoo == [1,1])
- integer, parameter :: ubfoo(:) = ubound(foo())
+ integer, parameter :: ubfoo(*) = ubound(foo())
logical, parameter :: test_ubfoo = all(ubfoo == [2,3])
end subroutine
subroutine test2
real :: a(2:3,4:6)
associate (b => a)
block
- integer, parameter :: lbb(:) = lbound(b)
+ integer, parameter :: lbb(*) = lbound(b)
logical, parameter :: test_lbb = all(lbb == [2,4])
- integer, parameter :: ubb(:) = ubound(b)
+ integer, parameter :: ubb(*) = ubound(b)
logical, parameter :: test_ubb = all(ubb == [3,6])
end block
end associate
associate (b => a + 0)
block
- integer, parameter :: lbb(:) = lbound(b)
+ integer, parameter :: lbb(*) = lbound(b)
logical, parameter :: test_lbb = all(lbb == [1,1])
- integer, parameter :: ubb(:) = ubound(b)
+ integer, parameter :: ubb(*) = ubound(b)
logical, parameter :: test_ubb = all(ubb == [2,3])
end block
end associate
use :: m, only: a_type
type TestType1
integer, allocatable :: ok(:)
- integer :: nok(:)
+ integer :: nok(10)
end type
type TestType2
integer, pointer :: ok
end type
type type2
- type(type1) :: t1(:)
+ type(type1), pointer :: t1(:)
end type
type A
-! Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
+! Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
!
! Licensed under the Apache License, Version 2.0 (the "License");
! you may not use this file except in compliance with the License.
! class(t1),intent(inout)::dtv
! integer(4),intent(in)::unit
! character(*,1),intent(in)::iotype
-! integer(4),intent(in)::v_list(1_8:)
+! integer(4),intent(in)::v_list(:)
! integer(4),intent(out)::iostat
! character(*,1),intent(inout)::iomsg
! end
real, parameter :: a2(2) = [4.0, 5.0]
real, parameter :: a3(0) = [real::]
real, parameter :: a4(55) = [real::((1.0*k,k=1,j),j=1,10)]
- real, parameter :: a5(:) = [6.0, 7.0, 8.0]
+ real, parameter :: a5(*) = [6.0, 7.0, 8.0]
real, parameter :: a6(2) = [9, 10]
real, parameter :: a7(6) = [([(1.0*k,k=1,j)],j=1,3)]
real, parameter :: a8(13) = [real::1,2_1,3_2,4_4,5_8,6_16,7._2,8._3,9._4,10._8,11._16,(12.,12.5),(13._8,13.5)]
!real(4),parameter::a2(1_8:2_8)=[Real(4)::4._4,5._4]
!real(4),parameter::a3(1_8:0_8)=[Real(4)::]
!real(4),parameter::a4(1_8:55_8)=[Real(4)::1._4,1._4,2._4,1._4,2._4,3._4,1._4,2._4,3._4,4._4,1._4,2._4,3._4,4._4,5._4,1._4,2._4,3._4,4._4,5._4,6._4,1._4,2._4,3._4,4._4,5._4,6._4,7._4,1._4,2._4,3._4,4._4,5._4,6._4,7._4,8._4,1._4,2._4,3._4,4._4,5._4,6._4,7._4,8._4,9._4,1._4,2._4,3._4,4._4,5._4,6._4,7._4,8._4,9._4,1.e1_4]
-!real(4),parameter::a5(1_8:)=[Real(4)::6._4,7._4,8._4]
+!real(4),parameter::a5(1_8:*)=[Real(4)::6._4,7._4,8._4]
!real(4),parameter::a6(1_8:2_8)=[Real(4)::9._4,1.e1_4]
!real(4),parameter::a7(1_8:6_8)=[Real(4)::1._4,1._4,2._4,1._4,2._4,3._4]
!real(4),parameter::a8(1_8:13_8)=[Real(4)::1._4,2._4,3._4,4._4,5._4,6._4,7._4,8._4,9._4,1.e1_4,1.1e1_4,1.2e1_4,1.3e1_4]
! coarray-spec in components and with non-constants bounds
module m3
type t
- real, allocatable :: c(1:5)[1:10,1:*]
+ real, allocatable :: c(:)[1:10,1:*]
complex, allocatable, codimension[5,*] :: d
end type
real, allocatable :: e[:,:,:]
!Expect: m3.mod
!module m3
! type::t
-! real(4),allocatable::c(1_8:5_8)[1_8:10_8,1_8:*]
+! real(4),allocatable::c(:)[1_8:10_8,1_8:*]
! complex(4),allocatable::d[1_8:5_8,1_8:*]
! end type
! real(4),allocatable::e[:,:,:]
! Test compile-time analysis of shapes.
module m1
- integer(8), parameter :: a0s(:) = shape(3.14159)
+ integer(8), parameter :: a0s(*) = shape(3.14159)
real :: a1(5,5,5)
- integer(8), parameter :: a1s(:) = shape(a1)
- integer(8), parameter :: a1ss(:) = shape(a1s)
- integer(8), parameter :: a1sss(:) = shape(a1ss)
- integer(8), parameter :: a1rs(:) = [rank(a1),rank(a1s),rank(a1ss),rank(a1sss)]
- integer(8), parameter :: a1n(:) = [size(a1),size(a1,1),size(a1,2)]
- integer(8), parameter :: a1sn(:) = [size(a1s),size(a1ss),size(a1sss)]
- integer(8), parameter :: ac1s(:) = shape([1])
- integer(8), parameter :: ac2s(:) = shape([1,2,3])
- integer(8), parameter :: ac3s(:) = shape([(1,j=1,4)])
- integer(8), parameter :: ac3bs(:) = shape([(1,j=4,1,-1)])
- integer(8), parameter :: ac4s(:) = shape([((j,k,j*k,k=1,3),j=1,4)])
- integer(8), parameter :: ac5s(:) = shape([((0,k=5,1,-2),j=9,2,-3)])
- integer(8), parameter :: rss(:) = shape(reshape([(0,j=1,90)], -[2,3]*(-[5_8,3_8])))
+ integer(8), parameter :: a1s(*) = shape(a1)
+ integer(8), parameter :: a1ss(*) = shape(a1s)
+ integer(8), parameter :: a1sss(*) = shape(a1ss)
+ integer(8), parameter :: a1rs(*) = [rank(a1),rank(a1s),rank(a1ss),rank(a1sss)]
+ integer(8), parameter :: a1n(*) = [size(a1),size(a1,1),size(a1,2)]
+ integer(8), parameter :: a1sn(*) = [size(a1s),size(a1ss),size(a1sss)]
+ integer(8), parameter :: ac1s(*) = shape([1])
+ integer(8), parameter :: ac2s(*) = shape([1,2,3])
+ integer(8), parameter :: ac3s(*) = shape([(1,j=1,4)])
+ integer(8), parameter :: ac3bs(*) = shape([(1,j=4,1,-1)])
+ integer(8), parameter :: ac4s(*) = shape([((j,k,j*k,k=1,3),j=1,4)])
+ integer(8), parameter :: ac5s(*) = shape([((0,k=5,1,-2),j=9,2,-3)])
+ integer(8), parameter :: rss(*) = shape(reshape([(0,j=1,90)], -[2,3]*(-[5_8,3_8])))
contains
subroutine subr(x,n1,n2)
real, intent(in) :: x(:,:)
integer, intent(in) :: n1(3), n2(:)
- real :: a(:,:,:)
+ real, allocatable :: a(:,:,:)
a = reshape(x,n1)
a = reshape(x,n2(10:30:9)) ! fails if we can't figure out triplet shape
end subroutine
end module m1
!Expect: m1.mod
! module m1
-! integer(8),parameter::a0s(1_8:)=[Integer(8)::]
+! integer(8),parameter::a0s(1_8:*)=[Integer(8)::]
! real(4)::a1(1_8:5_8,1_8:5_8,1_8:5_8)
-! integer(8),parameter::a1s(1_8:)=[Integer(8)::5_8,5_8,5_8]
-! integer(8),parameter::a1ss(1_8:)=[Integer(8)::3_8]
-! integer(8),parameter::a1sss(1_8:)=[Integer(8)::1_8]
-! integer(8),parameter::a1rs(1_8:)=[Integer(8)::3_8,1_8,1_8,1_8]
-! integer(8),parameter::a1n(1_8:)=[Integer(8)::125_8,5_8,5_8]
-! integer(8),parameter::a1sn(1_8:)=[Integer(8)::3_8,1_8,1_8]
-! integer(8),parameter::ac1s(1_8:)=[Integer(8)::1_8]
-! integer(8),parameter::ac2s(1_8:)=[Integer(8)::3_8]
-! integer(8),parameter::ac3s(1_8:)=[Integer(8)::4_8]
-! integer(8),parameter::ac3bs(1_8:)=[Integer(8)::4_8]
-! integer(8),parameter::ac4s(1_8:)=[Integer(8)::36_8]
-! integer(8),parameter::ac5s(1_8:)=[Integer(8)::9_8]
-! integer(8),parameter::rss(1_8:)=[Integer(8)::10_8,9_8]
+! integer(8),parameter::a1s(1_8:*)=[Integer(8)::5_8,5_8,5_8]
+! integer(8),parameter::a1ss(1_8:*)=[Integer(8)::3_8]
+! integer(8),parameter::a1sss(1_8:*)=[Integer(8)::1_8]
+! integer(8),parameter::a1rs(1_8:*)=[Integer(8)::3_8,1_8,1_8,1_8]
+! integer(8),parameter::a1n(1_8:*)=[Integer(8)::125_8,5_8,5_8]
+! integer(8),parameter::a1sn(1_8:*)=[Integer(8)::3_8,1_8,1_8]
+! integer(8),parameter::ac1s(1_8:*)=[Integer(8)::1_8]
+! integer(8),parameter::ac2s(1_8:*)=[Integer(8)::3_8]
+! integer(8),parameter::ac3s(1_8:*)=[Integer(8)::4_8]
+! integer(8),parameter::ac3bs(1_8:*)=[Integer(8)::4_8]
+! integer(8),parameter::ac4s(1_8:*)=[Integer(8)::36_8]
+! integer(8),parameter::ac5s(1_8:*)=[Integer(8)::9_8]
+! integer(8),parameter::rss(1_8:*)=[Integer(8)::10_8,9_8]
! contains
! subroutine subr(x,n1,n2)
-! real(4),intent(in)::x(1_8:,1_8:)
+! real(4),intent(in)::x(:,:)
! integer(4),intent(in)::n1(1_8:3_8)
-! integer(4),intent(in)::n2(1_8:)
+! integer(4),intent(in)::n2(:)
! end
! end
! INTEGER(KIND=4) handles 5 <= P < 10
! INTEGER(KIND=8) handles 10 <= P < 19
! INTEGER(KIND=16) handles 19 <= P < 39
- integer, parameter :: iranges(:) = &
+ integer, parameter :: iranges(*) = &
[range(0_1), range(0_2), range(0_4), range(0_8), range(0_16)]
logical, parameter :: ircheck = all([2, 4, 9, 18, 38] == iranges)
- integer, parameter :: intpvals(:) = [0, 2, 3, 4, 5, 9, 10, 18, 19, 38, 39]
- integer, parameter :: intpkinds(:) = &
+ integer, parameter :: intpvals(*) = [0, 2, 3, 4, 5, 9, 10, 18, 19, 38, 39]
+ integer, parameter :: intpkinds(*) = &
[(selected_int_kind(intpvals(j)),j=1,size(intpvals))]
logical, parameter :: ipcheck = &
all([1, 1, 2, 2, 4, 4, 8, 8, 16, 16, -1] == intpkinds)
! REAL(KIND=8) handles 7 <= P < 16
! REAL(KIND=10) handles 16 <= P < 19 (if available; ifort is KIND=16)
! REAL(KIND=16) handles 19 <= P < 34 (would be 32 with Power double/double)
- integer, parameter :: realprecs(:) = &
+ integer, parameter :: realprecs(*) = &
[precision(0._2), precision(0._3), precision(0._4), precision(0._8), &
precision(0._10), precision(0._16)]
logical, parameter :: rpreccheck = all([3, 2, 6, 15, 18, 33] == realprecs)
- integer, parameter :: realpvals(:) = [0, 3, 4, 6, 7, 15, 16, 18, 19, 33, 34]
- integer, parameter :: realpkinds(:) = &
+ integer, parameter :: realpvals(*) = [0, 3, 4, 6, 7, 15, 16, 18, 19, 33, 34]
+ integer, parameter :: realpkinds(*) = &
[(selected_real_kind(realpvals(j),0),j=1,size(realpvals))]
logical, parameter :: realpcheck = &
all([2, 2, 4, 4, 8, 8, 10, 10, 16, 16, -1] == realpkinds)
! REAL(KIND=8) handles 38 <= R < 308
! REAL(KIND=10) handles 308 <= R < 4932 (if available; ifort is KIND=16)
! REAL(KIND=16) handles 4932 <= R < 9864 (except Power double/double)
- integer, parameter :: realranges(:) = &
+ integer, parameter :: realranges(*) = &
[range(0._2), range(0._3), range(0._4), range(0._8), range(0._10), &
range(0._16)]
logical, parameter :: rrangecheck = &
all([4, 37, 37, 307, 4931, 9863] == realranges)
- integer, parameter :: realrvals(:) = &
+ integer, parameter :: realrvals(*) = &
[0, 4, 5, 37, 38, 307, 308, 4931, 4932, 9863, 9864]
- integer, parameter :: realrkinds(:) = &
+ integer, parameter :: realrkinds(*) = &
[(selected_real_kind(0,realrvals(j)),j=1,size(realrvals))]
logical, parameter :: realrcheck = &
all([2, 2, 3, 3, 8, 8, 10, 10, 16, 16, -2] == realrkinds)
logical, parameter :: radixcheck = &
all([radix(0._2), radix(0._3), radix(0._4), radix(0._8), &
radix(0._10), radix(0._16)] == 2)
- integer, parameter :: intdigits(:) = &
+ integer, parameter :: intdigits(*) = &
[digits(0_1), digits(0_2), digits(0_4), digits(0_8), digits(0_16)]
logical, parameter :: intdigitscheck = &
all([7, 15, 31, 63, 127] == intdigits)
- integer, parameter :: realdigits(:) = &
+ integer, parameter :: realdigits(*) = &
[digits(0._2), digits(0._3), digits(0._4), digits(0._8), digits(0._10), &
digits(0._16)]
logical, parameter :: realdigitscheck = &
end module m1
!Expect: m1.mod
!module m1
-!integer(4),parameter::iranges(1_8:)=[Integer(4)::2_4,4_4,9_4,18_4,38_4]
+!integer(4),parameter::iranges(1_8:*)=[Integer(4)::2_4,4_4,9_4,18_4,38_4]
!logical(4),parameter::ircheck=.true._4
-!integer(4),parameter::intpvals(1_8:)=[Integer(4)::0_4,2_4,3_4,4_4,5_4,9_4,10_4,18_4,19_4,38_4,39_4]
-!integer(4),parameter::intpkinds(1_8:)=[Integer(4)::1_4,1_4,2_4,2_4,4_4,4_4,8_4,8_4,16_4,16_4,-1_4]
+!integer(4),parameter::intpvals(1_8:*)=[Integer(4)::0_4,2_4,3_4,4_4,5_4,9_4,10_4,18_4,19_4,38_4,39_4]
+!integer(4),parameter::intpkinds(1_8:*)=[Integer(4)::1_4,1_4,2_4,2_4,4_4,4_4,8_4,8_4,16_4,16_4,-1_4]
!logical(4),parameter::ipcheck=.true._4
-!integer(4),parameter::realprecs(1_8:)=[Integer(4)::3_4,2_4,6_4,15_4,18_4,33_4]
+!integer(4),parameter::realprecs(1_8:*)=[Integer(4)::3_4,2_4,6_4,15_4,18_4,33_4]
!logical(4),parameter::rpreccheck=.true._4
-!integer(4),parameter::realpvals(1_8:)=[Integer(4)::0_4,3_4,4_4,6_4,7_4,15_4,16_4,18_4,19_4,33_4,34_4]
-!integer(4),parameter::realpkinds(1_8:)=[Integer(4)::2_4,2_4,4_4,4_4,8_4,8_4,10_4,10_4,16_4,16_4,-1_4]
+!integer(4),parameter::realpvals(1_8:*)=[Integer(4)::0_4,3_4,4_4,6_4,7_4,15_4,16_4,18_4,19_4,33_4,34_4]
+!integer(4),parameter::realpkinds(1_8:*)=[Integer(4)::2_4,2_4,4_4,4_4,8_4,8_4,10_4,10_4,16_4,16_4,-1_4]
!logical(4),parameter::realpcheck=.true._4
-!integer(4),parameter::realranges(1_8:)=[Integer(4)::4_4,37_4,37_4,307_4,4931_4,9863_4]
+!integer(4),parameter::realranges(1_8:*)=[Integer(4)::4_4,37_4,37_4,307_4,4931_4,9863_4]
!logical(4),parameter::rrangecheck=.true._4
-!integer(4),parameter::realrvals(1_8:)=[Integer(4)::0_4,4_4,5_4,37_4,38_4,307_4,308_4,4931_4,4932_4,9863_4,9864_4]
-!integer(4),parameter::realrkinds(1_8:)=[Integer(4)::2_4,2_4,3_4,3_4,8_4,8_4,10_4,10_4,16_4,16_4,-2_4]
+!integer(4),parameter::realrvals(1_8:*)=[Integer(4)::0_4,4_4,5_4,37_4,38_4,307_4,308_4,4931_4,4932_4,9863_4,9864_4]
+!integer(4),parameter::realrkinds(1_8:*)=[Integer(4)::2_4,2_4,3_4,3_4,8_4,8_4,10_4,10_4,16_4,16_4,-2_4]
!logical(4),parameter::realrcheck=.true._4
!logical(4),parameter::radixcheck=.true._4
-!integer(4),parameter::intdigits(1_8:)=[Integer(4)::7_4,15_4,31_4,63_4,127_4]
+!integer(4),parameter::intdigits(1_8:*)=[Integer(4)::7_4,15_4,31_4,63_4,127_4]
!logical(4),parameter::intdigitscheck=.true._4
-!integer(4),parameter::realdigits(1_8:)=[Integer(4)::11_4,8_4,24_4,53_4,64_4,112_4]
+!integer(4),parameter::realdigits(1_8:*)=[Integer(4)::11_4,8_4,24_4,53_4,64_4,112_4]
!logical(4),parameter::realdigitscheck=.true._4
!end
type :: t1
integer :: ia1(2)
end type t1
- type(t1), parameter :: t1x1(:) = [t1::t1(ia1=[1,2]),t1(ia1=[3,4])]
+ type(t1), parameter :: t1x1(*) = [t1::t1(ia1=[1,2]),t1(ia1=[3,4])]
logical, parameter :: t1check1 = t1x1(2)%ia1(1) == 3
logical, parameter :: t1check2 = all(t1x1(1)%ia1 == [1,2])
logical, parameter :: t1check3 = all(t1x1(:)%ia1(1) == [1,3])
type :: t2
type(t1) :: dta1(2)
end type t2
- type(t2), parameter :: t2x1(:) = &
+ type(t2), parameter :: t2x1(*) = &
[t2 :: t2(dta1=[t1::t1x1]), &
t2(dta1=[t1::t1(ia1=[5,6]),t1(ia1=[7,8])])]
logical, parameter :: t2check1 = t2x1(1)%dta1(2)%ia1(2) == 4
!type::t1
!integer(4)::ia1(1_8:2_8)
!end type
-!type(t1),parameter::t1x1(1_8:)=[t1::t1(ia1=[Integer(4)::1_4,2_4]),t1(ia1=[Integer(4)::3_4,4_4])]
+!type(t1),parameter::t1x1(1_8:*)=[t1::t1(ia1=[Integer(4)::1_4,2_4]),t1(ia1=[Integer(4)::3_4,4_4])]
!logical(4),parameter::t1check1=.true._4
!logical(4),parameter::t1check2=.true._4
!logical(4),parameter::t1check3=.true._4
!type::t2
!type(t1)::dta1(1_8:2_8)
!end type
-!type(t2),parameter::t2x1(1_8:)=[t2::t2(dta1=[t1::t1(ia1=[Integer(4)::1_4,2_4]),t1(ia1=[Integer(4)::3_4,4_4])]),t2(dta1=[t1::t1(ia1=[Integer(4)::5_4,6_4]),t1(ia1=[Integer(4)::7_4,8_4])])]
+!type(t2),parameter::t2x1(1_8:*)=[t2::t2(dta1=[t1::t1(ia1=[Integer(4)::1_4,2_4]),t1(ia1=[Integer(4)::3_4,4_4])]),t2(dta1=[t1::t1(ia1=[Integer(4)::5_4,6_4]),t1(ia1=[Integer(4)::7_4,8_4])])]
!logical(4),parameter::t2check1=.true._4
!logical(4),parameter::t2check2=.true._4
!logical(4),parameter::t2check3=.true._4
! In CHARACTER(1) literals, codepoints > 0xff are serialized into UTF-8;
! each of those bytes then gets encoded into UTF-8 for the module file.
character(kind=1,len=:), parameter :: c1 = 1_"Hi! 你好!"
-character(kind=4,len=:), parameter :: c4a(:) = [4_"一", 4_"二", 4_"三", 4_"四", 4_"五"]
+character(kind=4,len=:), parameter :: c4a(*) = [4_"一", 4_"二", 4_"三", 4_"四", 4_"五"]
integer, parameter :: lc4 = len(c4)
integer, parameter :: lc1 = len(c1)
end module m
!module m
!character(:,4),parameter::c4=4_"Hi! \344\275\240\345\245\275!"
!character(:,1),parameter::c1=1_"Hi! \344\275\240\345\245\275!"
-!character(:,4),parameter::c4a(1_8:)=[CHARACTER(KIND=4,LEN=1)::"\344\270\200","\344\272\214","\344\270\211","\345\233\233","\344\272\224"]
+!character(:,4),parameter::c4a(1_8:*)=[CHARACTER(KIND=4,LEN=1)::"\344\270\200","\344\272\214","\344\270\211","\345\233\233","\344\272\224"]
!integer(4),parameter::lc4=7_4
!integer(4),parameter::lc1=11_4
!end
integer, parameter :: q = 1+2*(1/0)
!ERROR: Must be a constant value
integer(kind=2/0) r
-integer, parameter :: sok(:)=[1,2]/[1,2]
+integer, parameter :: sok(*)=[1,2]/[1,2]
!ERROR: Must be a constant value
-integer, parameter :: snok(:)=[1,2]/[1,0]
+integer, parameter :: snok(*)=[1,2]/[1,0]
end
integer, pointer :: p_i
integer(kind = 1) :: invalid = 0
integer, dimension(1:100) :: iarray
- integer, dimension(1:100), pointer :: p_iarray
- integer, allocatable, dimension(1:100) :: aiarray
+ integer, dimension(:), pointer :: p_iarray
+ integer, allocatable, dimension(:) :: aiarray
logical :: l = .false.
logical, dimension(1:100) :: larray
- logical, allocatable, dimension(1:100) :: alarray
+ logical, allocatable, dimension(:) :: alarray
character(len = 128) :: chr1
character(kind = 4, len = 128) :: chr2