[Bug fortran/48095] New: [OOP] Invalid assignment to procedure pointer component not rejected
janus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Mar 12 17:32:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48095
Summary: [OOP] Invalid assignment to procedure pointer
component not rejected
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: janus@gcc.gnu.org
Reported by Arjen Markus at
http://gcc.gnu.org/ml/fortran/2011-03/msg00057.html:
The following program (slightly modified from the original) does not produce
the expected result:
module proc_pointers
implicit none
type :: rectangle
real :: width, height
procedure(get_area), pointer, pass(this) :: get_special_area => get_my_area
end type rectangle
abstract interface
real function get_area( this )
import :: rectangle
class(rectangle), intent(in) :: this
end function get_area
end interface
contains
real function get_my_area( this )
type(rectangle), intent(in) :: this
write(*,*) 'This: ', this%width, this%height
get_my_area = 3.0 * this%width * this%height
end function get_my_area
end module proc_pointers
program test_objects
use proc_pointers
implicit none
type(rectangle) :: rect
real :: area
rect = rectangle (1.0,2.0)
write(*,*) 'Rect: ', rect%width, rect%height
area = rect%get_special_area()
write(*,*) 'Special area:', area
end program test_objects
I think it is invalid, because the PPC 'get_special_area' is declared to expect
a CLASS argument, but then the procedure it points to has a TYPE argument.
One should check the standard on this.
More information about the Gcc-bugs
mailing list