re PR fortran/31580 (Better error message for not-found operator)
authorDaniel Franke <franke.daniel@gmail.com>
Fri, 29 Jun 2007 19:05:58 +0000 (15:05 -0400)
committerDaniel Franke <dfranke@gcc.gnu.org>
Fri, 29 Jun 2007 19:05:58 +0000 (15:05 -0400)
gcc/fortran:
2007-06-29  Daniel Franke  <franke.daniel@gmail.com>

        PR fortran/31580
        * resolve.c (resolve_operator): Added check whether a user
defined operator is available.

gcc/testsuite:
2007-06-29  Daniel Franke  <franke.daniel@gmail.com>

PR fortran/31580
* gfortran.dg/operator_3.f90: New test.

From-SVN: r126117

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/operator_3.f90 [new file with mode: 0644]

index 3e314c0c22808690cac606644362728c69f1ee71..57724bff2fb65a59526bb2f909e4aa0e53c9b7ca 100644 (file)
@@ -1,3 +1,8 @@
+2007-06-29  Daniel Franke  <franke.daniel@gmail.com>
+
+       * resolve.c (resolve_operator): Added check whether a user
+       defined operator is available.
+
 2007-06-29  Daniel Franke <franke.daniel@gmail.com>
 
        * openmp.c (resolve_omp_clauses): Adjust error message to
index bc6ba02d44a86ed420111091b8fc77ab039c3c86..8cc0c421193f868c09c2587298d6545815b5ac8a 100644 (file)
@@ -2251,7 +2251,9 @@ resolve_operator (gfc_expr *e)
       goto bad_op;
 
     case INTRINSIC_USER:
-      if (op2 == NULL)
+      if (e->value.op.uop->operator == NULL)
+       sprintf (msg, _("Unknown operator '%s' at %%L"), e->value.op.uop->name);
+      else if (op2 == NULL)
        sprintf (msg, _("Operand of user operator '%s' at %%L is %s"),
                 e->value.op.uop->name, gfc_typename (&op1->ts));
       else
index 7a7f212515c6a6f37e333a056b4400d993ba4626..447bcdeca8f07bf0c915dd82367451503e6a080b 100644 (file)
@@ -1,3 +1,7 @@
+2007-06-29  Daniel Franke  <franke.daniel@gmail.com>
+
+       * gfortran.dg/operator_3.f90: New test.
+
 2007-06-29  Daniel Franke  <franke.daniel@gmail.com>
 
        * gfortran.dg/gomp/reduction1.f90: Adjust error message.
diff --git a/gcc/testsuite/gfortran.dg/operator_3.f90 b/gcc/testsuite/gfortran.dg/operator_3.f90
new file mode 100644 (file)
index 0000000..66f051d
--- /dev/null
@@ -0,0 +1,9 @@
+! { dg-compile }
+! PR fortran/31580
+!
+! Testcase contributed by Tobias Burnus <burnus AT gcc DOT gnu DOT org>
+!
+PROGRAM test
+  real :: a,b
+  if(a .nonex. b) stop       ! { dg-error "Unknown operator" }
+end program