Skip to content

Commit 08632eb

Browse files
committed
convert to blockfunc
1 parent ad38403 commit 08632eb

File tree

1 file changed

+52
-80
lines changed

1 file changed

+52
-80
lines changed

cmd/qdiimpl.go

Lines changed: 52 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -310,96 +310,68 @@ func gen(outputName string, obj types.Object, iface *types.Interface) error {
310310
sigParam := sig.Results().At(k)
311311
rgroup.Id(sigParam.Name()).Add(util.GetQualCode(sigParam.Type()))
312312
}
313-
}).Block(
314-
Do(func(s *Statement) {
315-
s.Add(Const().Id("methodName").Op("=").Lit(mtd.Name()))
316-
s.Line()
317-
318-
s.Add(For(List(Id("_"), Id("impl")).Op(":=").Range().Id("d").Dot("impl" + mtd.Name())).
319-
BlockFunc(func(fgroup *Group) {
320-
fgroup.Id("qctx").Op(":=").Id("d").Dot("createContext").Call(Id("methodName"))
321-
322-
call := Id("impl").CallFunc(func(cgroup *Group) {
323-
cgroup.Id("qctx")
324-
for k := 0; k < sig.Params().Len(); k++ {
325-
sigParam := sig.Params().At(k)
326-
cgroup.Id(util.ParamName(k, sigParam))
327-
}
328-
})
313+
}).BlockFunc(func(s *Group) {
314+
s.Add(Const().Id("methodName").Op("=").Lit(mtd.Name()))
315+
s.Line()
329316

330-
if sig.Results().Len() == 0 {
331-
fgroup.Add(call)
332-
} else {
333-
fgroup.Add(ListFunc(func(fgroup *Group) {
334-
for k := 0; k < sig.Results().Len(); k++ {
335-
fgroup.Id(fmt.Sprintf("r%d", k))
336-
}
337-
}).Op(":=").Add(call))
338-
}
317+
s.Add(For(List(Id("_"), Id("impl")).Op(":=").Range().Id("d").Dot("impl" + mtd.Name())).
318+
BlockFunc(func(fgroup *Group) {
319+
fgroup.Id("qctx").Op(":=").Id("d").Dot("createContext").Call(Id("methodName"))
339320

340-
// fgroup.ListFunc(func(fgroup *Group) {
341-
// for k := 0; k < sig.Results().Len(); k++ {
342-
// fgroup.Id(fmt.Sprintf("r%d", k))
343-
// }
344-
// }).Op(":=").CallFunc(func(cgroup *Group) {
345-
// cgroup.Id("qctx")
346-
// for k := 0; k < sig.Params().Len(); k++ {
347-
// sigParam := sig.Params().At(k)
348-
// cgroup.Id(util.ParamName(k, sigParam))
349-
// }
350-
// })
351-
fgroup.If(Op("!").Id("qctx").Dot("isNotSupported")).
352-
BlockFunc(func(rgroup *Group) {
353-
rgroup.Id("d").Dot("addCallMethod").Call(Id("methodName"))
354-
rgroup.ReturnFunc(func(retgroup *Group) {
355-
if sig.Results().Len() == 0 {
356-
return
357-
}
358-
retgroup.ListFunc(func(retlgroup *Group) {
359-
for k := 0; k < sig.Results().Len(); k++ {
360-
retlgroup.Id(fmt.Sprintf("r%d", k))
361-
}
362-
})
363-
})
364-
})
365-
}))
366-
367-
s.Line()
368-
s.Add(If(Id("d").Dot(fallbackParamName).Op("!=").Nil()).BlockFunc(func(bgroup *Group) {
369-
icall := Id("d").Dot(fallbackParamName).Dot(mtd.Name()).CallFunc(func(igroup *Group) {
321+
call := Id("impl").CallFunc(func(cgroup *Group) {
322+
cgroup.Id("qctx")
370323
for k := 0; k < sig.Params().Len(); k++ {
371324
sigParam := sig.Params().At(k)
372-
igroup.Id(util.ParamName(k, sigParam))
325+
cgroup.Id(util.ParamName(k, sigParam))
373326
}
374327
})
328+
375329
if sig.Results().Len() == 0 {
376-
bgroup.Add(icall)
377-
bgroup.Return()
330+
fgroup.Add(call)
378331
} else {
379-
bgroup.Add(Return(icall))
332+
fgroup.Add(ListFunc(func(fgroup *Group) {
333+
for k := 0; k < sig.Results().Len(); k++ {
334+
fgroup.Id(fmt.Sprintf("r%d", k))
335+
}
336+
}).Op(":=").Add(call))
380337
}
338+
339+
fgroup.If(Op("!").Id("qctx").Dot("isNotSupported")).
340+
BlockFunc(func(rgroup *Group) {
341+
rgroup.Id("d").Dot("addCallMethod").Call(Id("methodName"))
342+
rgroup.ReturnFunc(func(retgroup *Group) {
343+
if sig.Results().Len() == 0 {
344+
return
345+
}
346+
retgroup.ListFunc(func(retlgroup *Group) {
347+
for k := 0; k < sig.Results().Len(); k++ {
348+
retlgroup.Id(fmt.Sprintf("r%d", k))
349+
}
350+
})
351+
})
352+
})
381353
}))
382-
s.Line()
383-
384-
s.Add(Panic(Qual("fmt", "Errorf").
385-
Call(Lit(fmt.Sprintf("[%s] method '%%s' not implemented", objName)), Id("methodName"))))
386-
387-
// call := Id("d").Dot("impl" + mtd.Name()).CallFunc(func(cgroup *Group) {
388-
// cgroup.Id("d").Dot("createContext").Call(
389-
// Lit(mtd.Name()), Id("d").Dot("impl"+mtd.Name()).Op("==").Nil(),
390-
// )
391-
// for k := 0; k < sig.Params().Len(); k++ {
392-
// sigParam := sig.Params().At(k)
393-
// cgroup.Id(util.ParamName(k, sigParam))
394-
// }
395-
// })
396-
// if sig.Results().Len() == 0 {
397-
// s.Add(call)
398-
// } else {
399-
// s.Add(Return(call))
400-
// }
401-
}),
402-
)
354+
355+
s.Line()
356+
s.Add(If(Id("d").Dot(fallbackParamName).Op("!=").Nil()).BlockFunc(func(bgroup *Group) {
357+
icall := Id("d").Dot(fallbackParamName).Dot(mtd.Name()).CallFunc(func(igroup *Group) {
358+
for k := 0; k < sig.Params().Len(); k++ {
359+
sigParam := sig.Params().At(k)
360+
igroup.Id(util.ParamName(k, sigParam))
361+
}
362+
})
363+
if sig.Results().Len() == 0 {
364+
bgroup.Add(icall)
365+
bgroup.Return()
366+
} else {
367+
bgroup.Add(Return(icall))
368+
}
369+
}))
370+
s.Line()
371+
372+
s.Add(Panic(Qual("fmt", "Errorf").
373+
Call(Lit(fmt.Sprintf("[%s] method '%%s' not implemented", objName)), Id("methodName"))))
374+
})
403375
}
404376

405377
// helper methods

0 commit comments

Comments
 (0)