https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109223

            Bug ID: 109223
           Summary: parameters for a type on IMPLICIT do not work. For
                    example: IMPLICIT TYPE(REAL(KIND=REAL128)) fails
           Product: gcc
           Version: 12.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: urbanjost at comcast dot net
  Target Milestone: ---

This fails on the IMPLICIT statement

      program testit
      use, intrinsic :: iso_fortran_env, only : qp=>real128
      implicit type(real(kind=qp)) (a-z) ! this should work but fails
      ! surprising (to me) this works, which I thought broke the syntax rules
      ! implicit real(kind=qp) (a-z)       
      type(real(kind=QP)) :: quad
         print '(*(g0))', "kind(long) = ", kind(long), &
         & "; expected is ", kind(quad)
      end program testit

The expected output is

      kind(long) = 16; expected is 16

The "Fortran Standard" implies type parameters are standard:

      8.7      IMPLICIT statement
      1 In a scoping unit, an IMPLICIT statement specifies a type, and possibly
        type parameters, for all implicitly typed data entities whose names
        begin with one of the letters specified in the statement. An IMPLICIT
        NONE statement can indicate that no implicit typing rules are to apply
        in a particular scoping unit, or that external and dummy procedures
        need to be explicitly given the EXTERNAL attribute.

Reply via email to