Revert "work toward better error reporting"
[pspp] / src / language / stats / matrix.c
index 2e7bb83dfb1c1d21d09bcc78533b1a21718b5d73..473cec585a29c77bb27f7d0b1f782774407ef7bd 100644 (file)
@@ -501,8 +501,6 @@ struct matrix_expr
         struct matrix_var *variable;
         struct read_file *eof;
       };
-
-    struct msg_location *location;
   };
 
 static void
@@ -554,7 +552,6 @@ MATRIX_FUNCTIONS
     case MOP_EOF:
       break;
     }
-  msg_location_destroy (e->location);
   free (e);
 }
 
@@ -568,9 +565,6 @@ matrix_expr_create_subs (enum matrix_op op, struct matrix_expr **subs,
     .subs = xmemdup (subs, n_subs * sizeof *subs),
     .n_subs = n_subs
   };
-
-  for (size_t i = 0; i < n_subs; i++)
-    msg_location_merge (&e->location, subs[i]->location);
   return e;
 }
 
@@ -2651,32 +2645,19 @@ matrix_parse_function (struct matrix_state *s, const char *token,
   if (!f)
     return false;
 
+  lex_get_n (s->lexer, 2);
+
   struct matrix_expr *e = xmalloc (sizeof *e);
-  *e = (struct matrix_expr) {
-    .op = f->op,
-    .location = lex_get_location (s->lexer, 0, 0)
-  };
+  *e = (struct matrix_expr) { .op = f->op, .subs = NULL };
 
-  lex_get_n (s->lexer, 2);
   if (lex_token (s->lexer) != T_RPAREN)
     {
       size_t allocated_subs = 0;
       do
         {
-          struct msg_location *arg_location = lex_get_location (s->lexer, 0, 0);
           struct matrix_expr *sub = matrix_parse_expr (s);
           if (!sub)
-            {
-              msg_location_destroy (arg_location);
-              goto error;
-            }
-          if (!sub->location)
-            {
-              lex_extend_location (s->lexer, 0, arg_location);
-              sub->location = arg_location;
-            }
-          else
-            msg_location_destroy (arg_location);
+            goto error;
 
           if (e->n_subs >= allocated_subs)
             e->subs = x2nrealloc (e->subs, &allocated_subs, sizeof *e->subs);
@@ -4347,7 +4328,6 @@ matrix_expr_evaluate_integer (const struct matrix_expr *e, const char *context,
 struct matrix_lvalue
   {
     struct matrix_var *var;
-    struct msg_location *var_location;
     struct matrix_expr *indexes[2];
     size_t n_indexes;
   };
@@ -4369,7 +4349,6 @@ matrix_lvalue_parse (struct matrix_state *s)
   struct matrix_lvalue *lvalue = xzalloc (sizeof *lvalue);
   if (!lex_force_id (s->lexer))
     goto error;
-  lvalue->var_location = lex_get_location (s->lexer, 0, 0);
   lvalue->var = matrix_var_lookup (s, lex_tokss (s->lexer));
   if (lex_next_token (s->lexer, 1) == T_LPAREN)
     {
@@ -4530,23 +4509,21 @@ matrix_lvalue_evaluate (struct matrix_lvalue *lvalue,
   gsl_matrix *dm = lvalue->var->value;
   if (!dm)
     {
-      msg_at (SE, lvalue->var_location,
-              _("Undefined variable %s."), lvalue->var->name);
+      msg (SE, _("Undefined variable %s."), lvalue->var->name);
       return false;
     }
   else if (dm->size1 == 0 || dm->size2 == 0)
     {
-      msg_at (SE, lvalue->var_location,
-              _("Cannot index %zu×%zu matrix."), dm->size1, dm->size2);
+      msg (SE, _("Cannot index %zu×%zu matrix."),
+           dm->size1, dm->size2);
       return false;
     }
   else if (lvalue->n_indexes == 1)
     {
       if (!is_vector (dm))
         {
-          msg_at (SE, lvalue->var_location,
-                  _("Can't use vector indexing on %zu×%zu matrix %s."),
-                  dm->size1, dm->size2, lvalue->var->name);
+          msg (SE, _("Can't use vector indexing on %zu×%zu matrix %s."),
+               dm->size1, dm->size2, lvalue->var->name);
           return false;
         }
       return matrix_lvalue_evaluate_vector (lvalue->indexes[0],