in lib/generator.js [1354:1393]
visitType(ast, level) {
if (ast.type === 'moduleModel') {
const [ mainId, ...rest ] = ast.path;
let moduleName = _importFilter(_name(ast.path[0]).toLowerCase());
let modelName = rest.map(node => {
return _upperFirst(_name(node));
}).join('');
const externEx = this.usedExternException.get(_name(mainId));
if (externEx && externEx.has(modelName)) {
modelName += 'Error';
}
this.emit(`*${moduleName}.${_format(modelName)}`);
} else if (ast.type === 'moduleTypedef') {
this.emit(`*`);
for (let i = 1; i < ast.path.length; i++) {
this.emit(`${this.typeRelover(ast.path[i], ast.path[0])}`);
}
} else if (ast.type === 'subModel') {
this.emit(`*${_format(_name(ast.path[0]))}`);
for (let i = 1; i < ast.path.length; i++) {
this.emit(`${_format(_name(ast.path[i]))}`);
}
} else if ((ast.type === 'map' || ast.fieldType === 'map') && _name(ast.keyType)) {
this.emit(`map[${this.getType(_name(ast.keyType), false)}]`);
this.visitPointerType(ast.valueType, level);
} else if (ast.fieldType === 'array' || ast.type === 'array') {
this.emit(`[]`);
this.visitPointerType(ast.subType || ast.itemType, level);
} else if (ast.idType === 'module' || this.clientName[_name(ast)]) {
this.emit(`${this.clientName[_name(ast)]}`);
} else if (this.typeRelover(ast)) {
this.emit(this.getType(this.typeRelover(ast), false));
} else if (ast.fieldType && DSL.util.isBasicType(ast.fieldType)) {
this.emit(this.getType(ast.fieldType, false));
} else if (ast.fieldType && this.typeRelover(ast.fieldType)) {
this.emit(this.getType(this.typeRelover(ast.fieldType), false));
} else {
this.emit(this.getType(ast, false));
}
}