@@ -368,13 +368,22 @@ Statement = Transformer {
368368 value = . block_exp {
369369 Run =>
370370 @set " super" , ( block, chain) ->
371- calling_name = block\ get" current_block"
372- slice = [ item for item in * chain[ 3 , ]]
373- -- inject self
374- slice[ 1 ] = { " call" , { " self" , unpack slice[ 1 ][ 2 ]}}
375-
376- act = if ntype( calling_name) != " value" then " index" else " dot"
377- { " chain" , parent_cls_name, { act, calling_name} , unpack slice}
371+ if chain
372+ slice = [ item for item in * chain[ 3 , ]]
373+ new_chain = { " chain" , parent_cls_name}
374+
375+ -- calling super, inject calling name and self into chain
376+ if slice[ 1 ][ 1 ] == " call"
377+ calling_name = block\ get" current_block"
378+ slice[ 1 ] = { " call" , { " self" , unpack slice[ 1 ][ 2 ]}}
379+ act = if ntype( calling_name) != " value" then " index" else " dot"
380+ insert new_chain, { act, calling_name}
381+
382+ insert new_chain, item for item in * slice
383+
384+ new_chain
385+ else
386+ parent_cls_name
378387
379388 . assign_one parent_cls_name, parent_val == " " and " nil" or parent_val
380389 . assign_one base_name, tbl
0 commit comments