1! { dg-do compile } 2! PR fortran/67805 3! Original code contributed by Gerhard Steinmetz 4! gerhard dot steinmetz dot fortran at t-online dot de 5! 6subroutine p 7 integer, parameter :: n = 1 8 integer, parameter :: m(3) = [1, 2, 3] 9 character(len=1) s(2) 10 s = [character((m(1))) :: 'x', 'y'] ! OK. 11 s = [character(m(1)) :: 'x', 'y'] ! OK. 12 s = [character(m) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 13 14 ! The next line should case an error, but causes an ICE. 15 s = [character(m(2:3)) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 16 17 call foo(s) 18 s = [character('') :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 19 s = [character(['']) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 20 s = [character([.true.]) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 21 s = [character([.false.]) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 22 s = [character([1.]) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 23 s = [character([1d1]) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 24 s = [character([(0.,1.)]) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 25 s = [character([null()]) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 26 s = [character(null()) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 27 call foo(s) 28end subroutine p 29 30subroutine q 31 print *, '1: ', [character(.true.) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 32 print *, '2: ', [character(.false.) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 33 print *, '3: ', [character(1.) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 34 print *, '4: ', [character(1d1) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 35 print *, '5: ', [character((0.,1.)) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } 36 print *, '6: ', [character(null()) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" }. 37end subroutine q 38