-
Notifications
You must be signed in to change notification settings - Fork 11k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[flang] Respect function vs subroutine distinction in generic matching
When checking the specific procedures of a generic interface for a match against a given set of actual arguments, be sure to not match a function against a subroutine call or vice versa. (We generally catch and warn about attempts to declare mixed interfaces, but they are usually conforming and can be inadvertently created when generics are merged due to USE and host association.) Differential Revision: https://reviews.llvm.org/D139059
- Loading branch information
Showing
8 changed files
with
83 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
! RUN: %python %S/test_errors.py %s %flang_fc1 | ||
! Exercise function vs subroutine distinction in generics | ||
module m1 | ||
type t1 | ||
integer n | ||
end type | ||
interface g1 | ||
integer function f1(x, j) | ||
import t1 | ||
class(t1), intent(in out) :: x | ||
integer, intent(in) :: j | ||
end | ||
end interface | ||
end module | ||
|
||
program test | ||
use m1 | ||
!WARNING: Generic interface 'g1' has both a function and a subroutine | ||
interface g1 | ||
subroutine s1(x, a) | ||
import t1 | ||
class(t1), intent(in out) :: x | ||
real, intent(in) :: a | ||
end subroutine | ||
end interface | ||
type(t1) :: x | ||
print *, g1(x,1) ! ok | ||
!ERROR: No specific function of generic 'g1' matches the actual arguments | ||
print *, g1(x,1.) | ||
!ERROR: No specific subroutine of generic 'g1' matches the actual arguments | ||
call g1(x,1) | ||
call g1(x, 1.) ! ok | ||
contains | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters