OSDN Git Service

2012-01-09 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 9 Jan 2012 23:23:26 +0000 (23:23 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 9 Jan 2012 23:23:26 +0000 (23:23 +0000)
        PR fortran/46328
        * gfortran.dg/typebound_operator_11.f90: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183039 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/typebound_operator_11.f90 [new file with mode: 0644]

index e9976b9..d360a7f 100644 (file)
@@ -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>
diff --git a/gcc/testsuite/gfortran.dg/typebound_operator_11.f90 b/gcc/testsuite/gfortran.dg/typebound_operator_11.f90
new file mode 100644 (file)
index 0000000..1f5c195
--- /dev/null
@@ -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" } }