in lib/generator.js [756:788]
visitInit(ast, level) {
const env = {
local: new Map(),
funcName: 'NewClient'
};
assert.equal(ast.type, 'init');
this.visitAnnotation(ast.annotation, level);
let comments = DSL.comment.getFrontComments(this.comments, ast.tokenRange[0]);
this.visitComments(comments, level);
this.emit(`func NewClient`, level);
this.visitParams(ast.params, level, env);
this.emit(`(*${this.structName}, error) {\n`);
this.emit(`client := new(${this.structName})\n`, level + 1);
this.emit(`err := client.Init(`, level + 1);
for (let i = 0; i < ast.params.params.length; i++) {
const param = ast.params.params[i];
this.emit(`${_name(param.paramName)}`);
if (i < ast.params.params.length - 1) {
this.emit(`, `);
}
}
this.emit(`)\n`);
this.emit(`return client, err\n`, level + 1);
this.emit(`}\n\n`, level);
this.emit(`func (client *${this.structName})Init`, level);
this.visitParams(ast.params, level, env);
this.emit(`(_err error) {\n`);
if (ast.initBody && ast.initBody.stmts && ast.initBody.stmts.length > 0) {
this.visitStmts(ast.initBody, level + 1, env);
}
this.emit(`return nil\n`, level + 1);
this.emit(`}\n\n`, level);
}