From 8cd0011c0e1f2bcfd8d20f590230d0ac3d414fb1 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Wed, 10 Jul 2019 09:56:38 -0400 Subject: [PATCH] interpreter: add `Instance::is_null` to simplify code Signed-off-by: Jean Privat --- src/interpreter/naive_interpreter.nit | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/interpreter/naive_interpreter.nit b/src/interpreter/naive_interpreter.nit index 799c413..7b2515f 100644 --- a/src/interpreter/naive_interpreter.nit +++ b/src/interpreter/naive_interpreter.nit @@ -721,6 +721,10 @@ abstract class Instance # Abort if the instance is not a boolean value. fun is_true: Bool do abort + # Return `true` if the instance is null. + # Return `false` otherwise. + fun is_null: Bool do return mtype isa MNullType + # Return true if `self` IS `o` (using the Nit semantic of is) fun eq_is(o: Instance): Bool do return self.is_same_instance(o) @@ -1529,7 +1533,7 @@ redef class AAttrPropdef else if mpropdef == mwritepropdef then assert args.length == 2 var arg = args[1] - if is_optional and arg.mtype isa MNullType then + if is_optional and arg.is_null then var f = v.new_frame(self, mpropdef, args) arg = evaluate_expr(v, recv, f) end @@ -1824,7 +1828,7 @@ redef class AForExpr for g in n_groups do var col = v.expr(g.n_expr) if col == null then return - if col.mtype isa MNullType then fatal(v, "Receiver is null") + if col.is_null then fatal(v, "Receiver is null") var iter = v.callsite(g.method_iterator, [col]).as(not null) iters.add iter @@ -2185,7 +2189,7 @@ redef class AAsNotnullExpr do var i = v.expr(self.n_expr) if i == null then return null - if i.mtype isa MNullType then + if i.is_null then fatal(v, "Cast failed") end return i @@ -2314,7 +2318,7 @@ redef class AAttrExpr do var recv = v.expr(self.n_expr) if recv == null then return null - if recv.mtype isa MNullType then fatal(v, "Receiver is null") + if recv.is_null then fatal(v, "Receiver is null") var mproperty = self.mproperty.as(not null) return v.read_attribute(mproperty, recv) end @@ -2325,7 +2329,7 @@ redef class AAttrAssignExpr do var recv = v.expr(self.n_expr) if recv == null then return - if recv.mtype isa MNullType then fatal(v, "Receiver is null") + if recv.is_null then fatal(v, "Receiver is null") var i = v.expr(self.n_value) if i == null then return var mproperty = self.mproperty.as(not null) @@ -2338,7 +2342,7 @@ redef class AAttrReassignExpr do var recv = v.expr(self.n_expr) if recv == null then return - if recv.mtype isa MNullType then fatal(v, "Receiver is null") + if recv.is_null then fatal(v, "Receiver is null") var value = v.expr(self.n_value) if value == null then return var mproperty = self.mproperty.as(not null) @@ -2354,7 +2358,7 @@ redef class AIssetAttrExpr do var recv = v.expr(self.n_expr) if recv == null then return null - if recv.mtype isa MNullType then fatal(v, "Receiver is null") + if recv.is_null then fatal(v, "Receiver is null") var mproperty = self.mproperty.as(not null) return v.bool_instance(v.isset_attribute(mproperty, recv)) end -- 1.7.9.5