blob: 5ea7cd854c51143b7777fd80066f847ba24541f9 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// 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 "chromecast/base/static_sequence/static_sequence.h"
namespace util {
struct SequenceA : StaticSequence<SequenceA> {};
struct SequenceB : StaticSequence<SequenceB> {};
void Foo(const SequenceA::Key&);
void Fred(SequenceA::Key&);
class Bar {
public:
void Baz(SequenceA::Key&) {}
void Qux(const SequenceA::Key&) {}
};
void StaticSequenceNoCompileTests() {
Sequenced<Bar, SequenceB> bar;
#if defined(NCTEST_POST_FUNCTION_TO_WRONG_SEQUENCE) // [r"fatal error: static_assert failed due to requirement 'invalid<util::SequenceB, util::SequenceA>' \"Attempting to post a statically-sequenced task to the wrong static sequence!\""]
SequenceB::PostTask(base::BindOnce(&Foo));
#elif defined(NCTEST_POST_FUNCTION_WITH_NON_CONST_KEY_REF) // [r".*\"Did you forget to add `const` to the Key parameter of the bound functor\?\""]
SequenceA::PostTask(base::BindOnce(&Fred));
#elif defined(NCTEST_POST_METHOD_WITH_NON_CONST_KEY_REF) // [r".*\"Did you forget to add `const` to the Key parameter of the bound functor\?\""]
bar.Post(FROM_HERE, &Bar::Baz);
#elif defined(NCTEST_POST_METHOD_TO_WRONG_SEQUENCE) // [r"fatal error: static_assert failed due to requirement 'invalid<util::SequenceB, util::SequenceA>' \"Attempting to post a statically-sequenced task to the wrong static sequence!\""]
bar.Post(FROM_HERE, &Bar::Qux);
#endif
}
} // namespace util