sequence_checker_unittest.nc 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. // This is a "No Compile Test" suite.
  5. // https://dev.chromium.org/developers/testing/no-compile-tests
  6. #include "base/sequence_checker.h"
  7. namespace {
  8. class SequenceAffine {
  9. public:
  10. void BuggyIncrement();
  11. void Increment() VALID_CONTEXT_REQUIRED(sequence_checker_) {
  12. ++counter_;
  13. }
  14. private:
  15. int counter_ GUARDED_BY_CONTEXT(sequence_checker_);
  16. SEQUENCE_CHECKER(sequence_checker_);
  17. };
  18. #if defined(NCTEST_ACCESS_WITHOUT_CHECK) // [r"fatal error: writing variable 'counter_' requires holding context 'sequence_checker_' exclusively"]
  19. void SequenceAffine::BuggyIncrement() {
  20. // Member access without sequence_checker_ assertion.
  21. ++counter_;
  22. }
  23. #elif defined(NCTEST_CALL_WITHOUT_CHECK) // [r"fatal error: calling function 'Increment' requires holding context 'sequence_checker_' exclusively"]
  24. void SequenceAffine::BuggyIncrement() {
  25. // Function call without sequence_checker_ assertion.
  26. Increment();
  27. }
  28. #endif
  29. } // namespace