https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105501
Bug ID: 105501
Summary: The statement TYPE IS without a space is accepted
Product: gcc
Version: 11.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: chilikin.k at gmail dot com
Target Milestone: ---
The following module
MODULE M
TYPE T
INTEGER I
END TYPE
CONTAINS
SUBROUTINE S(X)
CLASS(T), POINTER :: X
SELECT TYPE (X)
TYPEIS (T)
PRINT *, 'T'
END SELECT
END SUBROUTINE
END MODULE
compiles without any messages with gfortran 11.3.0:
$ gfortran -c -std=f2018 -pedantic test.f90
(there are no warnings)
However, "TYPEIS" requires one or more blank characters between "TYPE" and "IS"
in accordance with the section "Blank characters in free form" of the standard
as it is not included in the list of exceptions with optional blanks.
For comparison, the output of flang 14.0.3 is:
$ flang -c -std=f2018 test.f90
test.f90:9:12: missing space
TYPEIS (T)
^
test.f90:9:7: in the context: type guard statement
TYPEIS (T)
^
test.f90:8:5: in the context: SELECT TYPE construct
SELECT TYPE (X)
^
test.f90:8:5: in the context: execution part construct
SELECT TYPE (X)
^
test.f90:8:5: in the context: execution part
SELECT TYPE (X)
^
test.f90:6:3: in the context: SUBROUTINE subprogram
SUBROUTINE S(X)
^
test.f90:5:1: in the context: module subprogram part
CONTAINS
^
test.f90:1:1: in the context: module
MODULE M
^