7d1f1e6144
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 |
||
---|---|---|
boehm-gc | ||
config | ||
contrib | ||
fixincludes | ||
gcc | ||
gnattools | ||
include | ||
INSTALL | ||
intl | ||
libada | ||
libcpp | ||
libdecnumber | ||
libffi | ||
libgcc | ||
libgfortran | ||
libgomp | ||
libiberty | ||
libjava | ||
libmudflap | ||
libobjc | ||
libssp | ||
libstdc++-v3 | ||
maintainer-scripts | ||
zlib | ||
ABOUT-NLS | ||
ChangeLog | ||
ChangeLog.tree-ssa | ||
compile | ||
config-ml.in | ||
config.guess | ||
config.rpath | ||
config.sub | ||
configure | ||
configure.ac | ||
COPYING | ||
COPYING3 | ||
COPYING3.LIB | ||
COPYING.LIB | ||
depcomp | ||
install-sh | ||
libtool-ldflags | ||
libtool.m4 | ||
lt~obsolete.m4 | ||
ltgcc.m4 | ||
ltmain.sh | ||
ltoptions.m4 | ||
ltsugar.m4 | ||
ltversion.m4 | ||
MAINTAINERS | ||
Makefile.def | ||
Makefile.in | ||
Makefile.tpl | ||
missing | ||
mkdep | ||
mkinstalldirs | ||
move-if-change | ||
README | ||
README.SCO | ||
symlink-tree | ||
ylwrap |
This directory contains the GNU Compiler Collection (GCC). The GNU Compiler Collection is free software. See the file COPYING for copying permission. The manuals, and some of the runtime libraries, are under different terms; see the individual source files for details. The directory INSTALL contains copies of the installation information as HTML and plain text. The source of this information is gcc/doc/install.texi. The installation information includes details of what is included in the GCC sources and what files GCC installs. See the file gcc/doc/gcc.texi (together with other files that it includes) for usage and porting information. An online readable version of the manual is in the files gcc/doc/gcc.info*. See http://gcc.gnu.org/bugs.html for how to report bugs usefully.