nitc: adaptive typing apply non-nullness when fallbacking
[nit.git] / src / compiler / abstract_compiler.nit
index 8bdfdee..5a0b684 100644 (file)
@@ -410,6 +410,9 @@ ifeq ($(uname_S),MINGW64_NT-10.0)
 
        # Remove POSIX flag -lrt
        LDLIBS := $(filter-out -lrt,$(LDLIBS))
+
+       # Silence warnings when storing Int, Char and Bool as pointer address
+       CFLAGS += -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
 endif
 
 """
@@ -1621,7 +1624,7 @@ abstract class AbstractCompilerVisitor
        fun int8_instance(value: Int8): RuntimeVariable
        do
                var t = mmodule.int8_type
-               var res = new RuntimeVariable("((int8_t){value.to_s})", t, t)
+               var res = new RuntimeVariable("INT8_C({value.to_s})", t, t)
                return res
        end
 
@@ -1629,7 +1632,7 @@ abstract class AbstractCompilerVisitor
        fun int16_instance(value: Int16): RuntimeVariable
        do
                var t = mmodule.int16_type
-               var res = new RuntimeVariable("((int16_t){value.to_s})", t, t)
+               var res = new RuntimeVariable("INT16_C({value.to_s})", t, t)
                return res
        end
 
@@ -1637,7 +1640,7 @@ abstract class AbstractCompilerVisitor
        fun uint16_instance(value: UInt16): RuntimeVariable
        do
                var t = mmodule.uint16_type
-               var res = new RuntimeVariable("((uint16_t){value.to_s})", t, t)
+               var res = new RuntimeVariable("UINT16_C({value.to_s})", t, t)
                return res
        end
 
@@ -1645,7 +1648,7 @@ abstract class AbstractCompilerVisitor
        fun int32_instance(value: Int32): RuntimeVariable
        do
                var t = mmodule.int32_type
-               var res = new RuntimeVariable("((int32_t){value.to_s})", t, t)
+               var res = new RuntimeVariable("INT32_C({value.to_s})", t, t)
                return res
        end
 
@@ -1653,7 +1656,7 @@ abstract class AbstractCompilerVisitor
        fun uint32_instance(value: UInt32): RuntimeVariable
        do
                var t = mmodule.uint32_type
-               var res = new RuntimeVariable("((uint32_t){value.to_s})", t, t)
+               var res = new RuntimeVariable("UINT32_C({value.to_s})", t, t)
                return res
        end
 
@@ -2623,10 +2626,10 @@ redef class AMethPropdef
                                v.ret(v.new_expr("(char*){alloc}", ret.as(not null)))
                                return true
                        else if pname == "fetch_4_chars" then
-                               v.ret(v.new_expr("(long)*((uint32_t*)({arguments[0]} + {arguments[1]}))", ret.as(not null)))
+                               v.ret(v.new_expr("*((uint32_t*)({arguments[0]} + {arguments[1]}))", ret.as(not null)))
                                return true
                        else if pname == "fetch_4_hchars" then
-                               v.ret(v.new_expr("(long)be32toh(*((uint32_t*)({arguments[0]} + {arguments[1]})))", ret.as(not null)))
+                               v.ret(v.new_expr("(uint32_t)be32toh(*((uint32_t*)({arguments[0]} + {arguments[1]})))", ret.as(not null)))
                                return true
                        end
                else if cname == "NativeArray" then
@@ -3068,7 +3071,7 @@ redef class AMethPropdef
                        end
                end
                if pname == "exit" then
-                       v.add("exit({arguments[1]});")
+                       v.add("exit((int){arguments[1]});")
                        return true
                else if pname == "sys" then
                        v.ret(v.new_expr("glob_sys", ret.as(not null)))