else if pname == "rand" then
var res = recvval.rand
return v.int_instance(res)
+ else if pname == "bin_and" then
+ return v.int_instance(args[0].to_i.bin_and(args[1].to_i))
+ else if pname == "bin_or" then
+ return v.int_instance(args[0].to_i.bin_or(args[1].to_i))
+ else if pname == "bin_xor" then
+ return v.int_instance(args[0].to_i.bin_xor(args[1].to_i))
else if pname == "native_int_to_s" then
return v.native_string_instance(recvval.to_s)
else if pname == "strerror_ext" then
return v.bool_instance(args[0].to_f.is_inf != 0)
end
else if cname == "NativeString" then
+ if pname == "init" then
+ return v.native_string_instance("!" * args[1].to_i)
+ end
var recvval = args.first.val.as(Buffer)
if pname == "[]" then
var arg1 = args[1].to_i
else if pname == "calloc_string" then
return v.native_string_instance("!" * args[1].to_i)
else if cname == "NativeArray" then
+ if pname == "init" then
+ var val = new Array[Instance].filled_with(v.null_instance, args[1].to_i)
+ return new PrimitiveInstance[Array[Instance]](args[0].mtype, val)
+ end
var recvval = args.first.val.as(Array[Instance])
if pname == "[]" then
if args[1].to_i >= recvval.length or args[1].to_i < 0 then
do
var super_inits = self.super_inits
if super_inits != null then
- assert args.length == 1
+ var args_of_super = args
+ if args.length > 1 then args_of_super = [args.first]
for su in super_inits do
- v.send(su, args)
+ v.send(su, args_of_super)
end
- return null
end
var recv = args.first
assert recv isa MutableInstance
var recv = v.expr(self.n_expr)
if recv == null then return null
var args = [recv]
- for a in self.raw_arguments.as(not null) do
+ for a in self.raw_arguments do
var i = v.expr(a)
if i == null then return null
args.add(i)
var recv = v.expr(self.n_expr)
if recv == null then return
var args = [recv]
- for a in self.raw_arguments.as(not null) do
+ for a in self.raw_arguments do
var i = v.expr(a)
if i == null then return
args.add(i)
if callsite != null then
# Add additionnals arguments for the super init call
if args.length == 1 then
- for i in [0..callsite.mproperty.intro.msignature.arity[ do
+ for i in [0..callsite.msignature.arity[ do
args.add(v.frame.arguments[i+1])
end
end