From: Janus Weil Date: Mon, 28 Dec 2009 23:13:03 +0000 (+0100) Subject: re PR fortran/42353 ([OOP] Bogus Error: Name 'vtype$...' at (1) is an ambiguous refer... X-Git-Tag: releases/gcc-4.5.0~1498 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aba7171d5f8c4691e638ee8472874792d9244c81;p=thirdparty%2Fgcc.git re PR fortran/42353 ([OOP] Bogus Error: Name 'vtype$...' at (1) is an ambiguous reference ...) gcc/fortran/ 2009-12-28 Janus Weil PR fortran/42353 * symbol.c (gfc_find_derived_vtab): Make vtabs and vtypes private. gcc/testsuite/ 2009-12-28 Janus Weil PR fortran/42353 * gfortran.dg/class_13.f03: New test. From-SVN: r155494 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0f2ecc7e8db2..55fc75340992 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2009-12-28 Janus Weil + + PR fortran/42353 + * symbol.c (gfc_find_derived_vtab): Make vtabs and vtypes private. + 2009-12-27 Francois-Xavier Coudert Daniel Kraft diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 1b40d9a549ac..8ba5adb51c20 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -4748,6 +4748,7 @@ gfc_find_derived_vtab (gfc_symbol *derived) vtab->attr.target = 1; vtab->attr.save = SAVE_EXPLICIT; vtab->attr.vtab = 1; + vtab->attr.access = ACCESS_PRIVATE; vtab->refs++; gfc_set_sym_referenced (vtab); sprintf (name, "vtype$%s", derived->name); @@ -4764,6 +4765,7 @@ gfc_find_derived_vtab (gfc_symbol *derived) return NULL; vtype->refs++; gfc_set_sym_referenced (vtype); + vtype->attr.access = ACCESS_PRIVATE; /* Add component '$hash'. */ if (gfc_add_component (vtype, "$hash", &c) == FAILURE) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b92799fe4d21..aef38ad70f51 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-12-28 Janus Weil + + PR fortran/42353 + * gfortran.dg/class_13.f03: New test. + 2009-12-28 H.J. Lu PR middle-end/41344 diff --git a/gcc/testsuite/gfortran.dg/class_13.f03 b/gcc/testsuite/gfortran.dg/class_13.f03 new file mode 100644 index 000000000000..84073bf2276a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/class_13.f03 @@ -0,0 +1,37 @@ +! { dg-do compile } +! +! PR 42353: [OOP] Bogus Error: Name 'vtype$...' at (1) is an ambiguous reference ... +! +! Original test case by Harald Anlauf +! Modified by Janus Weil + +module concrete_vector + type :: trivial_vector_type + end type + class(trivial_vector_type), pointer :: this +end module concrete_vector + +module concrete_gradient +contains + subroutine my_to_vector (v) + use concrete_vector + class(trivial_vector_type) :: v + select type (v) + class is (trivial_vector_type) + end select + end subroutine +end module concrete_gradient + +module concrete_inner_product + use concrete_vector + use concrete_gradient +contains + real function my_dot_v_v (a) + class(trivial_vector_type) :: a + select type (a) + class is (trivial_vector_type) + end select + end function +end module concrete_inner_product + +! { dg-final { cleanup-modules "concrete_vector concrete_gradient concrete_inner_product" } }