public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/29992] New: INTERFACE equivalent to MODULE PROCEDURE?!
@ 2006-11-27 9:27 franke dot daniel at gmail dot com
2006-11-27 9:28 ` [Bug fortran/29992] " franke dot daniel at gmail dot com
` (8 more replies)
0 siblings, 9 replies; 10+ messages in thread
From: franke dot daniel at gmail dot com @ 2006-11-27 9:27 UTC (permalink / raw)
To: gcc-bugs
The following code is accepted by gfortran while ifort rejects it with error
messages as quoted below.
$> cat foo.f90
MODULE class_foo_type
TYPE :: foo
INTEGER :: dummy
END TYPE
END MODULE
MODULE class_foo
USE class_foo_type, ONLY: foo
INTERFACE foo_init
MODULE PROCEDURE foo_init_default
END INTERFACE
INTERFACE
SUBROUTINE foo_init_default(this)
USE class_foo_type, ONLY: foo
TYPE(foo), INTENT(out) :: this
END SUBROUTINE
END INTERFACE
END MODULE
$> gfortran-4.3 -g -Wall -pedantic -std=f95 -c foo.f90 && echo "ok"
ok
$> gfortran-4.3 -v
version 4.3.0 20061116 (experimental)
$> ifort -g -warn all -c foo.f90
fortcom: Error: foo.f90, line 15: The procedure name of the INTERFACE block
conflicts with a name in the encompassing scoping unit. [FOO_INIT_DEFAULT]
SUBROUTINE foo_init_default(this)
-------------^
fortcom: Error: foo.f90, line 11: Unresolved MODULE PROCEDURE specification
name. [FOO_INIT_DEFAULT]
MODULE PROCEDURE foo_init_default
-------------------^
compilation aborted for foo.f90 (code 1)
The following is accepted likewise:
--
Summary: INTERFACE equivalent to MODULE PROCEDURE?!
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: franke dot daniel at gmail dot com
GCC host triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29992
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/29992] INTERFACE equivalent to MODULE PROCEDURE?!
2006-11-27 9:27 [Bug fortran/29992] New: INTERFACE equivalent to MODULE PROCEDURE?! franke dot daniel at gmail dot com
@ 2006-11-27 9:28 ` franke dot daniel at gmail dot com
2006-11-27 13:03 ` burnus at gcc dot gnu dot org
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: franke dot daniel at gmail dot com @ 2006-11-27 9:28 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from franke dot daniel at gmail dot com 2006-11-27 09:28 -------
(report continued)
$> cat foo2.f90
MODULE class_foo_type
TYPE :: foo
INTEGER :: dummy
END TYPE
END MODULE
MODULE class_foo
USE class_foo_type, ONLY: foo
INTERFACE foo_init
SUBROUTINE foo_init_default(this)
USE class_foo_type, ONLY: foo
TYPE(foo), INTENT(out) :: this
END SUBROUTINE
END INTERFACE
END MODULE
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29992
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/29992] INTERFACE equivalent to MODULE PROCEDURE?!
2006-11-27 9:27 [Bug fortran/29992] New: INTERFACE equivalent to MODULE PROCEDURE?! franke dot daniel at gmail dot com
2006-11-27 9:28 ` [Bug fortran/29992] " franke dot daniel at gmail dot com
@ 2006-11-27 13:03 ` burnus at gcc dot gnu dot org
2006-12-14 21:41 ` pault at gcc dot gnu dot org
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: burnus at gcc dot gnu dot org @ 2006-11-27 13:03 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from burnus at gcc dot gnu dot org 2006-11-27 13:02 -------
Confirm.
Currently, the two interfaces clash:
MODULE PROCEDURE foo_init_default
SUBROUTINE foo_init_default(this)
The latter needs to be "contains"ed in the module not put into an interface.
* * *
Error message from NAG f95:
SUBROUTINE foo_init_default(this)
^
"afdf.f90", Line = 15, Column = 14: ERROR: "FOO_INIT_DEFAULT" is a
module-subprogram, therefore it must not be a subroutine in an interface block.
--
burnus at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |burnus at gcc dot gnu dot
| |org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2006-11-27 13:02:51
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29992
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/29992] INTERFACE equivalent to MODULE PROCEDURE?!
2006-11-27 9:27 [Bug fortran/29992] New: INTERFACE equivalent to MODULE PROCEDURE?! franke dot daniel at gmail dot com
2006-11-27 9:28 ` [Bug fortran/29992] " franke dot daniel at gmail dot com
2006-11-27 13:03 ` burnus at gcc dot gnu dot org
@ 2006-12-14 21:41 ` pault at gcc dot gnu dot org
2006-12-16 1:40 ` patchapp at dberlin dot org
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2006-12-14 21:41 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from pault at gcc dot gnu dot org 2006-12-14 21:41 -------
Created an attachment (id=12806)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12806&action=view)
Patch for the problem that regtests OK
Daniel,
As our regular contributors of 'real' bugs, you have excelled on this one.
Thanks!
It turns out that we do not have any means to identify a 'module procedure'.
The attribute PROC_MODULE defines any procedure defined in a module. I have
added a proc_mod attribute that marks a specific procedure that is so declared
to overcome this. If anybody has a nifty way around this, please let me know.
The attached does the right thing, regtests OK and, in addition, prevents such
interfaces from being use associated.
Paul
--
pault at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |pault at gcc dot gnu dot org
|dot org |
Status|NEW |ASSIGNED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29992
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/29992] INTERFACE equivalent to MODULE PROCEDURE?!
2006-11-27 9:27 [Bug fortran/29992] New: INTERFACE equivalent to MODULE PROCEDURE?! franke dot daniel at gmail dot com
` (2 preceding siblings ...)
2006-12-14 21:41 ` pault at gcc dot gnu dot org
@ 2006-12-16 1:40 ` patchapp at dberlin dot org
2006-12-20 10:58 ` pault at gcc dot gnu dot org
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: patchapp at dberlin dot org @ 2006-12-16 1:40 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from patchapp at dberlin dot org 2006-12-16 01:40 -------
Subject: Bug number PR29992
A patch for this bug has been added to the patch tracker.
The mailing list url for the patch is
http://gcc.gnu.org/ml/gcc-patches/2006-12/msg01146.html
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29992
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/29992] INTERFACE equivalent to MODULE PROCEDURE?!
2006-11-27 9:27 [Bug fortran/29992] New: INTERFACE equivalent to MODULE PROCEDURE?! franke dot daniel at gmail dot com
` (3 preceding siblings ...)
2006-12-16 1:40 ` patchapp at dberlin dot org
@ 2006-12-20 10:58 ` pault at gcc dot gnu dot org
2006-12-20 13:48 ` pault at gcc dot gnu dot org
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2006-12-20 10:58 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from pault at gcc dot gnu dot org 2006-12-20 10:58 -------
I must have cleared this but I do not recall so doing - consider it unfixed!
Paul
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29992
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/29992] INTERFACE equivalent to MODULE PROCEDURE?!
2006-11-27 9:27 [Bug fortran/29992] New: INTERFACE equivalent to MODULE PROCEDURE?! franke dot daniel at gmail dot com
` (4 preceding siblings ...)
2006-12-20 10:58 ` pault at gcc dot gnu dot org
@ 2006-12-20 13:48 ` pault at gcc dot gnu dot org
2006-12-31 15:01 ` [Bug fortran/29992] [4.2 and 4.1 only] " pault at gcc dot gnu dot org
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2006-12-20 13:48 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from pault at gcc dot gnu dot org 2006-12-20 13:48 -------
Subject: Bug 29992
Author: pault
Date: Wed Dec 20 13:48:06 2006
New Revision: 120072
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=120072
Log:
2006-12-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29992
* interface.c (check_sym_interfaces): Module procedures in a
generic must be use associated or contained in the module.
* decl.c (gfc_match_modproc): Set attribute mod_proc.
* gfortran.h (symbol_attribute): Add mod_proc atribute.
PR fortran/30081
* resolve.c (resolve_generic_f, resolve_generic_s): Use
gfc_intrinsic_name to find out if the function is intrinsic
because it does not have to be a generic intrinsic to be
overloaded.
2006-12-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29992
* gfortran.dg/generic_9.f90: New test.
PR fortran/30081
* gfortran.dg/generic_10.f90: New test.
Added:
trunk/gcc/testsuite/gfortran.dg/generic_10.f90
trunk/gcc/testsuite/gfortran.dg/generic_9.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/decl.c
trunk/gcc/fortran/gfortran.h
trunk/gcc/fortran/interface.c
trunk/gcc/fortran/resolve.c
trunk/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29992
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/29992] [4.2 and 4.1 only] INTERFACE equivalent to MODULE PROCEDURE?!
2006-11-27 9:27 [Bug fortran/29992] New: INTERFACE equivalent to MODULE PROCEDURE?! franke dot daniel at gmail dot com
` (5 preceding siblings ...)
2006-12-20 13:48 ` pault at gcc dot gnu dot org
@ 2006-12-31 15:01 ` pault at gcc dot gnu dot org
2006-12-31 15:17 ` [Bug fortran/29992] [4.1 " pault at gcc dot gnu dot org
2007-01-10 18:58 ` pinskia at gcc dot gnu dot org
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2006-12-31 15:01 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from pault at gcc dot gnu dot org 2006-12-31 15:00 -------
Subject: Bug 29992
Author: pault
Date: Sun Dec 31 15:00:18 2006
New Revision: 120298
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=120298
Log:
2006-12-31 Paul Thomas <pault@gcc.gnu.org>
BACKPORTS from 4.3
PR fortran/30202
* trans-array.c (gfc_conv_function_call): Use parmse.expr for
the nullifying of intent(out) arguments rather than the backend
declaration.
PR fortran/30190
* trans-array.c (gfc_conv_array_ref): Remove gfc_evaluate_now
from the -fbounds-check branch.
PR fortran/29992
* interface.c (check_sym_interfaces): Module procedures in a
generic must be use associated or contained in the module.
* decl.c (gfc_match_modproc): Set attribute mod_proc.
* gfortran.h (symbol_attribute): Add mod_proc atribute.
PR fortran/30081
* resolve.c (resolve_generic_f, resolve_generic_s): Use
gfc_intrinsic_name to find out if the function is intrinsic
because it does not have to be a generic intrinsic to be
overloaded.
PR fortran/30236
* interface.c (compare_interfaces): Handle NULL symbols.
(count_types_test): Count NULL symbols, which correspond to
alternate returns.
(check_interface1): Change final argument from int to bool
in the function and all references.
2006-12-31 Paul Thomas <pault@gcc.gnu.org>
BACKPORTS from 4.3
PR fortran/30202
* gfortran.dg/alloc_comp_basics_3.f90: New test.
PR fortran/30190
* gfortran.dg/bounds_check_5.f90: New test.
PR fortran/29992
* gfortran.dg/generic_9.f90: New test.
PR fortran/30081
* gfortran.dg/generic_10.f90: New test.
PR fortran/30236
* gfortran.dg/altreturn_3.f90: New test.
* gfortran.dg/char_result_12.f90: Fix comment typos.
Added:
branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/alloc_comp_basics_3.f90
branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/bounds_check_5.f90
branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/generic_10.f90
branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/generic_9.f90
Modified:
branches/gcc-4_2-branch/gcc/fortran/ChangeLog
branches/gcc-4_2-branch/gcc/fortran/decl.c
branches/gcc-4_2-branch/gcc/fortran/gfortran.h
branches/gcc-4_2-branch/gcc/fortran/interface.c
branches/gcc-4_2-branch/gcc/fortran/resolve.c
branches/gcc-4_2-branch/gcc/fortran/trans-array.c
branches/gcc-4_2-branch/gcc/fortran/trans-expr.c
branches/gcc-4_2-branch/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29992
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/29992] [4.1 only] INTERFACE equivalent to MODULE PROCEDURE?!
2006-11-27 9:27 [Bug fortran/29992] New: INTERFACE equivalent to MODULE PROCEDURE?! franke dot daniel at gmail dot com
` (6 preceding siblings ...)
2006-12-31 15:01 ` [Bug fortran/29992] [4.2 and 4.1 only] " pault at gcc dot gnu dot org
@ 2006-12-31 15:17 ` pault at gcc dot gnu dot org
2007-01-10 18:58 ` pinskia at gcc dot gnu dot org
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2006-12-31 15:17 UTC (permalink / raw)
To: gcc-bugs
------- Comment #8 from pault at gcc dot gnu dot org 2006-12-31 15:17 -------
Fixed on trunk and 4.2
Paul
--
pault at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
Summary|[4.2 and 4.1 only] INTERFACE|[4.1 only] INTERFACE
|equivalent to MODULE |equivalent to MODULE
|PROCEDURE?! |PROCEDURE?!
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29992
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/29992] [4.1 only] INTERFACE equivalent to MODULE PROCEDURE?!
2006-11-27 9:27 [Bug fortran/29992] New: INTERFACE equivalent to MODULE PROCEDURE?! franke dot daniel at gmail dot com
` (7 preceding siblings ...)
2006-12-31 15:17 ` [Bug fortran/29992] [4.1 " pault at gcc dot gnu dot org
@ 2007-01-10 18:58 ` pinskia at gcc dot gnu dot org
8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-01-10 18:58 UTC (permalink / raw)
To: gcc-bugs
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |4.2.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29992
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2007-01-10 18:58 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-11-27 9:27 [Bug fortran/29992] New: INTERFACE equivalent to MODULE PROCEDURE?! franke dot daniel at gmail dot com
2006-11-27 9:28 ` [Bug fortran/29992] " franke dot daniel at gmail dot com
2006-11-27 13:03 ` burnus at gcc dot gnu dot org
2006-12-14 21:41 ` pault at gcc dot gnu dot org
2006-12-16 1:40 ` patchapp at dberlin dot org
2006-12-20 10:58 ` pault at gcc dot gnu dot org
2006-12-20 13:48 ` pault at gcc dot gnu dot org
2006-12-31 15:01 ` [Bug fortran/29992] [4.2 and 4.1 only] " pault at gcc dot gnu dot org
2006-12-31 15:17 ` [Bug fortran/29992] [4.1 " pault at gcc dot gnu dot org
2007-01-10 18:58 ` pinskia 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).