diff options
-rw-r--r-- | gcc/fortran/decl.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr95586_1.f90 | 9 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr95586_2.f90 | 11 |
3 files changed, 21 insertions, 1 deletions
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index c8a9853..c27cfac 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -4827,7 +4827,7 @@ gfc_match_implicit (void) /* Last chance -- check <TYPE> <SELECTOR> (<RANGE>). */ if (ts.type == BT_CHARACTER) m = gfc_match_char_spec (&ts); - else + else if (ts.type != BT_DERIVED) { m = gfc_match_kind_spec (&ts, false); if (m == MATCH_NO) diff --git a/gcc/testsuite/gfortran.dg/pr95586_1.f90 b/gcc/testsuite/gfortran.dg/pr95586_1.f90 new file mode 100644 index 0000000..009eb3e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr95586_1.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +! + +program test + implicit type(t) (1) ! { dg-error "Syntax error" } + type t + end type +end program + diff --git a/gcc/testsuite/gfortran.dg/pr95586_2.f90 b/gcc/testsuite/gfortran.dg/pr95586_2.f90 new file mode 100644 index 0000000..81ea6e9 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr95586_2.f90 @@ -0,0 +1,11 @@ +! { dg-do compile } +! + +program test + integer, parameter :: n1 = 1 + implicit type(t) (n1) ! { dg-error "Syntax error" } + type t + end type +end program + + |