class RoutineTemplate
var classkind: String
var classname: String
var nb_generics: Int
var supers: Array[String]
var has_return: Bool
var is_redef = false
var annotation = "is abstract"
fun callparams: Array[String]
do
var generics = gen_generics(nb_generics)
var params = new Array[String]
for g in generics do
if is_redef then
params.push(g.to_lower)
else
params.push(g.to_lower + ": " + g)
end
end
return params
end
fun classparams: Array[String]
do
var res = gen_generics(nb_generics)
if has_return then res.add("RESULT")
return res
end
redef fun to_s
do
var signature = ""
var callparams = self.callparams
var classparams = self.classparams
if callparams.length > 0 then signature = "({callparams.join(",")})"
if has_return then signature += ": RESULT"
var classdecl = "{classkind} {classname}"
if classparams.length > 0 then classdecl += "[{classparams.join(",")}]"
var superdecls = new Array[String]
for s in supers do superdecls.add("\tsuper {s}")
var classdef = new Array[String]
var redefkw = ""
if is_redef then redefkw = "redef "
classdef.add("{classdecl}")
classdef.add("{superdecls.join("\n")}")
classdef.add("\t{redefkw}fun call{signature} {annotation}")
classdef.add("end")
return classdef.join("\n")
end
end
lib/functional/functional_gen.nit:31,1--83,3