summaryrefslogtreecommitdiffstats
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authortobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>2004-12-08 12:27:54 +0000
committertobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>2004-12-08 12:27:54 +0000
commitf6c25b7dc1e3ed77b6bcf5286af2430d69094074 (patch)
tree951a9de75e76aabaafa96a1b09a9545d635165cf /gcc/fortran/resolve.c
parent9c6d82f3b8eb88d369ef6a27bddeb1b2dc19869f (diff)
downloadppe42-gcc-f6c25b7dc1e3ed77b6bcf5286af2430d69094074.tar.gz
ppe42-gcc-f6c25b7dc1e3ed77b6bcf5286af2430d69094074.zip
fortran/
* resolve.c (resolve_code): Impose correct restrictions on assigned variable. testsuite/ * gfortran.dg/assign_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91898 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index e592a02ae42..ecc3a3520ae 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:
OpenPOWER on IntegriCloud