don't alter class constructor at all

This commit is contained in:
leaf corcoran 2013-01-23 17:50:36 -08:00
parent a44c5ac27f
commit af2c443807
4 changed files with 40 additions and 10 deletions

View File

@ -882,7 +882,7 @@ local Statement = Transformer({
end end
end end
end end
local constructor = nil local constructor
properties = (function() properties = (function()
local _accum_0 = { } local _accum_0 = { }
local _len_0 = 1 local _len_0 = 1
@ -914,7 +914,7 @@ local Statement = Transformer({
local base_name = NameProxy("base") local base_name = NameProxy("base")
local self_name = NameProxy("self") local self_name = NameProxy("self")
local cls_name = NameProxy("class") local cls_name = NameProxy("class")
if not constructor then if not (constructor) then
constructor = build.fndef({ constructor = build.fndef({
args = { args = {
{ {
@ -939,9 +939,6 @@ local Statement = Transformer({
}) })
} }
}) })
else
smart_node(constructor)
constructor.arrow = "fat"
end end
local real_name = name or parent_assign and parent_assign[2][1] local real_name = name or parent_assign and parent_assign[2][1]
local _exp_0 = ntype(real_name) local _exp_0 = ntype(real_name)

View File

@ -482,7 +482,7 @@ Statement = Transformer {
insert properties, tuple insert properties, tuple
-- find constructor -- find constructor
constructor = nil local constructor
properties = for tuple in *properties properties = for tuple in *properties
key = tuple[1] key = tuple[1]
if key[1] == "key_literal" and key[2] == constructor_name if key[1] == "key_literal" and key[2] == constructor_name
@ -496,7 +496,7 @@ Statement = Transformer {
self_name = NameProxy "self" self_name = NameProxy "self"
cls_name = NameProxy "class" cls_name = NameProxy "class"
if not constructor unless constructor
constructor = build.fndef { constructor = build.fndef {
args: {{"..."}} args: {{"..."}}
arrow: "fat" arrow: "fat"
@ -509,9 +509,6 @@ Statement = Transformer {
} }
} }
} }
else
smart_node constructor
constructor.arrow = "fat"
real_name = name or parent_assign and parent_assign[2][1] real_name = name or parent_assign and parent_assign[2][1]
real_name = switch ntype real_name real_name = switch ntype real_name

View File

@ -172,4 +172,7 @@ class Something
-- --
class X
new: hi
nil nil

View File

@ -1030,4 +1030,37 @@ do
end end
Something = _class_0 Something = _class_0
end end
do
local _parent_0 = nil
local _base_0 = { }
_base_0.__index = _base_0
if _parent_0 then
setmetatable(_base_0, _parent_0.__base)
end
local _class_0 = setmetatable({
__init = hi,
__base = _base_0,
__name = "X",
__parent = _parent_0
}, {
__index = function(cls, name)
local val = rawget(_base_0, name)
if val == nil and _parent_0 then
return _parent_0[name]
else
return val
end
end,
__call = function(cls, ...)
local _self_0 = setmetatable({}, _base_0)
cls.__init(_self_0, ...)
return _self_0
end
})
_base_0.__class = _class_0
if _parent_0 and _parent_0.__inherited then
_parent_0.__inherited(_parent_0, _class_0)
end
X = _class_0
end
return nil return nil