From 8e588ce087466eefb9eab37e038942c31631d332 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Mon, 21 Jul 2014 16:19:15 -0400 Subject: [PATCH] niti: implements lazy in the getter using isset Signed-off-by: Jean Privat --- src/naive_interpreter.nit | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/naive_interpreter.nit b/src/naive_interpreter.nit index 431d02b..138c7e2 100644 --- a/src/naive_interpreter.nit +++ b/src/naive_interpreter.nit @@ -991,7 +991,8 @@ redef class AAttrPropdef var attr = self.mpropdef.mproperty if mpropdef == mreadpropdef then assert args.length == 1 - return v.read_attribute(attr, recv) + if not is_lazy or v.isset_attribute(attr, recv) then return v.read_attribute(attr, recv) + return evaluate_expr(v, recv) else if mpropdef == mwritepropdef then assert args.length == 2 v.write_attribute(attr, recv, args[1]) @@ -1004,6 +1005,7 @@ redef class AAttrPropdef # Evaluate and set the default value of the attribute in `recv` private fun init_expr(v: NaiveInterpreter, recv: Instance) do + if is_lazy then return var nexpr = self.n_expr if nexpr != null then evaluate_expr(v, recv) -- 1.7.9.5