summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/proc_ptr_comp_32.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/proc_ptr_comp_32.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_comp_32.f9037
1 files changed, 37 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_32.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_32.f90
new file mode 100644
index 00000000000..eda972a4548
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_32.f90
@@ -0,0 +1,37 @@
+! { dg-do compile }
+!
+! PR 48095: [OOP] Invalid assignment to procedure pointer component not rejected
+!
+! Contributed by Arjen Markus <arjen.markus895@gmail.com>
+
+module m
+
+ implicit none
+
+ type :: rectangle
+ procedure(get_area), pointer :: get_special_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
+ get_my_area = 3.0
+ end function get_my_area
+
+end module
+
+
+use m
+type(rectangle) :: rect
+rect%get_special_area => get_my_area ! { dg-error "Interface mismatch in procedure pointer assignment" }
+end
+
+! { dg-final { cleanup-modules "m" } }