blob: 24cd4054ac37631da74db4412131f133c6f8c0f3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
// RUN: %clang_cc1 -fsyntax-only -verify %s
// Ensure we undo the rewrite from `a++` to a binary `a ++ 0` before profiling.
namespace PostIncDec {
// Increment / decrement as UnaryOperator.
template<typename T> auto inc(T &a) -> decltype(a++) {} // expected-note {{previous}}
template<typename T> auto dec(T &a) -> decltype(a--) {} // expected-note {{previous}}
struct X {};
void operator++(X&, int);
void operator--(X&, int);
// Increment / decrement as CXXOverloadedCallExpr. These are redefinitions.
template<typename T> auto inc(T &a) -> decltype(a++) {} // expected-error {{redefinition}} expected-note {{candidate}}
template<typename T> auto dec(T &a) -> decltype(a--) {} // expected-error {{redefinition}} expected-note {{candidate}}
// These are not ambiguous calls.
void f(X x) {
// FIXME: Don't produce these follow-on errors.
inc(x); // expected-error {{no match}}
dec(x); // expected-error {{no match}}
}
}
|