summaryrefslogtreecommitdiff
path: root/test/SemaObjCXX/blocks.mm
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaObjCXX/blocks.mm')
-rw-r--r--test/SemaObjCXX/blocks.mm26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/SemaObjCXX/blocks.mm b/test/SemaObjCXX/blocks.mm
index 6c2343df0e09b..c91fd103e1333 100644
--- a/test/SemaObjCXX/blocks.mm
+++ b/test/SemaObjCXX/blocks.mm
@@ -118,3 +118,29 @@ void f(int (^bl)(A* a)); // expected-note {{candidate function not viable: no kn
void g() {
f(^(B* b) { return 0; }); // expected-error {{no matching function for call to 'f'}}
}
+
+namespace DependentReturn {
+ template<typename T>
+ void f(T t) {
+ (void)^(T u) {
+ if (t != u)
+ return t + u;
+ else
+ return;
+ };
+
+ (void)^(T u) {
+ if (t == u)
+ return;
+ else
+ return t + u;
+ };
+ }
+
+ struct X { };
+ void operator+(X, X);
+ bool operator==(X, X);
+ bool operator!=(X, X);
+
+ template void f<X>(X);
+}