(id *jsonrpc.ID, err error)
| 660 | func (e userFacingRequestFailedError) Unwrap() error { return lsproto.ErrorCodeRequestFailed } |
| 661 | |
| 662 | func (s *Server) sendError(id *jsonrpc.ID, err error) error { |
| 663 | // Do not send error response for notifications, |
| 664 | // except for parse errors which may occur before determining if the message is a request or notification. |
| 665 | if id == nil && !errors.Is(err, lsproto.ErrorCodeInvalidRequest) { |
| 666 | s.logger.Errorf("error handling notification: %s", err) |
| 667 | return nil |
| 668 | } |
| 669 | code := lsproto.ErrorCodeInternalError |
| 670 | if errCode, ok := errors.AsType[lsproto.ErrorCode](err); ok { |
| 671 | code = errCode |
| 672 | } |
| 673 | // TODO(jakebailey): error data |
| 674 | return s.sendResponse(&lsproto.ResponseMessage{ |
| 675 | ID: id, |
| 676 | Error: &jsonrpc.ResponseError{ |
| 677 | Code: int32(code), |
| 678 | Message: err.Error(), |
| 679 | }, |
| 680 | }) |
| 681 | } |
| 682 | |
| 683 | func sendNotification[Params any](s *Server, info lsproto.NotificationInfo[Params], params Params) error { |
| 684 | return s.send(info.NewNotificationMessage(params).Message()) |
no test coverage detected