<table><tr><td style="">sitter added inline comments.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D28192">View Revision</a></tr></table><br /><div><strong>INLINE COMMENTS</strong><div><div style="margin: 6px 0 12px 0;"><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D28192#inline-163012">View Inline</a><span style="color: #4b4d51; font-weight: bold;">alex</span> wrote in <span style="color: #4b4d51; font-weight: bold;">dictionaryrunner_config.cpp:29</span></div>
<div style="margin: 8px 0; padding: 0 12px; color: #74777D;"><p style="padding: 0; margin: 8px;">That makes sense but one question: The doc says: <tt style="background: #ebebeb; font-size: 13px;">...However, if you for some reason reimplement it and also are using KConfigXT, you must call this function</tt>, does this mean we can assume that the base class is not needed?</p>

<p style="padding: 0; margin: 8px;">PS: In this case it is not very relevant but I would like to understand concept for future patches ðŸ˜ƒ.</p></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">That line makes no assertions about what to do when you are not using KConfigXT. We don't really have consistent language for docs unfortunately but generally unless the docs explicitly say you must or you must not, it's usually best to assume that you should go with best practice.</p>

<p style="padding: 0; margin: 8px;">In this particular case the fact that the docs say you must call the base when using kconfigxt could just mean that someone forgot about forwarding the call and then stumbled over bugs and took the time to add a warning for future generations to not repeat their mistake. It doesn't necessarily mean that the list of musts is comprehensive and exhaustive. It certainly doesn't mean that implicit requirements will remain the same over time. And along that line, consider the two scenarios:</p>

<p style="padding: 0; margin: 8px;">in 10 years</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">a new requirement is added where you must forward the call to the base. say a sound plays on every save and that is implemented inside KCModule. if you do not forward the call this singular KCM will be misbehaving and someone has to file a bug and a dev has to go figure out that the calls aren't being forwarded</li>
<li class="remarkup-list-item">a new requirement is added where you must <strong>not</strong> forward the call (terribly unlikely) it's easy for the baseclass to know when that requirement was violated and Q_ASSERT or print a qwarning. at that point you'll still have a bug on your hand but the library can make provisions for that bug to not be actually a problem</li>
</ul>

<p style="padding: 0; margin: 8px;">or simply put: it's easier to deal with useless/unintended calls than with entirely missing calls. if you don't call a library it can't tell you about failed runtime assertions and the like.</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R114 Plasma Addons</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D28192">https://phabricator.kde.org/D28192</a></div></div><br /><div><strong>To: </strong>alex, broulik, ngraham, sitter, mlaurent<br /><strong>Cc: </strong>plasma-devel, Orage, LeGast00n, The-Feren-OS-Dev, cblack, jraleigh, zachus, fbampaloukas, GB_2, ragreen, ZrenBot, ngraham, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, ahiemstra, mart<br /></div>