* value.h (value_bitstring_subscript): New prototype.
[deliverable/binutils-gdb.git] / gdb / eval.c
index ca3676298a378173be333dac341410a7257dce81..9400ef4b368e6cb679c2afb477eded1e9bd70893 100644 (file)
@@ -1666,7 +1666,28 @@ evaluate_subexp_standard (struct type *expect_type,
            }
          else
            {
-             arg1 = value_subscript (arg1, arg2);
+             arg1 = coerce_ref (arg1);
+             type = check_typedef (value_type (arg1));
+
+             switch (TYPE_CODE (type))
+               {
+               case TYPE_CODE_PTR:
+               case TYPE_CODE_ARRAY:
+               case TYPE_CODE_STRING:
+                 arg1 = value_subscript (arg1, arg2);
+                 break;
+
+               case TYPE_CODE_BITSTRING:
+                 arg1 = value_bitstring_subscript (LA_BOOL_TYPE, arg1, arg2);
+                 break;
+
+               default:
+                 if (TYPE_NAME (type))
+                   error (_("cannot subscript something of type `%s'"),
+                          TYPE_NAME (type));
+                 else
+                   error (_("cannot subscript requested type"));
+               }
            }
        }
       return (arg1);
This page took 0.026739 seconds and 4 git commands to generate.