J3/04-412 Date: 20 Oct 2004 To: J3 From: Rob James Subject: Intrinsic types in CLASS IS type guard statements NUMBER: TITLE: Intrinsic types in CLASS IS type guard statements KEYWORDS: CLASS IS, type guard, SELECT TYPE, intrinsic type DEFECT TYPE: STATUS: J3 consideration in progress QUESTION: Consider the following program: PROGRAM foo CLASS(*), POINTER :: x INTEGER, TARGET :: i x => i SELECT TYPE (x) CLASS IS (INTEGER) PRINT *, 'How can INTEGER be a class?' END SELECT END The description of a CLASS IS type guard statement refers to an extension of the type specified. This makes no sense for nonextensible types. C815 disallows all nonextensible derived types, but nothing disallows intrinsic types, which are also nonextensible. Was this program intended to be standard-conforming? ANSWER: No, this program was not intended to be standard-conforming. An edit is supplied to correct this oversight. EDITS: All edits refer to 04-007. [162:20+] C815.5 (R823) The in a CLASS IS shall specify an extensible type. DISCUSSION: Paper 03-270 included this edit, but the edit appears to have been accidentally omitted from the standard. In the minutes for J3 meeting #167 (paper 04-272r1), the following appears: It was noted that edits #7 through 9 in paper 03-270 from meeting #166 did not get included in the list of proposed edits for the FCD in paper 03-280. Those edits will be included in what /edit proposes at this meeting. However, there seems to have been no further processing of this edit. SUBMITTED BY: Rob James HISTORY: 04-412 m170 Submitted