resolve.c (resolve_code): Impose correct restrictions on assigned variable.
authorTobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>
Wed, 8 Dec 2004 12:27:54 +0000 (13:27 +0100)
committerTobias Schlüter <tobi@gcc.gnu.org>
Wed, 8 Dec 2004 12:27:54 +0000 (13:27 +0100)
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
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/assign_1.f90 [new file with mode: 0644]

index 132275fb01fb01485b3d85a4a4ad3b71565040f6..96c67b1fcea0d68065d872ea6ab5ae32e59ef515 100644 (file)
@@ -1,3 +1,8 @@
+2004-12-08  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
+
+       * resolve.c (resolve_code): Impose correct restrictions on
+       assigned variable.
+
 2004-12-02  Steven G. Kargl  <kargls@comcast.net>
        Paul Brook  <paul@codesourcery.com>
 
index e592a02ae42fa28e334e63a655f47c2a73852b94..ecc3a3520aefa1d7522cbd3929bd54cce308dcb5 100644 (file)
@@ -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:
index b832863158c067d0e00ca62ba6bf045a1934f529..81d2aa2d65408f14312356427c508f8bb5f74df8 100644 (file)
@@ -1,3 +1,7 @@
+2004-12-08  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
+
+       * gfortran.dg/assign_1.f90: New test.
+
 2004-12-08  Nick Clifton  <nickc@redhat.com>
 
        * gcc.target/xstormy16/bss_below100: New directory containing tests.
diff --git a/gcc/testsuite/gfortran.dg/assign_1.f90 b/gcc/testsuite/gfortran.dg/assign_1.f90
new file mode 100644 (file)
index 0000000..ccfe866
--- /dev/null
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! Option passed to avoid excess errors from obsolete warning
+! { dg-options "-w" }
+      integer*4 i(5)
+      assign 1000 to i   ! { dg-error "scalar default INTEGER" }
+ 1000 continue
+      end