diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2009-07-22 22:25:00 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2009-07-22 22:25:00 +0000 |
commit | de99a45c1295ec8e2eea20d35906178ff10722b5 (patch) | |
tree | 7bafd6f530cf695d95eecafa9d62d0bedc80c775 | |
parent | 27eeb5ef469a83b8b374ee29cd530ee8ab911fc1 (diff) |
Slight code reorganization to allow instantiating post-inc/dec.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76807 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaExpr.cpp | 14 | ||||
-rw-r--r-- | test/SemaTemplate/instantiate-expr-5.cpp | 4 |
2 files changed, 9 insertions, 9 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 8c780296a7..bb3f21a212 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -1703,12 +1703,7 @@ Sema::ActOnPostfixUnaryOp(Scope *S, SourceLocation OpLoc, // build a built-in operation. } - QualType result = CheckIncrementDecrementOperand(Arg, OpLoc, - Opc == UnaryOperator::PostInc); - if (result.isNull()) - return ExprError(); - Input.release(); - return Owned(new (Context) UnaryOperator(Arg, Opc, result, OpLoc)); + return CreateBuiltinUnaryOp(OpLoc, Opc, move(Input)); } Action::OwningExprResult @@ -5014,16 +5009,17 @@ Action::OwningExprResult Sema::CreateBuiltinUnaryOp(SourceLocation OpLoc, Expr *Input = (Expr *)InputArg.get(); QualType resultType; switch (Opc) { - case UnaryOperator::PostInc: - case UnaryOperator::PostDec: case UnaryOperator::OffsetOf: assert(false && "Invalid unary operator"); break; case UnaryOperator::PreInc: case UnaryOperator::PreDec: + case UnaryOperator::PostInc: + case UnaryOperator::PostDec: resultType = CheckIncrementDecrementOperand(Input, OpLoc, - Opc == UnaryOperator::PreInc); + Opc == UnaryOperator::PreInc || + Opc == UnaryOperator::PostInc); break; case UnaryOperator::AddrOf: resultType = CheckAddressOfOperand(Input, OpLoc); diff --git a/test/SemaTemplate/instantiate-expr-5.cpp b/test/SemaTemplate/instantiate-expr-5.cpp new file mode 100644 index 0000000000..b42c0fb2aa --- /dev/null +++ b/test/SemaTemplate/instantiate-expr-5.cpp @@ -0,0 +1,4 @@ +// RUN: clang-cc -fsyntax-only %s + +template <class A> int x(A x) { return x++; } +int y() { return x<int>(1); } |