visitReturnType()

in lib/generator.js [1064:1097]


  visitReturnType(ast, level, env) {
    const handleIterator = (typeName) => {
      if (this._type(_name(ast.returnType)) === 'void') {
        this.emit(typeName);
      } else {
        this.emit(`${typeName}<`);
        this.visitType(ast.returnType.valueType, level);
        this.emit('>');
      }
    };

    switch (ast.returnType.type) {
    case 'asyncIterator':
      handleIterator('IAsyncEnumerable');
      break;
    case 'iterator':
      handleIterator('IEnumerable');
      break;
    default:
      if (env.isAsyncMode) {
        if (this._type(_name(ast.returnType)) === 'void') {
          this.emit('Task');
        } else {
          this.emit('Task<');
          this.visitType(ast.returnType, level);
          this.emit('>');
        }
      } else {
        this.visitType(ast.returnType, level);
      }
      break;
    }
    this.emit(' ');
  }