diff options
author | Fred Fish <fnf@specifix.com> | 1993-01-21 18:13:55 +0000 |
---|---|---|
committer | Fred Fish <fnf@specifix.com> | 1993-01-21 18:13:55 +0000 |
commit | fcbadaee94dcdcc47eb623ce1c41f2bf92719e42 (patch) | |
tree | 724eb840af8417b004d4585538b81cd8d62c0a0f /gdb/language.c | |
parent | 2c320e35984957fbca00f3bad8cea39bc75f4c49 (diff) | |
download | gdb-fcbadaee94dcdcc47eb623ce1c41f2bf92719e42.zip gdb-fcbadaee94dcdcc47eb623ce1c41f2bf92719e42.tar.gz gdb-fcbadaee94dcdcc47eb623ce1c41f2bf92719e42.tar.bz2 |
* eval.c (evaluate_subexp): Fix OP_ARRAY, remove code that
implied that "no side effects" was nonfunctional.
* eval.c (evaluate_subexp): Add BINOP_CONCAT case to deal with
character string and bitstring concatenation.
* expprint.c (dump_expression): Add case for BINOP_CONCAT.
* expression.h (exp_opcode): Add BINOP_CONCAT.
* gdbtypes.h (type_code): Add TYPE_CODE_BITSTRING.
* language.c (string_type): Add function to determine if a type
is a string type.
* language.c (binop_type_check): Add case for BINOP_CONCAT.
* valarith.c (value_concat): New function to concatenate two
values, such as character strings or bitstrings.
* valops.c (value_string): Remove error stub and implement
function body.
* value.h (value_concat): Add prototype.
**** start-sanitize-chill ****
* ch-exp.y (operand_3): Add actions for SLASH_SLASH (//).
* ch-exp.y (yylex): Recognize SLASH_SLASH.
* ch-lang.c (chill_op_print_tab): Add SLASH_SLASH (//) as
BINOP_CONCAT.
**** end-sanitize-chill ****
Diffstat (limited to 'gdb/language.c')
-rw-r--r-- | gdb/language.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gdb/language.c b/gdb/language.c index 44aea1e..c5306bb 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -666,6 +666,28 @@ character_type (type) } } +/* Returns non-zero if the value is a string type */ +int +string_type (type) + struct type *type; +{ + switch(current_language->la_language) + { + /* start-sanitize-chill */ + case language_chill: + /* end-sanitize-chill */ + case language_m2: + return TYPE_CODE(type) != TYPE_CODE_STRING ? 0 : 1; + + case language_c: + case language_cplus: + /* C does not have distinct string type. */ + return (0); + default: + return (0); + } +} + /* Returns non-zero if the value is a boolean type */ int boolean_type (type) @@ -871,6 +893,12 @@ binop_type_check(arg1,arg2,op) type_op_error ("Arguments to %s must be of the same type.",op); break; + case BINOP_CONCAT: + if (!(string_type(t1) || character_type(t1)) + || !(string_type(t2) || character_type(t2))) + type_op_error ("Arguments to %s must be strings or characters.", op); + break; + /* Unary checks -- arg2 is null */ case UNOP_LOGICAL_NOT: |