elua: multiple inheritance aware is_a
authorDaniel Kolesa <d.kolesa@samsung.com>
Wed, 25 Feb 2015 15:16:35 +0000 (15:16 +0000)
committerDaniel Kolesa <d.kolesa@samsung.com>
Wed, 25 Feb 2015 15:16:35 +0000 (15:16 +0000)
src/scripts/elua/core/util.lua

index 5333899..e6d59f4 100644 (file)
@@ -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)