PR fortran/83092
* expr.c (gfc_apply_init): Check that typespec has character type
before using character length field.
2017_12_27 Louis Krupp <louis.krupp@zoho.com>
PR fortran/83092
* gfortran.dg/init_char_with_nonchar_ctr.f90: New test.
From-SVN: r256011
+2017_12_27 Louis Krupp <louis.krupp@zoho.com>
+
+ PR fortran/83092
+ * expr.c (gfc_apply_init): Check that typespec has character type
+ before using character length field.
+
2017-12-26 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/83540
if (init->expr_type == EXPR_CONSTANT)
gfc_set_constant_character_len (len, init, -1);
else if (init
+ && init->ts.type == BT_CHARACTER
&& init->ts.u.cl
&& mpz_cmp (ts->u.cl->length->value.integer,
init->ts.u.cl->length->value.integer))
+2017_12_27 Louis Krupp <louis.krupp@zoho.com>
+
+ PR fortran/83092
+ * gfortran.dg/init_char_with_nonchar_ctr.f90: New test.
+
2017-12-27 Kugan Vivekanandarajah <kuganv@linaro.org>
* gcc.target/aarch64/advsimd-intrinsics/vld1x2.c: New test.
--- /dev/null
+! { dg-do compile }
+
+! Initialization of character by non-character constructor
+
+subroutine s1
+ type t
+ integer :: n = 0
+ end type
+ type t2
+ character :: c = t() ! { dg-error "Can't convert TYPE\\(t\\) to CHARACTER\\(1\\)" }
+ end type
+end subroutine
+
+subroutine s2
+ type t
+ end type
+ type t2
+ character :: c(1) = [t()] ! { dg-error "Can't convert TYPE\\(t\\) to CHARACTER\\(1\\)" }
+ end type
+end subroutine
+
+subroutine s3
+ type t
+ integer :: a = 1
+ character :: c = t() ! { dg-error "Can't convert TYPE\\(t\\) to CHARACTER\\(1\\)" }
+ end type
+end subroutine
+
+subroutine s4
+ type t
+ integer, allocatable :: a
+ character :: c = t() ! { dg-error "Can't convert TYPE\\(t\\) to CHARACTER\\(1\\)" }
+ end type
+end subroutine