This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/37425] Fortran 2003: GENERIC bindings as operators



------- Comment #4 from domob at gcc dot gnu dot org  2009-08-27 11:43 -------
Subject: Bug 37425

Author: domob
Date: Thu Aug 27 11:42:56 2009
New Revision: 151140

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=151140
Log:
2009-08-27  Daniel Kraft  <d@domob.eu>

        PR fortran/37425
        * gfortran.h (gfc_expr): Optionally store base-object in compcall value
        and add a new flag to distinguish assign-calls generated.
        (gfc_find_typebound_proc): Add locus argument.
        (gfc_find_typebound_user_op), (gfc_find_typebound_intrinsic_op): Ditto.
        (gfc_extend_expr): Return if failure was by a real error.
        * interface.c (matching_typebound_op): New routine.
        (build_compcall_for_operator): New routine.
        (gfc_extend_expr): Handle type-bound operators, some clean-up and
        return if failure was by a real error or just by not finding an
        appropriate operator definition.
        (gfc_extend_assign): Handle type-bound assignments.
        * module.c (MOD_VERSION): Incremented.
        (mio_intrinsic_op): New routine.
        (mio_full_typebound_tree): New routine to make typebound-procedures IO
        code reusable for type-bound user operators.
        (mio_f2k_derived): IO of type-bound operators.
        * primary.c (gfc_match_varspec): Initialize new fields in gfc_expr and
        pass locus to gfc_find_typebound_proc.
        * resolve.c (resolve_operator): Only output error about no matching
        interface if gfc_extend_expr did not already fail with an error.
        (extract_compcall_passed_object): Use specified base-object if present.
        (update_compcall_arglist): Handle ignore_pass field.
        (resolve_ordinary_assign): Update to handle extended code for
        type-bound assignments, too.
        (resolve_code): Handle EXEC_ASSIGN_CALL statement code.
        (resolve_tb_generic_targets): Pass locus to gfc_find_typebound_proc.
        (resolve_typebound_generic), (resolve_typebound_procedure): Ditto.
        (resolve_typebound_intrinsic_op), (resolve_typebound_user_op): Ditto.
        (ensure_not_abstract_walker), (resolve_fl_derived): Ditto.
        (resolve_typebound_procedures): Remove not-implemented error.
        (resolve_typebound_call): Handle assign-call flag.
        * symbol.c (find_typebound_proc_uop): New argument to pass locus for
        error message about PRIVATE, verify that a found procedure is not
marked
        as erraneous.
        (gfc_find_typebound_intrinsic_op): Ditto.
        (gfc_find_typebound_proc), (gfc_find_typebound_user_op): New locus arg.

2009-08-27  Daniel Kraft  <d@domob.eu>

        PR fortran/37425
        * gfortran.dg/impure_assignment_1.f90: Change expected error message.
        * gfortran.dg/typebound_operator_1.f03: Remove check for
not-implemented
        error and fix problem with recursive assignment.
        * gfortran.dg/typebound_operator_2.f03: No not-implemented check.
        * gfortran.dg/typebound_operator_3.f03: New test.
        * gfortran.dg/typebound_operator_4.f03: New test.

Added:
    trunk/gcc/testsuite/gfortran.dg/typebound_operator_3.f03
    trunk/gcc/testsuite/gfortran.dg/typebound_operator_4.f03
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/gfortran.h
    trunk/gcc/fortran/interface.c
    trunk/gcc/fortran/module.c
    trunk/gcc/fortran/primary.c
    trunk/gcc/fortran/resolve.c
    trunk/gcc/fortran/symbol.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/impure_assignment_1.f90
    trunk/gcc/testsuite/gfortran.dg/typebound_operator_1.f03
    trunk/gcc/testsuite/gfortran.dg/typebound_operator_2.f03


-- 


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]