From aa9a36812078f9ed2600e1c5b068e79532b13b61 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Mon, 21 Jul 2014 16:17:43 -0400 Subject: [PATCH] niti: extract attribute expr evaluation in its own method Signed-off-by: Jean Privat --- src/naive_interpreter.nit | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/naive_interpreter.nit b/src/naive_interpreter.nit index 6e35845..431d02b 100644 --- a/src/naive_interpreter.nit +++ b/src/naive_interpreter.nit @@ -1004,16 +1004,9 @@ redef class AAttrPropdef # Evaluate and set the default value of the attribute in `recv` private fun init_expr(v: NaiveInterpreter, recv: Instance) do - assert recv isa MutableInstance var nexpr = self.n_expr if nexpr != null then - var f = new Frame(self, self.mpropdef.as(not null), [recv]) - v.frames.unshift(f) - var val = v.expr(nexpr) - assert val != null - v.frames.shift - assert not v.is_escaping - v.write_attribute(self.mpropdef.mproperty, recv, val) + evaluate_expr(v, recv) return end var mtype = self.mpropdef.static_mtype.as(not null) @@ -1022,6 +1015,21 @@ redef class AAttrPropdef v.write_attribute(self.mpropdef.mproperty, recv, v.null_instance) end end + + private fun evaluate_expr(v: NaiveInterpreter, recv: Instance): Instance + do + assert recv isa MutableInstance + var nexpr = self.n_expr + assert nexpr != null + var f = new Frame(self, self.mpropdef.as(not null), [recv]) + v.frames.unshift(f) + var val = v.expr(nexpr) + assert val != null + v.frames.shift + assert not v.is_escaping + v.write_attribute(self.mpropdef.mproperty, recv, val) + return val + end end redef class AClassdef -- 1.7.9.5