This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/52270] New: [OOP] Polymorphic vars: wrong intent(in) check, passing nonptr variable to intent(in) ptr dummy
- From: "burnus at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 16 Feb 2012 07:48:23 +0000
- Subject: [Bug fortran/52270] New: [OOP] Polymorphic vars: wrong intent(in) check, passing nonptr variable to intent(in) ptr dummy
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52270
Bug #: 52270
Summary: [OOP] Polymorphic vars: wrong intent(in) check,
passing nonptr variable to intent(in) ptr dummy
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Keywords: rejects-valid
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: burnus@gcc.gnu.org
>From http://j3-fortran.org/doc/meeting/197/12-131.txt
The following program is rejected with:
-----------------------------------------------------
p%c = 3
1
Error: Dummy argument 'p' with INTENT(IN) in variable definition context
(assignment) at (1)
Call s(x)
1
Error: Actual argument to 'p' at (1) must be polymorphic
-----------------------------------------------------
The first item is bogus as 'p' is a pointer and pointer intents only affect the
pointer association status. Something must go wrong with regards to polymorphic
types.
The second error is formally correct, but the quoted interpretation request by
Malcolm Cohen suggests to make it valid; that would be consistent with the
Fortran 2008 changes regarding "pointer,intent(in)". One could consider to
defer this part until it has passed J3 (or even WG3) voting.
Program m013
Type t
Real c
End Type
Type(t),Target :: x
Call s(x)
Print *,x%c
Contains
Subroutine s(p)
Class(t),Pointer,Intent(In) :: p
p%c = 3
End Subroutine
End Program