diff options
author | janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-11-04 17:13:16 +0000 |
---|---|---|
committer | janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-11-04 17:13:16 +0000 |
commit | d54315e32fb603d8cf08f8d0c43462dda5b568cb (patch) | |
tree | b43d35487f7962a6cea06c09969b00b3919b362a | |
parent | 5f38d9efc749432a86afc022c455f1da9fa5b686 (diff) | |
download | gcc-d54315e32fb603d8cf08f8d0c43462dda5b568cb.tar.gz |
2012-11-04 Janus Weil <janus@gcc.gnu.org>
PR fortran/55199
* primary.c (gfc_match_varspec): Clear typespec if it cannot be
determined at this point.
2012-11-04 Janus Weil <janus@gcc.gnu.org>
PR fortran/55199
* gfortran.dg/associate_12.f90: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193136 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/primary.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/associate_12.f90 | 29 |
4 files changed, 42 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 8e3e728610c..084f1f8c53b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2012-11-04 Janus Weil <janus@gcc.gnu.org> + + PR fortran/55199 + * primary.c (gfc_match_varspec): Clear typespec if it cannot be + determined at this point. + 2012-10-31 Janus Weil <janus@gcc.gnu.org> PR fortran/53718 diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c index 7b64a3c6854..6be55b0ef2c 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -1975,6 +1975,8 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, gcc_assert (primary->symtree->n.sym->attr.referenced); if (tbp_sym) primary->ts = tbp_sym->ts; + else + gfc_clear_ts (&primary->ts); m = gfc_match_actual_arglist (tbp->n.tb->subroutine, &primary->value.compcall.actual); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0473976ccff..4aced9cadb2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-11-04 Janus Weil <janus@gcc.gnu.org> + + PR fortran/55199 + * gfortran.dg/associate_12.f90: New. + 2012-11-03 Jack Howarth <howarth@bromo.med.uc.edu> PR target/54255 diff --git a/gcc/testsuite/gfortran.dg/associate_12.f90 b/gcc/testsuite/gfortran.dg/associate_12.f90 new file mode 100644 index 00000000000..1ead1e7112e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/associate_12.f90 @@ -0,0 +1,29 @@ +! { dg-do compile } +! +! PR 55199: [OOP] Equivalenced variable has wrong type when used with generic member function +! +! Contributed by Rich Townsend <townsend@astro.wisc.edu> + +module assoc_err_m + implicit none + type :: foo_t + contains + procedure :: func_1 + generic :: func => func_1 + end type +contains + real function func_1 (this) + class(foo_t), intent(in) :: this + end function +end module + +program assoc_err + use assoc_err_m + implicit none + type(foo_t) :: f + associate(b => f%func()) + print *, 1. + b + end associate +end program + +! { dg-final { cleanup-modules "assoc_err_m" } } |