in lib/generator.js [2869:2908]
visitConstructModel(ast, level, env) {
assert.equal(ast.type, 'construct_model');
let modelName = '';
this.emit('&');
if ((ast.inferred && ast.inferred.moduleName) || ast.aliasId.isModule) {
this.visitModuleName(ast.aliasId);
for (let i = 0; i < ast.propertyPath.length; i++) {
const item = ast.propertyPath[i];
modelName += _format(_name(item));
}
const externEx = this.usedExternException.get(_name(ast.aliasId));
if (externEx && externEx.has(modelName)) {
modelName += 'Error';
}
modelName = `.${modelName}`;
} else {
modelName = _modelName(_format(_name(ast.aliasId)));
if (this.predefined[modelName] && this.predefined[modelName].isException) {
modelName += 'Error';
}
}
if (ast.object && ast.object.fields.length > 0) {
const fields = ast.object.fields;
this.emit(`${modelName}{\n`);
for (let i = 0; i < fields.length; i++) {
const field = fields[i];
this.visitConstructModelField(field, level + 1, env);
}
this.emit(`}`, level);
} else {
this.emit(`${modelName}{`);
let comments = DSL.comment.getBetweenComments(this.comments, ast.tokenRange[0], ast.tokenRange[1]);
if (comments.length > 0) {
this.emit('\n');
this.visitComments(comments, level + 1);
this.emit('', level);
}
this.emit(`}`);
}
}