From d87515fa113269e9c82ec3e60ccceb2114fd13b0 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Thu, 20 Oct 2016 00:55:15 +0000 Subject: PR26276: Fix detection of non-cast-expressions as operands of fold-expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@284684 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaTemplateVariadic.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lib/Sema/SemaTemplateVariadic.cpp') diff --git a/lib/Sema/SemaTemplateVariadic.cpp b/lib/Sema/SemaTemplateVariadic.cpp index b6bd6c03ff..c278639073 100644 --- a/lib/Sema/SemaTemplateVariadic.cpp +++ b/lib/Sema/SemaTemplateVariadic.cpp @@ -998,7 +998,9 @@ static void CheckFoldOperand(Sema &S, Expr *E) { return; E = E->IgnoreImpCasts(); - if (isa(E) || isa(E)) { + auto *OCE = dyn_cast(E); + if ((OCE && OCE->isInfixBinaryOp()) || isa(E) || + isa(E)) { S.Diag(E->getExprLoc(), diag::err_fold_expression_bad_operand) << E->getSourceRange() << FixItHint::CreateInsertion(E->getLocStart(), "(") -- cgit v1.2.1