2017-11-05 Paul Thomas <pault@gcc.gnu.org>
[official-gcc.git] / gcc / testsuite / gfortran.dg / pr67805.f90
blob7371991717d820c32e638788dd2f349d684adeef
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
6 subroutine 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" }
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" }
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)
28 end subroutine p
30 subroutine 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" }.
37 end subroutine q