57 lines
2.3 KiB
Plaintext
57 lines
2.3 KiB
Plaintext
// Copyright 2022 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// This is a "No Compile Test" suite.
|
|
// http://dev.chromium.org/developers/testing/no-compile-tests
|
|
|
|
#include "base/functional/bind.h"
|
|
#include "base/functional/callback.h"
|
|
#include "base/functional/function_ref.h"
|
|
#include "third_party/abseil-cpp/absl/functional/function_ref.h"
|
|
|
|
namespace base {
|
|
|
|
#if defined(NCTEST_NO_IMPLICIT_VOIDIFY) // [r"note: candidate template ignored: requirement '[^']+' was not satisfied \[with Functor = \(lambda at [^)]+\)\]"]
|
|
|
|
void WontCompile() {
|
|
auto returns_int = [] () { return 42; };
|
|
FunctionRef<void()> ref(returns_int);
|
|
}
|
|
|
|
#elif defined(NCTEST_BIND_ONCE_TO_ABSL_FUNCTION_REF) // [r"fatal error: static assertion failed due to requirement 'AlwaysFalse<void \(\)>': base::Bind{Once,Repeating} require strong ownership: non-owning function references may not bound as the functor due to potential lifetime issues\."]
|
|
|
|
void WontCompile() {
|
|
[] (absl::FunctionRef<void()> ref) {
|
|
BindOnce(ref).Run();
|
|
}([] {});
|
|
}
|
|
|
|
#elif defined(NCTEST_BIND_REPEATING_TO_ABSL_FUNCTION_REF) // [r"fatal error: static assertion failed due to requirement 'AlwaysFalse<void \(\)>': base::Bind{Once,Repeating} require strong ownership: non-owning function references may not bound as the functor due to potential lifetime issues\."]
|
|
|
|
void WontCompile() {
|
|
[] (FunctionRef<void()> ref) {
|
|
BindRepeating(ref).Run();
|
|
}([] {});
|
|
}
|
|
|
|
#elif defined(NCTEST_BIND_ONCE_TO_BASE_FUNCTION_REF) // [r"fatal error: static assertion failed due to requirement 'AlwaysFalse<void \(\)>': base::Bind{Once,Repeating} require strong ownership: non-owning function references may not bound as the functor due to potential lifetime issues\."]
|
|
|
|
void WontCompile() {
|
|
[] (FunctionRef<void()> ref) {
|
|
BindOnce(ref).Run();
|
|
}([] {});
|
|
}
|
|
|
|
#elif defined(NCTEST_BIND_REPEATING_TO_BASE_FUNCTION_REF) // [r"fatal error: static assertion failed due to requirement 'AlwaysFalse<void \(\)>': base::Bind{Once,Repeating} require strong ownership: non-owning function references may not bound as the functor due to potential lifetime issues\."]
|
|
|
|
void WontCompile() {
|
|
[] (FunctionRef<void()> ref) {
|
|
BindRepeating(ref).Run();
|
|
}([] {});
|
|
}
|
|
|
|
#endif
|
|
|
|
} // namespace base
|