From: Douglas Gregor Date: Tue, 11 Jan 2011 00:33:19 +0000 (+0000) Subject: When we're inside a functional cast, '>' is an operator. Fixes PR8912. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bc61bd8109d9accf8f966b59e3f16a1497e72adf;p=clang When we're inside a functional cast, '>' is an operator. Fixes PR8912. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123201 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Parse/ParseExprCXX.cpp b/lib/Parse/ParseExprCXX.cpp index bf4b5f4b16..aa638bb077 100644 --- a/lib/Parse/ParseExprCXX.cpp +++ b/lib/Parse/ParseExprCXX.cpp @@ -13,6 +13,7 @@ #include "clang/Parse/ParseDiagnostic.h" #include "clang/Parse/Parser.h" +#include "RAIIObjectsForParser.h" #include "clang/Sema/DeclSpec.h" #include "clang/Sema/ParsedTemplate.h" #include "llvm/Support/ErrorHandling.h" @@ -720,6 +721,8 @@ Parser::ParseCXXTypeConstructExpression(const DeclSpec &DS) { ParsedType TypeRep = Actions.ActOnTypeName(getCurScope(), DeclaratorInfo).get(); assert(Tok.is(tok::l_paren) && "Expected '('!"); + GreaterThanIsOperatorScope G(GreaterThanIsOperator, true); + SourceLocation LParenLoc = ConsumeParen(); ExprVector Exprs(Actions); diff --git a/test/Parser/cxx-template-argument.cpp b/test/Parser/cxx-template-argument.cpp index 532b4c9894..c85b1c9281 100644 --- a/test/Parser/cxx-template-argument.cpp +++ b/test/Parser/cxx-template-argument.cpp @@ -7,3 +7,6 @@ template struct A {}; A int x; // expected-error {{expected '>'}} expected-error {{expected unqualified-id}} A'}} +// PR8912 +template struct S {}; +S 1)> s;