<table><tr><td style="">aaronpuchert 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/D5491" rel="noreferrer">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/D5491#inline-29684" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">gcclikecompiler.cpp:45</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(251, 175, 175, .7);"><span class="n">QStringList</span> <span class="n">languageOptions</span><span class="p">(</span><span style="color: #aa4000">const</span> <span class="n">QString</span><span style="color: #aa2211">&</span> <span class="n">arguments</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span class="n">QStringList</span> <span class="n">languageOptions</span><span class="p">(</span><span style="color: #aa4000">const</span> <span class="n">QString<span class="bright">List</span></span><span style="color: #aa2211">&</span> <span class="n">arguments</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; "><span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span style="color: #74777d">// TODO: handle -ansi flag: In C mode, this is equivalent to -std=c90. In C++ mode, it is equivalent to -std=c++98.</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span style="color: #74777d">// TODO: check for -x flag on command line</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span style="color: #aa4000">const</span> <span class="n">QRegularExpression</span> <span class="n">regexp</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span style="color: #766510">"-std=(</span><span style="color: #bb6622">\\</span><span style="color: #766510">S+)"</span><span class="p">));</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span style="color: #74777d">// see gcc manpage or llvm/tools/clang/include/clang/Frontend/LangStandards.def for list of valid language options</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span style="color: #aa4000">auto</span> <span class="n">result</span> <span style="color: #aa2211">=</span> <span class="n">regexp</span><span class="p">.</span><span class="n">match</span><span class="p">(</span><span class="n">arguments</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span style="color: #aa4000">if</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">hasMatch</span><span class="p">()){</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">        <span style="color: #aa4000">auto</span> <span class="n">standard</span> <span style="color: #aa2211">=</span> <span class="n">result</span><span class="p">.</span><span class="n">captured</span><span class="p">(</span><span style="color: #601200">0</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">        <span class="n">QString</span> <span class="n">mode</span> <span style="color: #aa2211">=</span> <span class="n">result</span><span class="p">.</span><span class="n">captured</span><span class="p">(</span><span style="color: #601200">1</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">This function is pretty complex and full of hacks, even before this change. But what bothers me most: why do we try to guess the language here?</p>

<p style="padding: 0; margin: 8px;">As far as I can see, it's only used in <tt style="background: #ebebeb; font-size: 13px;">GccLikeCompiler::defines</tt> and <tt style="background: #ebebeb; font-size: 13px;">GccLikeCompiler::includes</tt>, which are used in <tt style="background: #ebebeb; font-size: 13px;">CompilerProvider::defines</tt> and <tt style="background: #ebebeb; font-size: 13px;">CompilerProvider::includes</tt>, respectively. But there we know the language (it's just <tt style="background: #ebebeb; font-size: 13px;">languageType</tt>), so why do we try to detect it again?</p>

<p style="padding: 0; margin: 8px;">I think this can be made a lot easier by redesigning some of the methods a bit.</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/D5491#inline-29687" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">gcclikecompiler.cpp:63</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">language</span> <span style="color: #aa2211">=</span> <span class="n">minusXCL</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="p">}</span> <span style="color: #aa4000">else</span> <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">standardVersion</span><span class="p">.</span><span class="n">startsWith</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span style="color: #766510">"cuda"</span><span class="p">)))</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                <span class="n">language</span> <span style="color: #aa2211">=</span> <span class="n">minusXCuda</span><span class="p">();</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">There is no standard beginning with <tt style="background: #ebebeb; font-size: 13px;">cuda</tt>, as far as I know. (See the <a href="http://clang.llvm.org/docs/UsersManual.html#differences-between-various-standard-modes" class="remarkup-link" target="_blank" rel="noreferrer">Clang documentation</a>.) It seems that Cuda just uses the already known C and C++ standards, if we are to believe the comments in <a href="https://phabricator.kde.org/D5210" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">D5210: Proper CUDA handling</a>. I don't think we can detect Cuda from the arguments, but I also think we don't need to. (See my other comment.)</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R32 KDevelop</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D5491" rel="noreferrer">https://phabricator.kde.org/D5491</a></div></div><br /><div><strong>To: </strong>arichardson, KDevelop, kfunk, mwolff<br /><strong>Cc: </strong>skalinichev, aaronpuchert, kdevelop-devel<br /></div>