in lib/generator.js [1985:2033]
visitConstructModel(ast, level) {
assert.equal(ast.type, 'construct_model');
if (ast.aliasId.isModule) {
// 这里做了粗糙改动 直接生成aliasId对应的models
let type = 'model';
let moduleName = _name(ast.aliasId);
let modelName = _subModelName(ast.propertyPath.map((item) => {
return item.lexeme;
}).join('.'));
const externEx = this.usedExternException.get(moduleName);
if (externEx && externEx.has(modelName)) {
type = 'exception';
}
this.emit(this.getModelName(modelName, moduleName, type));
}
if (ast.aliasId.isModel) {
let type = 'model';
let mainModelName = _name(ast.aliasId);
mainModelName = _subModelName([mainModelName, ...ast.propertyPath.map((item) => {
return item.lexeme;
})].join('.'));
if(mainModelName.startsWith('$') && _type(mainModelName)) {
mainModelName = _type(mainModelName);
this.pushImports(mainModelName);
this.emit(mainModelName);
} else {
if (this.predefined[mainModelName] && this.predefined[mainModelName].isException) {
type = 'exception';
}
this.emit(this.getModelName(mainModelName, '', type));
}
}
this.emit('(');
if (ast.object && ast.object.fields.length !== 0) {
// 判断是否有初始化赋值
// this.visitObject(ast.object, level);
this.emit('\n');
for (var i = 0; i < ast.object.fields.length; i++) {
this.visitModelField(ast.object.fields[i], level, i === ast.object.fields.length - 1);
}
this.emit(')', level);
} else{
this.emit(')');
}
}