else if pname == "unary -" then
v.ret(v.new_expr("-{arguments[0]}", ret.as(not null)))
return true
+ else if pname == "unary +" then
+ v.ret(arguments[0])
+ return true
else if pname == "*" then
v.ret(v.new_expr("{arguments[0]} * {arguments[1]}", ret.as(not null)))
return true
else if pname == "unary -" then
v.ret(v.new_expr("-{arguments[0]}", ret.as(not null)))
return true
+ else if pname == "unary +" then
+ v.ret(arguments[0])
+ return true
else if pname == "succ" then
v.ret(v.new_expr("{arguments[0]}+1", ret.as(not null)))
return true
var recvval = args[0].to_i
if pname == "unary -" then
return v.int_instance(-args[0].to_i)
+ else if pname == "unary +" then
+ return args[0]
else if pname == "+" then
return v.int_instance(args[0].to_i + args[1].to_i)
else if pname == "-" then
var recv = args[0].to_f
if pname == "unary -" then
return v.float_instance(-recv)
+ else if pname == "unary +" then
+ return args[0]
else if pname == "+" then
return v.float_instance(recv + args[1].to_f)
else if pname == "-" then
name = amethodid.collect_text
name_node = amethodid
+ if name == "+" and self.n_signature.n_params.length == 0 then
+ name = "unary +"
+ end
if name == "-" and self.n_signature.n_params.length == 0 then
name = "unary -"
end
if nit_name == "+" then return "_plus"
if nit_name == "-" then return "_minus"
if nit_name == "unary -" then return "_unary_minus"
+ if nit_name == "unary +" then return "_unary_plus"
if nit_name == "*" then return "_star"
if nit_name == "/" then return "_slash"
if nit_name == "%" then return "_percent"
redef fun property_name do return "%"
end
+redef class AUplusExpr
+ redef fun property_name do return "unary +"
+ redef fun compute_raw_arguments do return new Array[AExpr]
+end
+
redef class AUminusExpr
redef fun property_name do return "unary -"
redef fun compute_raw_arguments do return new Array[AExpr]