From: Daniel Kolesa Date: Thu, 5 Jun 2014 09:23:42 +0000 (+0100) Subject: elua: propagate property definitions down the inheritance hierarchy X-Git-Tag: upstream/1.10.0+1149+ga3a15b1~644^2~25 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5ee0d530ca90e259119fadb74985c9912edae1c5;p=platform%2Fupstream%2Fefl.git elua: propagate property definitions down the inheritance hierarchy --- diff --git a/src/bin/elua/modules/lualian.lua b/src/bin/elua/modules/lualian.lua index fc8a451..3874c11 100644 --- a/src/bin/elua/modules/lualian.lua +++ b/src/bin/elua/modules/lualian.lua @@ -372,12 +372,18 @@ local Constructor = Method:clone { local name = proto.name local defctor = name == "constructor" table.insert(proto.args, 2, "parent") - s:write( " ", defctor and "__ctor" or name, " = function(", + + s:write(" __define_properties = function(self, proto)\n") + self.parent_node:gen_ctor(s) + s:write(" proto.__define_properties(self, proto.__proto)\n") + s:write(" end,\n\n") + + s:write(" ", defctor and "__ctor" or name, " = function(", table.concat(proto.args, ", "), ")\n") if not defctor then s:write(" self = self:clone()\n") end - self.parent_node:gen_ctor(s) + s:write(" self:__define_properties(self.__proto.__proto)\n") for i, v in ipairs(proto.allocs) do s:write(" local ", v[2], " = ffi.new(\"", v[1], "[1]\")\n") end @@ -397,8 +403,13 @@ local Constructor = Method:clone { local Default_Constructor = Node:clone { generate = function(self, s, last) - s:write( " __ctor = function(self, parent)\n") + s:write(" __define_properties = function(self, proto)\n") self.parent_node:gen_ctor(s) + s:write(" proto.__define_properties(self, proto.__proto)\n") + s:write(" end,\n\n") + + s:write( " __ctor = function(self, parent)\n") + s:write(" self:__define_properties(self.__proto.__proto)\n") s:write(" self:__ctor_common(__lib.", self.parent_node.prefix, "_class_get(), parent)\n") s:write(" end", last and "" or ",", last and "\n" or "\n\n")