-
- Downloads
trans-expr.c (conv_parent_component_references): New function to build missing parent references.
2008-07-29 Paul Thomas <pault@gcc.gnu.org> fortran/ * trans-expr.c (conv_parent_component_references): New function to build missing parent references. (gfc_conv_variable): Call it * symbol.c (gfc_add_component): Check that component name in a derived type extension does not appear in parent. (gfc_find_component): For a derived type extension, check if the component appears in the parent derived type by calling self. Separate errors for private components and private types. * decl.c (match_data_constant): Add extra arg to call to gfc_match_structure_constructor. (check_extended_derived_type): New function to check that a parent derived type exists and that it is OK for exension. (gfc_get_type_attr_spec): Add extra argument 'name' and return it if extends is specified. (gfc_match_derived_decl): Match derived type extension and build a first component of the parent derived type if OK. Add the f2k namespace if not present. * gfortran.h : Add the extension attribute. * module.c : Handle attribute 'extension'. * match.h : Modify prototypes for gfc_get_type_attr_spec and gfc_match_structure_constructor. * primary.c (build_actual_constructor): New function extracted from gfc_match_structure_constructor and modified to call self iteratively to build derived type extensions, when f2k named components are used. (gfc_match_structure_constructor): Do not throw error for too many components if a parent type is being handled. Use gfc_find_component to generate errors for non-existent or private components. Iteratively call self for derived type extensions so that parent constructor is built. If extension and components left over, throw error. (gfc_match_rvalue): Add extra arg to call to gfc_match_structure_constructor. * trans-array.c (gfc_conv_resolve_dependencies): If lhs and rhs are the same symbol, aliassing does not matter. testsuite/ * gfortran.dg/extends_1.f03: New test. * gfortran.dg/extends_2.f03: New test. * gfortran.dg/extends_3.f03: New test. * gfortran.dg/extends_4.f03: New test. * gfortran.dg/extends_5.f03: New test. * gfortran.dg/extends_6.f03: New test. * gfortran.dg/private_type_6.f90: Modify error message. * gfortran.dg/structure_constructor_7.f03: Modify error message. * gfortran.dg/structure_constructor_8.f03: Modify error message. From-SVN: r138275
Showing
- gcc/fortran/ChangeLog 39 additions, 0 deletionsgcc/fortran/ChangeLog
- gcc/fortran/decl.c 88 additions, 3 deletionsgcc/fortran/decl.c
- gcc/fortran/gfortran.h 1 addition, 3 deletionsgcc/fortran/gfortran.h
- gcc/fortran/match.h 2 additions, 2 deletionsgcc/fortran/match.h
- gcc/fortran/module.c 8 additions, 1 deletiongcc/fortran/module.c
- gcc/fortran/primary.c 145 additions, 105 deletionsgcc/fortran/primary.c
- gcc/fortran/symbol.c 31 additions, 4 deletionsgcc/fortran/symbol.c
- gcc/fortran/trans-array.c 8 additions, 6 deletionsgcc/fortran/trans-array.c
- gcc/fortran/trans-expr.c 39 additions, 2 deletionsgcc/fortran/trans-expr.c
- gcc/fortran/trans-io.c 2 additions, 2 deletionsgcc/fortran/trans-io.c
- gcc/testsuite/ChangeLog 12 additions, 0 deletionsgcc/testsuite/ChangeLog
- gcc/testsuite/gfortran.dg/extends_1.f03 73 additions, 0 deletionsgcc/testsuite/gfortran.dg/extends_1.f03
- gcc/testsuite/gfortran.dg/extends_2.f03 66 additions, 0 deletionsgcc/testsuite/gfortran.dg/extends_2.f03
- gcc/testsuite/gfortran.dg/extends_3.f03 71 additions, 0 deletionsgcc/testsuite/gfortran.dg/extends_3.f03
- gcc/testsuite/gfortran.dg/extends_4.f03 52 additions, 0 deletionsgcc/testsuite/gfortran.dg/extends_4.f03
- gcc/testsuite/gfortran.dg/extends_5.f03 27 additions, 0 deletionsgcc/testsuite/gfortran.dg/extends_5.f03
- gcc/testsuite/gfortran.dg/extends_6.f03 49 additions, 0 deletionsgcc/testsuite/gfortran.dg/extends_6.f03
- gcc/testsuite/gfortran.dg/private_type_6.f90 1 addition, 1 deletiongcc/testsuite/gfortran.dg/private_type_6.f90
- gcc/testsuite/gfortran.dg/structure_constructor_7.f03 1 addition, 1 deletiongcc/testsuite/gfortran.dg/structure_constructor_7.f03
- gcc/testsuite/gfortran.dg/structure_constructor_8.f03 2 additions, 2 deletionsgcc/testsuite/gfortran.dg/structure_constructor_8.f03
Loading
Please register or sign in to comment