diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/class_dummy_3.f03')
-rw-r--r-- | gcc/testsuite/gfortran.dg/class_dummy_3.f03 | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/class_dummy_3.f03 b/gcc/testsuite/gfortran.dg/class_dummy_3.f03 new file mode 100644 index 000000000..6b12eb892 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/class_dummy_3.f03 @@ -0,0 +1,30 @@ +! { dg-do compile } +! +! PR 46161: [OOP] Invalid: Passing non-polymorphic to allocatable polymorphic dummy +! +! Contributed by Janus Weil <janus@gcc.gnu.org> + + implicit none + + type :: base + end type + + type, extends(base) :: ext + end type + + type(base), allocatable :: a + class(base), pointer :: b + class(ext), allocatable :: c + + call test(a) ! { dg-error "must be polymorphic" } + call test(b) ! { dg-error "must be ALLOCATABLE" } + call test(c) ! { dg-error "must have the same declared type" } + +contains + + subroutine test(arg) + implicit none + class(base), allocatable :: arg + end subroutine + +end |