@@ -372,12 +372,20 @@ Statement = Transformer {
372372 slice = [ item for item in * chain[ 3 , ]]
373373 new_chain = { " chain" , parent_cls_name}
374374
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}
375+ head = slice[ 1 ]
376+ switch head[ 1 ]
377+ -- calling super, inject calling name and self into chain
378+ when " call"
379+ calling_name = block\ get" current_block"
380+ slice[ 1 ] = { " call" , { " self" , unpack head[ 2 ]}}
381+ act = if ntype( calling_name) != " value" then " index" else " dot"
382+ insert new_chain, { act, calling_name}
383+
384+ -- colon call on super, replace class with self as first arg
385+ when " colon"
386+ call = head[ 3 ]
387+ insert new_chain, { " dot" , head[ 2 ]}
388+ slice[ 1 ] = { " call" , { " self" , unpack call[ 2 ] } }
381389
382390 insert new_chain, item for item in * slice
383391
0 commit comments