nitc :: AAttrPropdef :: evaluate_expr
# Evaluate, store and return the default value of the attribute
private fun evaluate_expr(v: JavaCompilerVisitor, recv: RuntimeVariable): RuntimeVariable do
var old = v.frame
var frame = new JavaStaticFrame(v, self.mreadpropdef.as(not null), recv.mcasttype.undecorate.as(MClassType), [recv])
v.frame = frame
var value
var mtype = self.mtype
assert mtype != null
var nexpr = self.n_expr
var nblock = self.n_block
if nexpr != null then
value = v.expr(nexpr, mtype)
else if nblock != null then
value = v.new_var(mtype)
frame.returnvar = value
frame.returnlabel = v.get_name("RET_LABEL")
v.add("{frame.returnlabel.as(not null)}: \{")
v.stmt(nblock)
v.add("\}")
else
abort
end
v.write_attribute(self.mpropdef.as(not null).mproperty, recv, value)
v.frame = old
return value
end
src/compiler/java_compiler.nit:1872,2--1900,4