diff options
author | Chris Lattner <sabre@nondot.org> | 2009-01-04 22:32:19 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-01-04 22:32:19 +0000 |
commit | 6ec76d45bd3111013c357f16e08720407c2f9ae8 (patch) | |
tree | d10c0ff9a45c5671a92ed33d07d2d161a7b61828 /lib/Parse/Parser.cpp | |
parent | 2dcaab3de6de20db3a8526bb4fdd5e760ff60cc2 (diff) |
use early exits to reduce nesting.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61642 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/Parser.cpp')
-rw-r--r-- | lib/Parse/Parser.cpp | 65 |
1 files changed, 33 insertions, 32 deletions
diff --git a/lib/Parse/Parser.cpp b/lib/Parse/Parser.cpp index 3c79d6405c..381c84e317 100644 --- a/lib/Parse/Parser.cpp +++ b/lib/Parse/Parser.cpp @@ -784,48 +784,49 @@ void Parser::TryAnnotateTypeOrScopeToken() { // FIXME: check for a template-id token here, and look it up if it // names a type. - if (SS.isNotEmpty()) { - // A C++ scope specifier that isn't followed by a typename. - // Push the current token back into the token stream (or revert it if it is - // cached) and use an annotation scope token for current token. - if (PP.isBacktrackEnabled()) - PP.RevertCachedTokens(1); - else - PP.EnterToken(Tok); - Tok.setKind(tok::annot_cxxscope); - Tok.setAnnotationValue(SS.getScopeRep()); - Tok.setAnnotationRange(SS.getRange()); - - // In case the tokens were cached, have Preprocessor replace them with the - // annotation token. - PP.AnnotateCachedTokens(Tok); - } + if (SS.isEmpty()) + return; + + // A C++ scope specifier that isn't followed by a typename. + // Push the current token back into the token stream (or revert it if it is + // cached) and use an annotation scope token for current token. + if (PP.isBacktrackEnabled()) + PP.RevertCachedTokens(1); + else + PP.EnterToken(Tok); + Tok.setKind(tok::annot_cxxscope); + Tok.setAnnotationValue(SS.getScopeRep()); + Tok.setAnnotationRange(SS.getRange()); + + // In case the tokens were cached, have Preprocessor replace them with the + // annotation token. + PP.AnnotateCachedTokens(Tok); } /// TryAnnotateScopeToken - Like TryAnnotateTypeOrScopeToken but only /// annotates C++ scope specifiers. void Parser::TryAnnotateCXXScopeToken() { assert(getLang().CPlusPlus && - "Call sites of this function should be guarded by checking for C++."); + "Call sites of this function should be guarded by checking for C++"); if (Tok.is(tok::annot_cxxscope)) return; CXXScopeSpec SS; - if (MaybeParseCXXScopeSpecifier(SS)) { + if (!MaybeParseCXXScopeSpecifier(SS)) + return; - // Push the current token back into the token stream (or revert it if it is - // cached) and use an annotation scope token for current token. - if (PP.isBacktrackEnabled()) - PP.RevertCachedTokens(1); - else - PP.EnterToken(Tok); - Tok.setKind(tok::annot_cxxscope); - Tok.setAnnotationValue(SS.getScopeRep()); - Tok.setAnnotationRange(SS.getRange()); - - // In case the tokens were cached, have Preprocessor replace them with the - // annotation token. - PP.AnnotateCachedTokens(Tok); - } + // Push the current token back into the token stream (or revert it if it is + // cached) and use an annotation scope token for current token. + if (PP.isBacktrackEnabled()) + PP.RevertCachedTokens(1); + else + PP.EnterToken(Tok); + Tok.setKind(tok::annot_cxxscope); + Tok.setAnnotationValue(SS.getScopeRep()); + Tok.setAnnotationRange(SS.getRange()); + + // In case the tokens were cached, have Preprocessor replace them with the + // annotation token. + PP.AnnotateCachedTokens(Tok); } |