]> granicus.if.org Git - clang/commitdiff
Simplify some control flow and remove a call to TryAnnotateCXXScopeToken
authorChris Lattner <sabre@nondot.org>
Sun, 4 Jan 2009 23:51:17 +0000 (23:51 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 4 Jan 2009 23:51:17 +0000 (23:51 +0000)
that isn't doing what is desired. It was annotating the current token
not the 'next' token.  This code should be fixed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61656 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Parse/ParseTemplate.cpp

index bd937d447a00db074921f63d15c4a35abaf093b3..076aae38cc3a2c2d0af8830d961aa10d799012ff 100644 (file)
@@ -175,21 +175,20 @@ Parser::ParseTemplateParameterList(unsigned Depth,
 ///         'template' '<' template-parameter-list '>' 'class' identifier[opt] = id-expression
 Parser::DeclTy *
 Parser::ParseTemplateParameter(unsigned Depth, unsigned Position) {
-  TryAnnotateCXXScopeToken();
-
-  if(Tok.is(tok::kw_class) 
-     || (Tok.is(tok::kw_typename) && 
+  if(Tok.is(tok::kw_class) ||
+     (Tok.is(tok::kw_typename) && 
+         // FIXME: Next token has not been annotated!
         NextToken().isNot(tok::annot_qualtypename))) {
     return ParseTypeParameter(Depth, Position);
-  } else if(Tok.is(tok::kw_template)) {
-    return ParseTemplateTemplateParameter(Depth, Position);
-  } else {
-    // If it's none of the above, then it must be a parameter declaration.
-    // NOTE: This will pick up errors in the closure of the template parameter
-    // list (e.g., template < ; Check here to implement >> style closures.
-    return ParseNonTypeTemplateParameter(Depth, Position);
   }
-  return 0;
+  
+  if(Tok.is(tok::kw_template))
+    return ParseTemplateTemplateParameter(Depth, Position);
+
+  // If it's none of the above, then it must be a parameter declaration.
+  // NOTE: This will pick up errors in the closure of the template parameter
+  // list (e.g., template < ; Check here to implement >> style closures.
+  return ParseNonTypeTemplateParameter(Depth, Position);
 }
 
 /// ParseTypeParameter - Parse a template type parameter (C++ [temp.param]).