// RUN: %clang_cc1 -fsyntax-only -verify %s | |
// expected-no-diagnostics | |
// This would previously trigger a failed assertion when instantiating the | |
// template which uses an overloaded call operator because the end location | |
// for the expression came from a macro expansion. | |
#define ASSIGN_OR_RETURN(...) (__VA_ARGS__) | |
struct Loc { | |
int operator()(const char* _Nonnull f = __builtin_FILE()) const; | |
}; | |
template <typename Ty> | |
void f() { | |
ASSIGN_OR_RETURN(Loc()()); | |
} | |
void test() { | |
f<int>(); | |
} | |