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).