[Bug fortran/45786] Relational operators .eq. and == are not recognized as equivalent

kargl at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Sep 25 00:27:00 GMT 2010


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45786

kargl at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kargl at gcc dot gnu.org

--- Comment #1 from kargl at gcc dot gnu.org 2010-09-25 00:16:43 UTC ---
(In reply to comment #0)
> The first paragraph of 7.2 in the standard states that "The operators <, ...
> always have the same interpretations as the operators .LT., ..."  Consider the
> following example:
> 
> module foo_type
>   private
>   public :: foo, operator(==)

Interesting.  If you replace == with .eq. in the
the above everything works as expected.

Interesting**2.  If you leave the public statement
intact, and change the .eq. in the following to ==

> interface operator(.eq.)
>    module procedure eq_foo
> end interface

everything works as expected.

Interesting**3.  If you simply remove the private
and public statement then everything works as one
would expect.

And finally, an even more interesting bug.
Change the interface statement to 

  interface operator(.eq.)
    module procedure eq_foo
  end interface operator(==)

This gives 

h.f90:7.28:

  end interface operator(==)
                            1
Error: Expecting 'END INTERFACE OPERATOR (.eq.)' at (1)
h.f90:8.10:

The above violates C1202.

-- 
Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the Gcc-bugs mailing list