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: unassig...@gcc.gnu.org ReportedBy: ja...@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.