private fun fatal(v: NaiveInterpreter, message: String)
do
if v.modelbuilder.toolcontext.opt_no_color.value == true then
- stderr.write("Runtime error: {message} ({location.file.filename}:{location.line_start})\n")
+ sys.stderr.write("Runtime error: {message} ({location.file.filename}:{location.line_start})\n")
else
- stderr.write("{location}: Runtime error: {message}\n{location.colored_line("0;31")}\n")
- stderr.write(v.stack_trace)
- stderr.write("\n")
+ sys.stderr.write("{location}: Runtime error: {message}\n{location.colored_line("0;31")}\n")
+ sys.stderr.write(v.stack_trace)
+ sys.stderr.write("\n")
end
exit(1)
end
else if pname == "[]=" then
recvval[args[1].to_i] = args[2]
return null
+ else if pname == "length" then
+ return v.int_instance(recvval.length)
else if pname == "copy_to" then
recvval.copy(0, args[2].to_i, args[1].val.as(Array[Instance]), 0)
return null
var pname = mpropdef.mproperty.name
var cname = mpropdef.mclassdef.mclass.name
if pname == "native_stdout" then
- return new PrimitiveInstance[OStream](mpropdef.mclassdef.mclass.mclass_type, stdout)
+ return new PrimitiveInstance[OStream](mpropdef.mclassdef.mclass.mclass_type, sys.stdout)
else if pname == "native_stdin" then
- return new PrimitiveInstance[IStream](mpropdef.mclassdef.mclass.mclass_type, stdin)
+ return new PrimitiveInstance[IStream](mpropdef.mclassdef.mclass.mclass_type, sys.stdin)
else if pname == "native_stderr" then
- return new PrimitiveInstance[OStream](mpropdef.mclassdef.mclass.mclass_type, stderr)
+ return new PrimitiveInstance[OStream](mpropdef.mclassdef.mclass.mclass_type, sys.stderr)
else if pname == "io_open_read" then
var a1 = args[1].val.as(Buffer)
return new PrimitiveInstance[IStream](mpropdef.mclassdef.mclass.mclass_type, new IFStream.open(a1.to_s))
else if pname == "io_close" then
recvval.as(IOS).close
return v.int_instance(0)
+ else if pname == "address_is_null" then
+ return v.false_instance
end
else if cname == "NativeString" then
var recvval = args.first.val.as(Buffer)
return v.native_string_instance(getcwd)
else if pname == "errno" then
return v.int_instance(sys.errno)
+ else if pname == "address_is_null" then
+ return v.false_instance
end
fatal(v, "NOT YET IMPLEMENTED extern {mpropdef}")
abort