37 lines
1 KiB
Fortran
37 lines
1 KiB
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1
|
|
! Test polymorphic restrictions
|
|
module m
|
|
type base
|
|
end type
|
|
type, extends(base) :: t
|
|
integer n
|
|
contains
|
|
procedure :: fwrite
|
|
generic :: write(formatted) => fwrite
|
|
end type
|
|
contains
|
|
subroutine fwrite(x, unit, iotype, vlist, iostat, iomsg)
|
|
class(t), intent(in) :: x
|
|
integer, intent(in) :: unit
|
|
character(*), intent(in) :: iotype
|
|
integer, intent(in) :: vlist(:)
|
|
integer, intent(out) :: iostat
|
|
character(*), intent(in out) :: iomsg
|
|
write(unit, *, iostat=iostat, iomsg=iomsg) '(', iotype, ':', vlist, ':', x%n, ')'
|
|
end subroutine
|
|
subroutine subr(x, y, z)
|
|
class(t), intent(in) :: x
|
|
class(base), intent(in) :: y
|
|
class(*), intent(in) :: z
|
|
print *, x ! ok
|
|
!ERROR: Derived type 'base' in I/O may not be polymorphic unless using defined I/O
|
|
print *, y
|
|
!ERROR: I/O list item may not be unlimited polymorphic
|
|
print *, z
|
|
end subroutine
|
|
end
|
|
|
|
program main
|
|
use m
|
|
call subr(t(123),t(234),t(345))
|
|
end
|