mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-30 04:35:00 +00:00
discourage else after "noreturn" statements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77387 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cf593a3f43
commit
9eb7e0aa57
@ -43,6 +43,8 @@
|
|||||||
Private</a></li>
|
Private</a></li>
|
||||||
<li><a href="#hl_earlyexit">Use Early Exits and 'continue' to Simplify
|
<li><a href="#hl_earlyexit">Use Early Exits and 'continue' to Simplify
|
||||||
Code</a></li>
|
Code</a></li>
|
||||||
|
<li><a href="#hl_else_after_return">Don't use "else" after a
|
||||||
|
return</a></li>
|
||||||
<li><a href="#hl_predicateloops">Turn Predicate Loops into Predicate
|
<li><a href="#hl_predicateloops">Turn Predicate Loops into Predicate
|
||||||
Functions</a></li>
|
Functions</a></li>
|
||||||
</ol></li>
|
</ol></li>
|
||||||
@ -624,6 +626,88 @@ be a big understandability win.</p>
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- _______________________________________________________________________ -->
|
||||||
|
<div class="doc_subsubsection">
|
||||||
|
<a name="hl_else_after_return">Don't use "else" after a return</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="doc_text">
|
||||||
|
|
||||||
|
<p>For similar reasons above (reduction of indentation and easier reading),
|
||||||
|
please do not use "else" or "else if" after something that interrupts
|
||||||
|
control flow like return, break, continue, goto, etc. For example, this is
|
||||||
|
"bad":</p>
|
||||||
|
|
||||||
|
<div class="doc_code">
|
||||||
|
<pre>
|
||||||
|
case 'J': {
|
||||||
|
if (Signed) {
|
||||||
|
Type = Context.getsigjmp_bufType();
|
||||||
|
if (Type.isNull()) {
|
||||||
|
Error = ASTContext::GE_Missing_sigjmp_buf;
|
||||||
|
return QualType();
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Type = Context.getjmp_bufType();
|
||||||
|
if (Type.isNull()) {
|
||||||
|
Error = ASTContext::GE_Missing_jmp_buf;
|
||||||
|
return QualType();
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>It is better to write this something like:</p>
|
||||||
|
|
||||||
|
<div class="doc_code">
|
||||||
|
<pre>
|
||||||
|
case 'J':
|
||||||
|
if (Signed) {
|
||||||
|
Type = Context.getsigjmp_bufType();
|
||||||
|
if (Type.isNull()) {
|
||||||
|
Error = ASTContext::GE_Missing_sigjmp_buf;
|
||||||
|
return QualType();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Type = Context.getjmp_bufType();
|
||||||
|
if (Type.isNull()) {
|
||||||
|
Error = ASTContext::GE_Missing_jmp_buf;
|
||||||
|
return QualType();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>Or better yet (in this case), as:</p>
|
||||||
|
|
||||||
|
<div class="doc_code">
|
||||||
|
<pre>
|
||||||
|
case 'J':
|
||||||
|
if (Signed)
|
||||||
|
Type = Context.getsigjmp_bufType();
|
||||||
|
else
|
||||||
|
Type = Context.getjmp_bufType();
|
||||||
|
|
||||||
|
if (Type.isNull()) {
|
||||||
|
Error = Signed ? ASTContext::GE_Missing_sigjmp_buf :
|
||||||
|
ASTContext::GE_Missing_jmp_buf;
|
||||||
|
return QualType();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>The idea is to reduce indentation and the amount of code you have to keep
|
||||||
|
track of when reading the code.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- _______________________________________________________________________ -->
|
<!-- _______________________________________________________________________ -->
|
||||||
<div class="doc_subsubsection">
|
<div class="doc_subsubsection">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user