* expression.h (enum exp_opcode): Add BINOP_RANGE.
authorPer Bothner <per@bothner.com>
Wed, 29 Nov 1995 22:59:31 +0000 (22:59 +0000)
committerPer Bothner <per@bothner.com>
Wed, 29 Nov 1995 22:59:31 +0000 (22:59 +0000)
* expprint.c (dump_expression):  Support BINOP_RANGE.
* eval.c (evaluate_subexp_standard):  Handle BINOP_RANGE (as error).
(case MULTI_SUBSCRIPT):  Fix broken f77 value->int ad hoc conversion.
* ch-lang.c (chill_op_print_tab):  Support BINOP_RANGE.
(evaluate_subexp_chill):  Error on BINOP_COMMA.

gdb/ChangeLog
gdb/ch-lang.c
gdb/eval.c

index c78cbc634f9921304a73bcee12c1c097acfe0714..1e2654a7c40aaf7a511afe9558be2d81a0769b47 100644 (file)
@@ -1,5 +1,12 @@
 Wed Nov 29 13:35:18 1995  Per Bothner  <bothner@kalessin.cygnus.com>
 
+       * expression.h (enum exp_opcode):  Add BINOP_RANGE.
+       * expprint.c (dump_expression):  Support BINOP_RANGE.
+       * eval.c (evaluate_subexp_standard):  Handle BINOP_RANGE (as error).
+       (case MULTI_SUBSCRIPT):  Fix broken f77 value->int ad hoc conversion.
+       * ch-lang.c (chill_op_print_tab):  Support BINOP_RANGE.
+       (evaluate_subexp_chill):  Error on BINOP_COMMA.
+
        * Makefile.in:  Clean up so doc stuff stays in doc sub-dir.
 
 Wed Nov 29 16:39:50 1995  Michael Meissner  <meissner@tiktok.cygnus.com>
index f8be814c3d56d5237e2d20e30de54023ee68aed1..1e681f50b1a03de407696f4d9aac4f898916a9ba 100644 (file)
@@ -272,6 +272,7 @@ static const struct op_print chill_op_print_tab[] = {
     {"-",   UNOP_NEG, PREC_PREFIX, 0},
     {"->",  UNOP_IND, PREC_SUFFIX, 1},
     {"->",  UNOP_ADDR, PREC_PREFIX, 0},
+    {":",   BINOP_RANGE, PREC_ASSIGN, 0},
     {NULL,  0, 0, 0}
 };
 \f
@@ -453,6 +454,9 @@ evaluate_subexp_chill (expect_type, exp, pos, noside)
       arg1 = (*exp->language_defn->evaluate_exp) (NULL_TYPE, exp, pos, noside);
       return value_chill_length (arg1);
 
+    case BINOP_COMMA:
+      error ("',' operator used in invalid context");
+
     default:
       break;
     }
index 65c9312c446cef0c47175f1baca2a5f43fb25090..05adc90b43c6e03e938cfe11f9c91ba9b94603f4 100644 (file)
@@ -978,6 +978,13 @@ evaluate_subexp_standard (expect_type, exp, pos, noside)
       else
        return value_binop (arg1, arg2, op);
 
+    case BINOP_RANGE:
+      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      if (noside == EVAL_SKIP)
+       goto nosideret;
+      error ("':' operator used in invalid context");
+
     case BINOP_SUBSCRIPT:
       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
@@ -1087,12 +1094,9 @@ evaluate_subexp_standard (expect_type, exp, pos, noside)
            /* Evaluate each subscript, It must be a legal integer in F77 */ 
            arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
 
-           if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_INT)
-             error ("Array subscripts must be of type integer");
-
            /* Fill in the subscript and array size arrays */ 
 
-           subscript_array[i] = (* (unsigned int *) VALUE_CONTENTS(arg2)); 
+           subscript_array[i] = value_as_long (arg2);
                
            retcode = f77_get_dynamic_upperbound (tmp_type, &upper);
            if (retcode == BOUND_FETCH_ERROR)