! { dg=do run }
!
! Test the fix for PR90498.
!
! Contributed by Vladimir Fuka  <vladimir.fuka@gmail.com>
!
  type field_names_a
    class(*), pointer :: var(:) =>null()
  end type

  type(field_names_a),pointer :: a(:)
  allocate (a(2))

  allocate (a(1)%var(2), source = ["hello"," vlad"])
  allocate (a(2)%var(2), source = ["HELLO"," VLAD"])
  call s(a)
  deallocate (a(1)%var)
  deallocate (a(2)%var)
  deallocate (a)
contains
  subroutine s(a)

    type(field_names_a) :: a(:)

    select type (var => a(1)%var)
      type is (character(*))
        if (any (var .ne. ["hello"," vlad"])) stop 1
      class default
        stop
    end select

    associate (var => a(2)%var)
      select type (var)
        type is (character(*))
          if (any (var .ne. ["HELLO"," VLAD"])) stop 2
        class default
          stop
      end select
    end associate
  end
end