aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2016-09-09 18:04:23 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2016-09-09 18:04:23 +0000
commite81e83d04796b834c9f3e63d74b7202bca28e5c9 (patch)
tree5fdf6aaf776694e7ccabe59f389a6d473b87f874
parent36d9b716adc475115143c81f345db454861472da (diff)
downloadgcc-e81e83d04796b834c9f3e63d74b7202bca28e5c9.zip
gcc-e81e83d04796b834c9f3e63d74b7202bca28e5c9.tar.gz
gcc-e81e83d04796b834c9f3e63d74b7202bca28e5c9.tar.bz2
re PR fortran/77506 (F2008 Standard does not allow CHARACTER(LEN=*) in array constructor)
2016-09-09 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/77506 * array.c (gfc_match_array_constructor): CHARACTER(len=*) cannot appear in an array constructor. 2016-09-09 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/77506 * gfortran.dg/pr77506.f90: New test. From-SVN: r240052
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/array.c9
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr77506.f904
4 files changed, 24 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index a0afe04..284bf7d 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,11 @@
2016-09-09 Steven G. Kargl <kargl@gcc.gnu.org>
+ PR fortran/77506
+ * array.c (gfc_match_array_constructor): CHARACTER(len=*) cannot
+ appear in an array constructor.
+
+2016-09-09 Steven G. Kargl <kargl@gcc.gnu.org>
+
PR fortran/77507
* intrinsic.c (add_functions): Use correct keyword.
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c
index 48a7250..14e20a3 100644
--- a/gcc/fortran/array.c
+++ b/gcc/fortran/array.c
@@ -1142,6 +1142,15 @@ gfc_match_array_constructor (gfc_expr **result)
gfc_restore_last_undo_checkpoint ();
goto cleanup;
}
+
+ if (ts.type == BT_CHARACTER
+ && ts.u.cl && !ts.u.cl->length && !ts.u.cl->length_from_typespec)
+ {
+ gfc_error ("Type-spec at %L cannot contain an asterisk for a "
+ "type parameter", &where);
+ gfc_restore_last_undo_checkpoint ();
+ goto cleanup;
+ }
}
}
else if (m == MATCH_ERROR)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 407bc30..56ff8bc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2016-09-09 Steven G. Kargl <kargl@gcc.gnu.org>
+ PR fortran/77506
+ * gfortran.dg/pr77506.f90: New test.
+
+2016-09-09 Steven G. Kargl <kargl@gcc.gnu.org>
+
PR fortran/77507
* gfortran.dg/pr77507.f90: New test.
diff --git a/gcc/testsuite/gfortran.dg/pr77506.f90 b/gcc/testsuite/gfortran.dg/pr77506.f90
new file mode 100644
index 0000000..70d874e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr77506.f90
@@ -0,0 +1,4 @@
+! { dg-do compile }
+program foo
+ print *, [character(len=*)::'ab','cd'] ! { dg-error "contain an asterisk" }
+end program foo