pike.git/
src/
operators.c
Branch:
Tag:
Non-build tags
All tags
No tags
2016-12-31
2016-12-31 02:45:41 by Martin Nilsson <nilsson@fastmail.com>
4d42659d93f823684df210ff0a4542514644f027 (
37
lines) (+
18
/-
19
)
[
Show
|
Annotate
]
Branch:
8.1
Made errors a bit more consistent.
2313:
{ case T_OBJECT: if(!call_lfun(LFUN_SUBTRACT, LFUN_RSUBTRACT))
-
bad
_
arg_error
("`-",
sp-2, 2, 2, get_name_of_type(TYPEOF(sp[-2])),
-
sp-1,
"Subtract on objects without
subtract
operator.\n");
+
PIKE
_
ERROR
("`-", "Subtract on objects without
`-
operator.\n"
, sp, 2
);
return; case T_ARRAY:
2614:
switch(TYPEOF(sp[-2])) { case T_OBJECT:
-
call_lfun(LFUN_AND,LFUN_RAND);
-
break
;
+
if(!
call_lfun(LFUN_AND,LFUN_RAND)
)
+
PIKE_ERROR("`&", "Bitwise and on objects without `& operator.\n", sp, 2)
;
+
return
;
case T_INT: sp--; SET_SVAL(sp[-1], PIKE_T_INT, NUMBER_NUMBER, integer, sp[-1].u.integer & sp[0].u.integer);
-
break
;
+
return
;
case T_MAPPING: {
2902:
switch(TYPEOF(sp[-2])) { case T_OBJECT:
-
call_lfun(LFUN_OR,LFUN_ROR);
-
break
;
+
if(!
call_lfun(LFUN_OR,LFUN_ROR)
)
+
PIKE_ERROR("`|", "Bitwise or on objects without `| operator.\n", sp, 2)
;
+
return
;
case T_INT: sp--; SET_SVAL(sp[-1], T_INT, NUMBER_NUMBER, integer, sp[-1].u.integer | sp[0].u.integer);
-
break
;
+
return
;
case T_MAPPING: {
3149:
{ case T_OBJECT: if(!call_lfun(LFUN_XOR,LFUN_RXOR))
-
{
-
int
args
= 2;
-
SIMPLE_ARG_TYPE_ERROR("
`^",
1
,
"type"
);
-
}
-
break
;
+
PIKE_ERROR("`^",
"Bitwise
xor
on
objects
without
`^
operator.\n
",
sp
,
2
);
+
return
;
case T_INT: sp--; SET_SVAL(sp[-1], T_INT, NUMBER_NUMBER, integer, sp[-1].u.integer ^ sp[0].u.integer);
-
break
;
+
return
;
case T_MAPPING: {
3700:
} default: do_lfun_multiply:
-
if(call_lfun(LFUN_MULTIPLY, LFUN_RMULTIPLY))
+
if(
!
call_lfun(LFUN_MULTIPLY, LFUN_RMULTIPLY))
+
PIKE_ERROR("`*", "Multiplication on objects without `* operator.\n", sp, 2);
return;
-
-
PIKE_ERROR("`*", "Bad arguments.\n", sp, 2);
+
} }
4058:
switch(TYPEOF(sp[-2])) { case T_OBJECT:
-
call_lfun(LFUN_DIVIDE,LFUN_RDIVIDE);
+
if(!
call_lfun(LFUN_DIVIDE,LFUN_RDIVIDE)
)
+
PIKE_ERROR("`/", "Division on objects without `/ operator.\n", sp, 2)
;
return; case T_STRING: