[cfe-commits] r61642 - /cfe/trunk/lib/Parse/Parser.cpp

Chris Lattner sabre at nondot.org
Sun Jan 4 14:32:19 PST 2009


Author: lattner
Date: Sun Jan  4 16:32:19 2009
New Revision: 61642

URL: http://llvm.org/viewvc/llvm-project?rev=61642&view=rev
Log:
use early exits to reduce nesting.

Modified:
    cfe/trunk/lib/Parse/Parser.cpp

Modified: cfe/trunk/lib/Parse/Parser.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/Parser.cpp?rev=61642&r1=61641&r2=61642&view=diff

==============================================================================
--- cfe/trunk/lib/Parse/Parser.cpp (original)
+++ cfe/trunk/lib/Parse/Parser.cpp Sun Jan  4 16:32:19 2009
@@ -784,48 +784,49 @@
   // 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);
 }





More information about the cfe-commits mailing list