RTVal both represents object instances and primitives values:
# Compile the runtime value structure
#
# RTVal both represents object instances and primitives values:
# * object instances:
# * `rtclass` the class of the RTVal is instance of
# * `attrs` contains the attributes of the instance
# * primitive values:
# * `rtclass` represents the class of the primitive value Nit type
# * `value` contains the primitive value of the instance
# * null values:
# * they must have both `rtclass` and `value` as null
fun compile_rtval(compiler: JavaCompiler) do
var v = compiler.new_visitor("RTVal.java")
v.add("import java.util.HashMap;")
v.add("public class RTVal \{")
v.add(" public RTClass rtclass;")
v.add(" public HashMap<String, RTVal> attrs = new HashMap<>();")
v.add(" Object value;")
v.add(" public RTVal(RTClass rtclass) \{")
v.add(" this.rtclass = rtclass;")
v.add(" \}")
v.add(" public RTVal(RTClass rtclass, Object value) \{")
v.add(" this.rtclass = rtclass;")
v.add(" this.value = value;")
v.add(" \}")
v.add(" public boolean is_null() \{ return rtclass == null && value == null; \}")
v.add("\}")
end
src/compiler/java_compiler.nit:1193,2--1220,4