src: Compiler and interpreter updates for NativeString
authorLucas Bajolet <r4pass@hotmail.com>
Wed, 8 Jul 2015 20:46:06 +0000 (16:46 -0400)
committerLucas Bajolet <r4pass@hotmail.com>
Thu, 9 Jul 2015 15:45:40 +0000 (11:45 -0400)
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

src/compiler/abstract_compiler.nit
src/interpreter/naive_interpreter.nit

index 605788a..9601c1d 100644 (file)
@@ -2332,7 +2332,7 @@ redef class AMethPropdef
                        end
                else if cname == "NativeString" then
                        if pname == "[]" then
-                               v.ret(v.new_expr("(uint32_t)(unsigned char){arguments[0]}[{arguments[1]}]", ret.as(not null)))
+                               v.ret(v.new_expr("(unsigned char)((int){arguments[0]}[{arguments[1]}])", ret.as(not null)))
                                return true
                        else if pname == "[]=" then
                                v.add("{arguments[0]}[{arguments[1]}]=(unsigned char){arguments[2]};")
index c146d11..78bd4e2 100644 (file)
@@ -277,7 +277,7 @@ class NaiveInterpreter
        do
                var instance = native_string_instance_len(txt.length+1)
                var val = instance.val
-               val[txt.length] = '\0'
+               val[txt.length] = 0u8
                txt.to_cstring.copy_to(val, txt.length, 0, 0)
 
                return instance
@@ -1041,10 +1041,10 @@ redef class AMethPropdef
                        var recvval = args.first.val.as(NativeString)
                        if pname == "[]" then
                                var arg1 = args[1].to_i
-                               return v.char_instance(recvval[arg1])
+                               return v.byte_instance(recvval[arg1])
                        else if pname == "[]=" then
                                var arg1 = args[1].to_i
-                               recvval[arg1] = args[2].val.as(Char)
+                               recvval[arg1] = args[2].val.as(Byte)
                                return null
                        else if pname == "copy_to" then
                                # sig= copy_to(dest: NativeString, length: Int, from: Int, to: Int)