<table><tr><td style="">mwolff accepted this revision.<br />mwolff added a comment.
</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/D6412" rel="noreferrer">View Revision</a></tr></table><br /><div><div><p>overall certainly an improvement, some suggestions from my side</p></div></div><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/D6412#inline-26461" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">declarationbuilder.cpp:587</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="p">}</span>
</div><div style="padding: 0 8px; margin: 0 4px; ">        <span style="color: #aa4000">if</span><span class="p">(</span><span class="n">retparamContext</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="p">{</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">a context for the return parameter? is that really required? just asking out of curiosity, afaik the other language plugins don't do that (or?)</p></div></div><br /><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/D6412#inline-26462" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">declarationbuilder.cpp:606</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="n">DUChainWriteLocker</span> <span class="n">lock</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="n">lastContext</span><span class="p">()</span><span style="color: #aa2211">-></span><span class="n">setType</span><span class="p">(</span><span class="n">DUContext</span><span style="color: #aa2211">::</span><span class="n">Other</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="p">}</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">are you sure that this always creates a context? i.e. even if the user typed somewhat broken code into the editor? I suggest you better rewrite this like the below, to be on the safe side:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">if (block) {
    visitBlock(block);
    DUChainWriteLocker lock;
    bodyContext = lastContext();
    if (bodyContext) {
        bodyContext->setType(DUContext::Other);
    }
}</pre></div>

<p style="padding: 0; margin: 8px;">better yet, could you set this type directly wherever you are creating the context itself? from a cursory glance, I don't even see where this is done</p></div></div><br /><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/D6412#inline-26459" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">declarationbuilder.h:71</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">     **/</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">go</span><span style="color: #aa2211">::</span><span class="n">GoFunctionDeclaration</span><span style="color: #aa2211">*</span> <span class="n">buildFunction</span><span class="p">(</span><span class="n">go</span><span style="color: #aa2211">::</span><span class="n">SignatureAst</span><span style="color: #aa2211">*</span> <span class="n">node</span><span class="p">,</span> <span class="n">go</span><span style="color: #aa2211">::</span><span class="n">BlockAst</span><span style="color: #aa2211">*</span> <span class="n">block</span><span style="color: #aa2211">=</span><span style="color: #601200">0</span><span class="p">,</span> <span class="n">go</span><span style="color: #aa2211">::</span><span class="n">IdentifierAst</span><span style="color: #aa2211">*</span> <span class="n">name</span><span style="color: #aa2211">=</span><span style="color: #601200">0</span><span class="p">,</span> <span style="color: #aa4000">const</span> <span class="n">QByteArray</span><span style="color: #aa2211">&</span> <span class="n">comment</span><span style="color: #aa2211">=</span><span class="n">QByteArray</span><span class="p">());</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">nitpicks here and below: please try to follow our coding style and add spaces around operators (such as the <tt style="background: #ebebeb; font-size: 13px;">=</tt> here</p>

<p style="padding: 0; margin: 8px;">also, you can use <tt style="background: #ebebeb; font-size: 13px;">= {}</tt> to reduce some typing repetition here for the <tt style="background: #ebebeb; font-size: 13px;">comment</tt></p></div></div><br /><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/D6412#inline-26460" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">declarationbuilder.h:105</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">    <span class="n">virtual</span> <span class="n">go</span><span style="color: #aa2211">::</span><span class="n">GoFunctionDeclaration</span><span style="color: #aa2211">*</span> <span class="n">declareFunction</span><span class="p">(</span><span class="n">go</span><span style="color: #aa2211">::</span><span class="n">IdentifierAst</span><span style="color: #aa2211">*</span> <span class="n">id</span><span class="p">,</span> <span style="color: #aa4000">const</span> <span class="n">go</span><span style="color: #aa2211">::</span><span class="n">GoFunctionType</span><span style="color: #aa2211">::</span><span class="n">Ptr</span><span style="color: #aa2211">&</span> <span class="n">type</span><span class="p">,</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">                                                       <span class="n">DUContext</span><span style="color: #aa2211">*</span> <span class="n">paramContext</span><span class="p">,</span> <span class="n">DUContext</span><span style="color: #aa2211">*</span> <span class="n">retparamContext</span><span class="p">,</span> <span style="color: #aa4000">const</span> <span class="n">QByteArray</span><span style="color: #aa2211">&</span> <span class="n">comment</span><span style="color: #aa2211">=</span><span class="n">QByteArray</span><span class="p">())</span> <span class="n">override</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                                                       <span class="n">DUContext</span><span style="color: #aa2211">*</span> <span class="n">paramContext</span><span class="p">,</span> <span class="n">DUContext</span><span style="color: #aa2211">*</span> <span class="n">retparamContext</span><span class="p">,</span> <span style="color: #aa4000">const</span> <span class="n">QByteArray</span><span style="color: #aa2211">&</span> <span class="n">comment</span><span style="color: #aa2211">=</span><span class="n">QByteArray</span><span class="p">()<span class="bright">,</span></span><span class="bright"> </span><span class="n"><span class="bright">DUContext</span></span><span class="bright"></span><span style="color: #aa2211"><span class="bright">*</span></span><span class="bright"> </span><span class="n"><span class="bright">bodyContext</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">=</span></span><span class="bright"> </span><span class="n"><span class="bright">nullptr</span></span><span class="p">)</span> <span class="n">override</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">dito, see above</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R59 KDevelop Go</div></div></div><br /><div><strong>BRANCH</strong><div><div>fixing</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D6412" rel="noreferrer">https://phabricator.kde.org/D6412</a></div></div><br /><div><strong>To: </strong>ematirov, brauch, apol, mwolff<br /><strong>Cc: </strong>mwolff, kdevelop-devel, geetamc, Pilzschaf, akshaydeo, surgenight, arrowdodger<br /></div>