blob: d6fe1b9e998b73610b51706355598d791469e6d0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
! { dg-do compile }
!
! PR fortran/37445, in which the contained 'putaline' would be
! ignored and no specific interface found in the generic version.
!
! Contributed by Norman S Clerman < clerman@fuse.net>
!
MODULE M1
INTERFACE putaline
MODULE PROCEDURE S1,S2
END INTERFACE
CONTAINS
SUBROUTINE S1(I)
i = 3
END SUBROUTINE
SUBROUTINE S2(F)
f = 4.0
END SUBROUTINE
END MODULE
MODULE M2
USE M1
CONTAINS
SUBROUTINE S3
integer :: check = 0
CALL putaline()
if (check .ne. 1) STOP 1
CALL putaline("xx")
if (check .ne. 2) STOP 2
! CALL putaline(1.0) ! => this now causes an error, as it should
CONTAINS
SUBROUTINE putaline(x)
character, optional :: x
if (present(x)) then
check = 2
else
check = 1
end if
END SUBROUTINE
END SUBROUTINE
subroutine S4
integer :: check = 0
REAL :: rcheck = 0.0
call putaline(check)
if (check .ne. 3) STOP 3
call putaline(rcheck)
if (rcheck .ne. 4.0) STOP 4
end subroutine s4
END MODULE
USE M2
CALL S3
call S4
END
|