From b51880eda3330067010c39015be47667c30a6926 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Tue, 3 Feb 2015 20:54:44 +0700 Subject: [PATCH] model: move guards `lookup_first_definition` after cache miss Signed-off-by: Jean Privat --- src/model/model.nit | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/model/model.nit b/src/model/model.nit index ff12710..677ac69 100644 --- a/src/model/model.nit +++ b/src/model/model.nit @@ -1905,7 +1905,6 @@ abstract class MProperty # REQUIRE: `mtype.has_mproperty(mmodule, self)` fun lookup_first_definition(mmodule: MModule, mtype: MType): MPROPDEF do - assert mtype.has_mproperty(mmodule, self) return lookup_all_definitions(mmodule, mtype).first end @@ -1913,12 +1912,14 @@ abstract class MProperty # Most specific first, most general last fun lookup_all_definitions(mmodule: MModule, mtype: MType): Array[MPROPDEF] do - assert not mtype.need_anchor mtype = mtype.as_notnullable var cache = self.lookup_all_definitions_cache[mmodule, mtype] if cache != null then return cache + assert not mtype.need_anchor + assert mtype.has_mproperty(mmodule, self) + #print "select prop {mproperty} for {mtype} in {self}" # First, select all candidates var candidates = new Array[MPROPDEF] -- 1.7.9.5