X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fmatrix.c;fp=src%2Flanguage%2Fstats%2Fmatrix.c;h=473cec585a29c77bb27f7d0b1f782774407ef7bd;hb=364db2e2b6036a083eb34eff5167a8dd5074c773;hp=2e7bb83dfb1c1d21d09bcc78533b1a21718b5d73;hpb=73d1c7eda1b9ea351bb37c55a9be592a4884a516;p=pspp diff --git a/src/language/stats/matrix.c b/src/language/stats/matrix.c index 2e7bb83dfb..473cec585a 100644 --- a/src/language/stats/matrix.c +++ b/src/language/stats/matrix.c @@ -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],