From: Daniel Kolesa Date: Wed, 25 Feb 2015 15:16:35 +0000 (+0000) Subject: elua: multiple inheritance aware is_a X-Git-Tag: v1.14.0-alpha1~388 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1e83761810e337eac94bb94f39053f511b0a1083;p=platform%2Fupstream%2Fefl.git elua: multiple inheritance aware is_a --- diff --git a/src/scripts/elua/core/util.lua b/src/scripts/elua/core/util.lua index 5333899..e6d59f4 100644 --- a/src/scripts/elua/core/util.lua +++ b/src/scripts/elua/core/util.lua @@ -52,13 +52,13 @@ M.Object = { is_a = function(self, base) if self == base then return true end - local pt = self.__proto - local is = (pt == base) - while not is and pt do - pt = pt.__proto - is = (pt == base) + local protos = self.__protos + for i = 1, #protos do + if protos[i]:is_a(base) then + return true + end end - return is + return false end, add_parent = function(self, parent)