Merge: sorter: add some sorters
[nit.git] / src / naive_interpreter.nit
index a423c53..3df0cce 100644 (file)
@@ -572,11 +572,11 @@ redef class ANode
        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
@@ -796,6 +796,8 @@ redef class AInternMethPropdef
                        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
@@ -831,11 +833,11 @@ redef class AExternInitPropdef
                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))
@@ -878,6 +880,8 @@ redef class AExternMethPropdef
                        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)
@@ -958,6 +962,8 @@ redef class AExternMethPropdef
                        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