[[nodiscard]] and KDE coding policy

Volker Krause vkrause at kde.org
Fri Jul 31 16:50:21 BST 2026


On Donnerstag, 30. Juli 2026 17:14:44 Mitteleuropäische Sommerzeit David 
Edmundson wrote:
> I'm seeing more and more merge requests using [[nodiscard]] and now
> review comments insisting on others adding [[nodiscard]] to new code.
> 
> I've seen everyone has their own set of rules:
>  - some don't use it
>  - some add it when the return value is important (like opening a file
> having an error)
>  or when the return value has a RAII pattern or requires the caller to
> take over memory ownership
>  - some add it to every getter
> 
> I don't like inconsistency and I don't like repeated discussions on
> merge requests.
> 
> I would like to as a group decide on something and add it to
> https://community.kde.org/Policies/Library_Code_Policy at least for
> new code with a definitive rule that everyone has to follow.
> 
> Whether we change existing code is also up for discussion it's a
> source-incompatible change even though it's binary compatible. We
> normally avoid source compatible changes, but it shouldn't make too
> much difference unless we're exposing existing mistakes - which is
> something we want to do.
> 
> Any thoughts?

My approach so far is:
- Add it everywhere where ignoring the return value is definitely an error.
- Don't add it where ignoring the return value is valid, even if unlikely.

That seems roughly in line with the Qt policy.

Practically, clang-tidy as part of the local LSP setup takes care of most most 
of this automatically.

I have so far only added this in new code, or when doing larger work on 
existing code. It's technically source incompatible for -Werror users, but if 
it's only added on definite error cases any compile breakage following from 
that is actually uncovering a real error, so that's fine IMHO.

Cases like QFile::open are the more difficult decision IMHO, not sure we have 
many of those though. I'd say those will always need to be handled case-by-
case during reviews.

I'm not the biggest fan of mass code changes for this, hard to review and not 
worth the risk over the potential gain IMHO.

Regards,
Volker
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 232 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-devel/attachments/20260731/058d59e9/attachment.sig>


More information about the kde-devel mailing list