visitConstructModelField()

in lib/generator.js [2831:2867]


  visitConstructModelField(ast, level, env) {
    var str = '';
    var expected = ast.expectedType;
    expected.pointer = true;
    if (ast.expr.type === 'property_access') {
      expected.needCast = 'false';
    }
    let comments = DSL.comment.getFrontComments(this.comments, ast.tokenRange[0]);
    this.visitComments(comments, level);
    this.emit(`${_format(_name(ast.fieldName))}: ${str}`, level);
    if ((_name(ast.expectedType) === 'number' || _name(ast.expectedType) === 'integer') && _name(ast.expr.inferred) === 'int32') {
      this.emit(`dara.ToInt(`);
      this.visitExpr(ast.expr, level, env, expected);
      this.emit(`)`);
    } else if (ast.expr.type !== 'number' && (_name(ast.expr.inferred) === 'number' || _name(ast.expr.inferred) === 'integer') && _name(ast.expectedType) === 'int32') {
      this.emit(`dara.ToInt32(`);
      this.visitExpr(ast.expr, level, env, expected);
      this.emit(`)`);
    } else {
      let setFunc;
      if(ast.expr && ast.expr.type === 'call') {
        let dealFunc = this.getVarDealFunc(ast.expr, expected);
        setFunc = dealFunc && dealFunc(_name(ast.expr.inferred));
      }
      if(setFunc) {
        this.emit(`${setFunc}`);
      }
      this.visitExpr(ast.expr, level, env, expected);
      if(setFunc) {
        this.emit(')');
      }
    }
    if (str !== '') {
      this.emit(`)`);
    }
    this.emit(`,\n`);
  }