Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(398)

Side by Side Diff: gcc/gcc/testsuite/gfortran.dg/typebound_call_2.f03

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 ! { dg-do run } 1 ! { dg-do run }
2 2
3 ! FIXME: Remove -w after polymorphic entities are supported.
4 ! { dg-options "-w" }
5
6 ! Type-bound procedures 3 ! Type-bound procedures
7 ! Check calls with passed-objects. 4 ! Check calls with passed-objects.
8 5
9 MODULE m 6 MODULE m
10 IMPLICIT NONE 7 IMPLICIT NONE
11 8
12 TYPE add 9 TYPE add
13 INTEGER :: wrong 10 INTEGER :: wrong
14 INTEGER :: val 11 INTEGER :: val
15 CONTAINS 12 CONTAINS
16 PROCEDURE, PASS :: func => func_add 13 PROCEDURE, PASS :: func => func_add
17 PROCEDURE, PASS(me) :: sub => sub_add 14 PROCEDURE, PASS(me) :: sub => sub_add
18 END TYPE add 15 END TYPE add
19 16
20 TYPE trueOrFalse 17 TYPE trueOrFalse
21 LOGICAL :: val 18 LOGICAL :: val
22 CONTAINS 19 CONTAINS
23 PROCEDURE, PASS :: swap 20 PROCEDURE, PASS :: swap
24 END TYPE trueOrFalse 21 END TYPE trueOrFalse
25 22
26 CONTAINS 23 CONTAINS
27 24
28 INTEGER FUNCTION func_add (me, x) 25 INTEGER FUNCTION func_add (me, x)
29 IMPLICIT NONE 26 IMPLICIT NONE
30 TYPE(add) :: me 27 CLASS(add) :: me
31 INTEGER :: x 28 INTEGER :: x
32 func_add = me%val + x 29 func_add = me%val + x
33 END FUNCTION func_add 30 END FUNCTION func_add
34 31
35 SUBROUTINE sub_add (res, me, x) 32 SUBROUTINE sub_add (res, me, x)
36 IMPLICIT NONE 33 IMPLICIT NONE
37 INTEGER, INTENT(OUT) :: res 34 INTEGER, INTENT(OUT) :: res
38 TYPE(add), INTENT(IN) :: me 35 CLASS(add), INTENT(IN) :: me
39 INTEGER, INTENT(IN) :: x 36 INTEGER, INTENT(IN) :: x
40 res = me%val + x 37 res = me%val + x
41 END SUBROUTINE sub_add 38 END SUBROUTINE sub_add
42 39
43 SUBROUTINE swap (me1, me2) 40 SUBROUTINE swap (me1, me2)
44 IMPLICIT NONE 41 IMPLICIT NONE
45 TYPE(trueOrFalse), INTENT(INOUT) :: me1, me2 42 CLASS(trueOrFalse), INTENT(INOUT) :: me1, me2
46 43
47 IF (.NOT. me1%val .OR. me2%val) THEN 44 IF (.NOT. me1%val .OR. me2%val) THEN
48 CALL abort () 45 CALL abort ()
49 END IF 46 END IF
50 47
51 me1%val = .FALSE. 48 me1%val = .FALSE.
52 me2%val = .TRUE. 49 me2%val = .TRUE.
53 END SUBROUTINE swap 50 END SUBROUTINE swap
54 51
55 ! Do the testing here, in the same module as the type is. 52 ! Do the testing here, in the same module as the type is.
(...skipping 28 matching lines...) Expand all
84 END SUBROUTINE test 81 END SUBROUTINE test
85 82
86 END MODULE m 83 END MODULE m
87 84
88 PROGRAM main 85 PROGRAM main
89 USE m, ONLY: test 86 USE m, ONLY: test
90 CALL test () 87 CALL test ()
91 END PROGRAM main 88 END PROGRAM main
92 89
93 ! { dg-final { cleanup-modules "m" } } 90 ! { dg-final { cleanup-modules "m" } }
OLDNEW
« no previous file with comments | « gcc/gcc/testsuite/gfortran.dg/substr_6.f90 ('k') | gcc/gcc/testsuite/gfortran.dg/typebound_call_9.f03 » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698