File: character_array_constructor_1.f90

package info (click to toggle)
gcc-arm-none-eabi 15%3A14.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,099,328 kB
  • sloc: cpp: 3,627,108; ansic: 2,571,498; ada: 834,230; f90: 235,082; makefile: 79,231; asm: 74,984; xml: 51,692; exp: 39,736; sh: 33,298; objc: 15,629; python: 15,069; fortran: 14,429; pascal: 7,003; awk: 5,070; perl: 3,106; ml: 285; lisp: 253; lex: 204; haskell: 135
file content (47 lines) | stat: -rw-r--r-- 1,356 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
! { dg-do run }
! Tests the fix for PR27113, in which character structure
! components would produce the TODO compilation error "complex
! character array constructors".
!
! Test based on part of tonto-2.2;
! Contributed by Paul Thomas  <pault@gcc.gnu.org>
!
  type BASIS_TYPE
    character(len=8) :: label
  end type

  type(BASIS_TYPE), dimension(:), pointer :: ptr
  character(8), dimension(2) :: carray

  allocate (ptr(2))
  ptr(1)%label = "Label 1"
  ptr(2)%label = "Label 2"

! This is the original bug
  call read_library_data_((/ptr%label/))

  carray(1) = "Label 3"
  carray(2) = "Label 4"

! Mix a character array with the character component of a derived type pointer array.
  call read_library_data_((/carray, ptr%label/))

! Finally, add a constant (character(8)).
  call read_library_data_((/carray, ptr%label, "Label 5 "/))

contains

  subroutine read_library_data_ (chr)
    character(*), dimension(:) :: chr
    character(len = len(chr)) :: tmp
    if (size(chr,1) == 2) then
      if (any (chr .ne. (/"Label 1", "Label 2"/))) STOP 1
    elseif (size(chr,1) == 4) then
      if (any (chr .ne. (/"Label 3", "Label 4","Label 1", "Label 2"/))) STOP 2
    elseif (size(chr,1) == 5) then
      if (any (chr .ne. (/"Label 3", "Label 4","Label 1", "Label 2", "Label 5"/))) &
          STOP 3
    end if
  end subroutine read_library_data_

end