mirror of
https://gcc.gnu.org/git/gcc.git
synced 2025-01-18 10:24:30 +08:00
re PR fortran/46328 ([OOP] type-bound operator call with non-trivial polymorphic operand)
2012-01-09 Tobias Burnus <burnus@net-b.de> PR fortran/46328 * gfortran.dg/typebound_operator_11.f90: New. From-SVN: r183039
This commit is contained in:
parent
243b92d11e
commit
0ec05c678a
@ -1,3 +1,8 @@
|
||||
2012-01-09 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/46328
|
||||
* gfortran.dg/typebound_operator_11.f90: New.
|
||||
|
||||
2012-01-09 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/array18.adb: New test.
|
||||
@ -12,7 +17,7 @@
|
||||
|
||||
2012-01-09 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR tree-optimization/51759
|
||||
PR tree-optimization/51759
|
||||
* g++.dg/ipa/pr51759.C: New test.
|
||||
|
||||
2012-01-09 Tobias Burnus <burnus@net-b.de>
|
||||
|
42
gcc/testsuite/gfortran.dg/typebound_operator_11.f90
Normal file
42
gcc/testsuite/gfortran.dg/typebound_operator_11.f90
Normal file
@ -0,0 +1,42 @@
|
||||
! { dg-do compile }
|
||||
!
|
||||
! PR fortran/46328
|
||||
!
|
||||
! Contributed by Damian Rouson
|
||||
!
|
||||
module foo_module
|
||||
type ,abstract :: foo
|
||||
contains
|
||||
procedure(t_interface) ,deferred :: t
|
||||
procedure(assign_interface) ,deferred :: assign
|
||||
procedure(multiply_interface) ,deferred :: multiply
|
||||
generic :: operator(*) => multiply
|
||||
generic :: assignment(=) => assign
|
||||
end type
|
||||
abstract interface
|
||||
function t_interface(this)
|
||||
import :: foo
|
||||
class(foo) :: this
|
||||
class(foo), allocatable ::t_interface
|
||||
end function
|
||||
function multiply_interface(lhs,rhs)
|
||||
import :: foo
|
||||
class(foo), allocatable :: multiply_interface
|
||||
class(foo), intent(in) :: lhs
|
||||
real, intent(in) :: rhs
|
||||
end function
|
||||
subroutine assign_interface(lhs,rhs)
|
||||
import :: foo
|
||||
class(foo), intent(in) :: rhs
|
||||
class(foo), intent(inout) :: lhs
|
||||
end subroutine
|
||||
end interface
|
||||
contains
|
||||
subroutine bar(x,dt)
|
||||
class(foo) :: x
|
||||
real, intent(in) :: dt
|
||||
x = x%t()*dt
|
||||
end subroutine
|
||||
end module
|
||||
|
||||
! { dg-final { cleanup-modules "foo_module" } }
|
Loading…
Reference in New Issue
Block a user