public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug fortran/35152] New: Implicit procedure with keyword=argument is accepted @ 2008-02-10 8:36 burnus at gcc dot gnu dot org 2008-02-10 20:38 ` [Bug fortran/35152] " dfranke at gcc dot gnu dot org ` (6 more replies) 0 siblings, 7 replies; 8+ messages in thread From: burnus at gcc dot gnu dot org @ 2008-02-10 8:36 UTC (permalink / raw) To: gcc-bugs external bar call bar(a=5) end The "a=" is invalid as there is no explicit interface. "12.4 Procedure reference" "R1220 actual-arg-spec is [ keyword = ] actual-arg" "C1225 (R1220) The keyword = shall not appear if the interface of the procedure is implicit in the scoping unit." Found at: http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/543563d67446fbea/ Other compilers show: Error: Procedure with a keyword argument at (1) does not have an explicit interface Error: Keyword arguments are invalid without an explicit interface. Error: Keyword argument requires an explicit interface Error: An actual argument keyword is being used when an explicit interface is not known. -- Summary: Implicit procedure with keyword=argument is accepted Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: accepts-invalid Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: burnus at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35152 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/35152] Implicit procedure with keyword=argument is accepted 2008-02-10 8:36 [Bug fortran/35152] New: Implicit procedure with keyword=argument is accepted burnus at gcc dot gnu dot org @ 2008-02-10 20:38 ` dfranke at gcc dot gnu dot org 2008-03-16 12:52 ` dfranke at gcc dot gnu dot org ` (5 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: dfranke at gcc dot gnu dot org @ 2008-02-10 20:38 UTC (permalink / raw) To: gcc-bugs ------- Comment #1 from dfranke at gcc dot gnu dot org 2008-02-10 20:37 ------- *** Bug 35157 has been marked as a duplicate of this bug. *** -- dfranke at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |tkoenig at gcc dot gnu dot | |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35152 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/35152] Implicit procedure with keyword=argument is accepted 2008-02-10 8:36 [Bug fortran/35152] New: Implicit procedure with keyword=argument is accepted burnus at gcc dot gnu dot org 2008-02-10 20:38 ` [Bug fortran/35152] " dfranke at gcc dot gnu dot org @ 2008-03-16 12:52 ` dfranke at gcc dot gnu dot org 2008-03-19 19:15 ` dfranke at gcc dot gnu dot org ` (4 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: dfranke at gcc dot gnu dot org @ 2008-03-16 12:52 UTC (permalink / raw) To: gcc-bugs -- dfranke at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |dfranke at gcc dot gnu dot |dot org |org URL| |http://gcc.gnu.org/ml/fortra | |n/2008-03/msg00103.html Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Keywords| |patch Last reconfirmed|0000-00-00 00:00:00 |2008-03-16 12:51:58 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35152 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/35152] Implicit procedure with keyword=argument is accepted 2008-02-10 8:36 [Bug fortran/35152] New: Implicit procedure with keyword=argument is accepted burnus at gcc dot gnu dot org 2008-02-10 20:38 ` [Bug fortran/35152] " dfranke at gcc dot gnu dot org 2008-03-16 12:52 ` dfranke at gcc dot gnu dot org @ 2008-03-19 19:15 ` dfranke at gcc dot gnu dot org 2008-03-19 19:16 ` dfranke at gcc dot gnu dot org ` (3 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: dfranke at gcc dot gnu dot org @ 2008-03-19 19:15 UTC (permalink / raw) To: gcc-bugs ------- Comment #2 from dfranke at gcc dot gnu dot org 2008-03-19 19:14 ------- Subject: Bug 35152 Author: dfranke Date: Wed Mar 19 19:13:48 2008 New Revision: 133347 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=133347 Log: gcc/fortran: 2008-03-19 Daniel Franke <franke.daniel@gmail.com> PR fortran/35152 * interface.c (gfc_procedure_use): Check for keyworded arguments in procedures without explicit interfaces. gcc/testsuite: 2008-03-19 Daniel Franke <franke.daniel@gmail.com> PR fortran/35152 * gfortran.dg/argument_checking_16.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/argument_checking_16.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/interface.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35152 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/35152] Implicit procedure with keyword=argument is accepted 2008-02-10 8:36 [Bug fortran/35152] New: Implicit procedure with keyword=argument is accepted burnus at gcc dot gnu dot org ` (2 preceding siblings ...) 2008-03-19 19:15 ` dfranke at gcc dot gnu dot org @ 2008-03-19 19:16 ` dfranke at gcc dot gnu dot org 2008-03-20 11:24 ` dominiq at lps dot ens dot fr ` (2 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: dfranke at gcc dot gnu dot org @ 2008-03-19 19:16 UTC (permalink / raw) To: gcc-bugs ------- Comment #3 from dfranke at gcc dot gnu dot org 2008-03-19 19:15 ------- Fixed in trunk, no backport as it is not a regression. Closing. -- dfranke at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Keywords|patch | Known to fail| |4.3.0 Known to work| |4.4.0 Resolution| |FIXED Target Milestone|--- |4.4.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35152 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/35152] Implicit procedure with keyword=argument is accepted 2008-02-10 8:36 [Bug fortran/35152] New: Implicit procedure with keyword=argument is accepted burnus at gcc dot gnu dot org ` (3 preceding siblings ...) 2008-03-19 19:16 ` dfranke at gcc dot gnu dot org @ 2008-03-20 11:24 ` dominiq at lps dot ens dot fr 2008-03-20 12:15 ` dfranke at gcc dot gnu dot org 2008-03-20 12:17 ` burnus at gcc dot gnu dot org 6 siblings, 0 replies; 8+ messages in thread From: dominiq at lps dot ens dot fr @ 2008-03-20 11:24 UTC (permalink / raw) To: gcc-bugs ------- Comment #4 from dominiq at lps dot ens dot fr 2008-03-20 11:24 ------- With this revision the following code gives an error: [ibook-dhum] f90/bug% cat rename_use_1.f90 ! { dg-do compile } module foo_base_mod type foo_dmt real(kind(1.d0)), allocatable :: rv(:) integer, allocatable :: iv1(:), iv2(:) end type foo_dmt type foo_zmt complex(kind(1.d0)), allocatable :: rv(:) integer, allocatable :: iv1(:), iv2(:) end type foo_zmt type foo_cdt integer, allocatable :: md(:) integer, allocatable :: hi(:), ei(:) end type foo_cdt end module foo_base_mod module bar_prt use foo_base_mod, only : foo_dmt, foo_zmt, foo_cdt type bar_dbprt type(foo_dmt), allocatable :: av(:) real(kind(1.d0)), allocatable :: d(:) type(foo_cdt) :: cd end type bar_dbprt type bar_dprt type(bar_dbprt), allocatable :: bpv(:) end type bar_dprt type bar_zbprt type(foo_zmt), allocatable :: av(:) complex(kind(1.d0)), allocatable :: d(:) type(foo_cdt) :: cd end type bar_zbprt type bar_zprt type(bar_zbprt), allocatable :: bpv(:) end type bar_zprt end module bar_prt module bar_pr_mod use bar_prt interface bar_pwrk subroutine bar_dppwrk(pr,x,y,cd,info,trans,work) use foo_base_mod use bar_prt type(foo_cdt),intent(in) :: cd type(bar_dprt), intent(in) :: pr real(kind(0.d0)),intent(inout) :: x(:), y(:) integer, intent(out) :: info character(len=1), optional :: trans real(kind(0.d0)),intent(inout), optional, target :: work(:) end subroutine bar_dppwrk subroutine bar_zppwrk(pr,x,y,cd,info,trans,work) use foo_base_mod use bar_prt type(foo_cdt),intent(in) :: cd type(bar_zprt), intent(in) :: pr complex(kind(0.d0)),intent(inout) :: x(:), y(:) integer, intent(out) :: info character(len=1), optional :: trans complex(kind(0.d0)),intent(inout), optional, target :: work(:) end subroutine bar_zppwrk end interface end module bar_pr_mod module foo_pr_mod use bar_prt, & & foo_dbprt => bar_dbprt,& & foo_zbprt => bar_zbprt,& & foo_dprt => bar_dprt,& & foo_zprt => bar_zprt use bar_pr_mod, & & foo_pwrk => bar_pwrk end module foo_pr_mod Subroutine foo_sub(a,pr,b,x,eps,cd,info) use foo_base_mod use foo_pr_mod Implicit None !!$ parameters Type(foo_dmt), Intent(in) :: a Type(foo_dprt), Intent(in) :: pr Type(foo_cdt), Intent(in) :: cd Real(Kind(1.d0)), Intent(in) :: b(:) Real(Kind(1.d0)), Intent(inout) :: x(:) Real(Kind(1.d0)), Intent(in) :: eps integer, intent(out) :: info !!$ Local data Real(Kind(1.d0)), allocatable, target :: aux(:),wwrk(:,:) Real(Kind(1.d0)), allocatable :: p(:), f(:) info = 0 Call bar_pwrk(pr,p,f,cd,info,work=aux) return End Subroutine foo_sub [ibook-dhum] f90/bug% gfc rename_use_1.f90 rename_use_1.f90:114.36: Call bar_pwrk(pr,p,f,cd,info,work=aux) 1 Error: Keyword argument requires explicit interface for procedure 'bar_pwrk' at (1) If 'Call bar_pwrk(pr,p,f,cd,info,work=aux)' is replaced by 'Call foo_pwrk(pr,p,f,cd,info,work=aux)' the error disappears. Note that I did not write the code, but only kept it and I don't know if the code is valid or not. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35152 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/35152] Implicit procedure with keyword=argument is accepted 2008-02-10 8:36 [Bug fortran/35152] New: Implicit procedure with keyword=argument is accepted burnus at gcc dot gnu dot org ` (4 preceding siblings ...) 2008-03-20 11:24 ` dominiq at lps dot ens dot fr @ 2008-03-20 12:15 ` dfranke at gcc dot gnu dot org 2008-03-20 12:17 ` burnus at gcc dot gnu dot org 6 siblings, 0 replies; 8+ messages in thread From: dfranke at gcc dot gnu dot org @ 2008-03-20 12:15 UTC (permalink / raw) To: gcc-bugs ------- Comment #5 from dfranke at gcc dot gnu dot org 2008-03-20 12:15 ------- > I don't know if the code is valid or not IMO, it is not: module foo_pr_mod use bar_pr_mod, foo_pwrk => bar_pwrk end module foo_pr_mod Subroutine foo_sub(a,pr,b,x,eps,cd,info) use foo_pr_mod ... Call bar_pwrk(pr,p,f,cd,info,work=aux) end subroutine The module renames 'bar_pwrk' to 'foo_pwrk'. When the subroutine uses the module it only sees 'foo_pwrk', not 'bar_pwrk'. Hence, 'bar_pwrk' has an implicit interface within 'foo_sub'. IMO, the warning is correct and the code ahould be fixed :) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35152 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/35152] Implicit procedure with keyword=argument is accepted 2008-02-10 8:36 [Bug fortran/35152] New: Implicit procedure with keyword=argument is accepted burnus at gcc dot gnu dot org ` (5 preceding siblings ...) 2008-03-20 12:15 ` dfranke at gcc dot gnu dot org @ 2008-03-20 12:17 ` burnus at gcc dot gnu dot org 6 siblings, 0 replies; 8+ messages in thread From: burnus at gcc dot gnu dot org @ 2008-03-20 12:17 UTC (permalink / raw) To: gcc-bugs ------- Comment #6 from burnus at gcc dot gnu dot org 2008-03-20 12:17 ------- > With this revision the following code gives an error: > Call bar_pwrk(pr,p,f,cd,info,work=aux) The error is correct; bar_pwrk is known in module bar_pr_mod, that module is then imported in module foo_pr_mod but under the name foo_pwrk. Subroutine foo_sub now uses the module foo_pr_mod and thus only the symbol foo_pwrk and not bar_pwrk is use associated. Therefore, bar_pwrk has an implicit interface, which per C1225 may not use the keyword= syntax. (All compilers I tried give the same error as gfortran.) (I have to admit that I miss an option to enforce that the name of a non-intrinsic subroutine has to be made available before using PROCEDURE, EXTERNAL, INTERFACE or being use/host associated. Unfortunately, IMPLICIT NONE does not enforce this.) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35152 ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2008-03-20 12:17 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2008-02-10 8:36 [Bug fortran/35152] New: Implicit procedure with keyword=argument is accepted burnus at gcc dot gnu dot org 2008-02-10 20:38 ` [Bug fortran/35152] " dfranke at gcc dot gnu dot org 2008-03-16 12:52 ` dfranke at gcc dot gnu dot org 2008-03-19 19:15 ` dfranke at gcc dot gnu dot org 2008-03-19 19:16 ` dfranke at gcc dot gnu dot org 2008-03-20 11:24 ` dominiq at lps dot ens dot fr 2008-03-20 12:15 ` dfranke at gcc dot gnu dot org 2008-03-20 12:17 ` burnus at gcc dot gnu dot org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).