Do not call this method directly, use v.expr
instead
# Try to compile self as an expression
# Do not call this method directly, use `v.expr` instead
private fun expr(v: JavaCompilerVisitor): nullable RuntimeVariable do
v.info("NOT YET IMPLEMENTED {class_name}::expr")
return null
end
src/compiler/java_compiler.nit:1904,2--1909,4
redef fun expr(v) do
var res = v.new_var(self.mtype.as(not null))
var cond = v.expr_bool(self.n_expr)
v.add("if ({cond})\{")
v.assign(res, v.expr(self.n_then.as(not null), null))
v.add("\} else \{")
v.assign(res, v.expr(self.n_else.as(not null), null))
v.add("\}")
return res
end
src/compiler/java_compiler.nit:2075,2--2084,4
redef fun expr(v) do return v.null_instance
src/compiler/java_compiler.nit:2262,2--44
redef fun expr(v)
do
var frame = v.frame
assert frame != null
var recv = frame.arguments.first
var callsite = self.callsite
if callsite != null then
var args
if self.n_args.n_exprs.is_empty then
# Add automatic arguments for the super init call
args = [recv]
for i in [0..callsite.msignature.arity[ do
args.add(frame.arguments[i+1])
end
else
args = v.varargize(callsite.mpropdef, callsite.signaturemap, recv, self.n_args.n_exprs)
end
# Super init call
var res = v.compile_callsite(callsite, args)
return res
end
var mpropdef = self.mpropdef.as(not null)
var args
if self.n_args.n_exprs.is_empty then
args = frame.arguments
else
args = v.varargize(mpropdef, signaturemap, recv, self.n_args.n_exprs)
end
# Standard call-next-method
return v.supercall(mpropdef, recv.mtype.as(MClassType), args)
end
src/compiler/java_compiler.nit:1967,2--2003,4
redef fun expr(v)
do
var mtype = self.recvtype
assert mtype != null
if mtype.mclass.name == "NativeArray" then
# TODO handle native arrays
v.info("NOT YET IMPLEMENTED new NativeArray")
end
var recv = v.init_instance(mtype)
var callsite = self.callsite
if callsite == null then return recv
var args = v.varargize(callsite.mpropdef, callsite.signaturemap, recv, self.n_args.n_exprs)
var res2 = v.compile_callsite(callsite, args)
if res2 != null then
return res2
end
return recv
end
src/compiler/java_compiler.nit:1942,2--1963,4
redef fun expr(v) do return v.bool_instance(true)
src/compiler/java_compiler.nit:2254,2--50
redef fun expr(v) do return v.bool_instance(false)
src/compiler/java_compiler.nit:2258,2--51
redef fun expr(v) do
var i = v.expr(n_expr, null)
if i.mtype.is_java_primitive then return i
v.add("if ({i} == null || {i}.is_null()) \{")
v.add_abort("Cast failed")
v.add("\}")
return i
end
src/compiler/java_compiler.nit:2275,2--2283,4
redef fun expr(v)
do
var res = v.new_var(self.mtype.as(not null))
var i1 = v.expr(self.n_expr, null)
v.add("if ({i1} != null && !{i1}.is_null()) \{")
v.assign(res, i1)
v.add("\} else \{")
var i2 = v.expr(self.n_expr2, null)
v.assign(res, i2)
v.add("\}")
return res
end
src/compiler/java_compiler.nit:2183,2--2194,4