aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/fortran/decl.c2
-rw-r--r--gcc/testsuite/gfortran.dg/pr95586_1.f909
-rw-r--r--gcc/testsuite/gfortran.dg/pr95586_2.f9011
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
+
+