eachFunction()

in lib/generator.js [1641:1674]


  eachFunction(ast, level) {
    this.visitAnnotation(ast.annotation, level);
    let comments = DSL.comment.getFrontComments(this.comments, ast.tokenRange[0]);
    this.visitComments(comments, level);
    if (this.implements && !ast.isStatic) {
      this.emit(`@Override\n`, level);
    }
    this.emit('public ', level);
    if (ast.isStatic) {
      this.emit('static ');
    }
    this.visitType(ast.returnType);
    this.emit(` ${_name(ast.functionName)}`);
    if (_name(ast.functionName) === 'main') {
      if (!ast.params.params || ast.params.params.length === 0) {
        throw new Error('static function main must have a argument');
      }
      this.emit(`(String[] ${_name(ast.params.params[0].paramName)}_)`);
    } else {
      this.visitParams(ast.params, level);
    }
    if (!this.NoException) {
      this.emit(' throws Exception');
    }
    this.emit(' {\n');
    if (ast.functionBody) {
      if (_name(ast.functionName) === 'main') {
        const args = _name(ast.params.params[0].paramName);
        this.emit(`java.util.List<String> ${args} = java.util.Arrays.asList(${args}_);\n`, level + 1);
      }
      this.visitFunctionBody(ast.functionBody, level + 1);
    }
    this.emit('}\n', level);
  }