visitExceptionBody()

in lib/generator.js [1893:1936]


  visitExceptionBody(ast, nodes, lastName, level) {
    assert.equal(ast.type, 'exceptionBody');
    const fields = [];
    const structMap = [];
    let node;
    for (let i = 0; i < nodes.length; i++) {
      node = nodes[i];
      if(!node.extend) {
        let comments = DSL.comment.getFrontComments(this.comments, node.tokenRange[0]);
        this.visitComments(comments, level);
      }
      if(i !== nodes.length - 1) {
        node.extend = false;
      }
      var fieldName = _name(node.fieldName);
      let tag = '';
      const structName = lastName + _format(fieldName);
      this.emit(`${_format(fieldName)} `, level);
      const { type } = this.visitFieldType(node, structName, fields, structMap, level);
      var realName = _getAttr(node, 'name');
      if (!realName) {
        realName = fieldName;
      }
      if (node.required) {
        tag = tag + ` require:"true"`;
      }
      if (type !== '') {
        tag = tag + ` ${type}`;
      }
      this.emit(`\`${tag}\``);
      this.emit(`\n`);
    }
    if (node && !node.extend) {
      //find the last node's back comment
      let comments = DSL.comment.getBetweenComments(this.comments, node.tokenRange[0], ast.tokenRange[1]);
      this.visitComments(comments, level);
    }

    if (ast.nodes.length === 0) {
      //empty block's comment
      let comments = DSL.comment.getBetweenComments(this.comments, ast.tokenRange[0], ast.tokenRange[1]);
      this.visitComments(comments, level);
    }
    this.emit(`}\n`);