From 40f2165e2de6ad91cd026f154abc32f1be456bd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Schl=C3=BCter?= Date: Wed, 8 Dec 2004 13:27:54 +0100 Subject: resolve.c (resolve_code): Impose correct restrictions on assigned variable. fortran/ * resolve.c (resolve_code): Impose correct restrictions on assigned variable. testsuite/ * gfortran.dg/assign_1.f90: New test. From-SVN: r91898 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/resolve.c | 11 ++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) (limited to 'gcc/fortran') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 132275f..96c67b1 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2004-12-08 Tobias Schlueter + + * resolve.c (resolve_code): Impose correct restrictions on + assigned variable. + 2004-12-02 Steven G. Kargl Paul Brook diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index e592a02..ecc3a35 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -3678,9 +3678,14 @@ resolve_code (gfc_code * code, gfc_namespace * ns) if (code->label->defined == ST_LABEL_UNKNOWN) gfc_error ("Label %d referenced at %L is never defined", code->label->value, &code->label->where); - if (t == SUCCESS && code->expr->ts.type != BT_INTEGER) - gfc_error ("ASSIGN statement at %L requires an INTEGER " - "variable", &code->expr->where); + if (t == SUCCESS + && (code->expr->expr_type != EXPR_VARIABLE + || code->expr->symtree->n.sym->ts.type != BT_INTEGER + || code->expr->symtree->n.sym->ts.kind + != gfc_default_integer_kind + || code->expr->symtree->n.sym->as != NULL)) + gfc_error ("ASSIGN statement at %L requires a scalar " + "default INTEGER variable", &code->expr->where); break; case EXEC_POINTER_ASSIGN: -- cgit v1.1