| // Copyright 2017 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. | 
 |  | 
 | #include "base/memory/ref_counted.h" | 
 |  | 
 | namespace base { | 
 |  | 
 | class InitialRefCountIsZero : public base::RefCounted<InitialRefCountIsZero> { | 
 |  public: | 
 |   InitialRefCountIsZero() {} | 
 |  private: | 
 |   friend class base::RefCounted<InitialRefCountIsZero>; | 
 |   ~InitialRefCountIsZero() {} | 
 | }; | 
 |  | 
 | // TODO(hans): Remove .* and update the static_assert expectations once we roll | 
 | // past Clang r313315. https://crbug.com/765692. | 
 |  | 
 | #if defined(NCTEST_ADOPT_REF_TO_ZERO_START)  // [r"fatal error: static_assert failed .*\"Use AdoptRef only for the reference count starts from one\.\""] | 
 |  | 
 | void WontCompile() { | 
 |   AdoptRef(new InitialRefCountIsZero()); | 
 | } | 
 |  | 
 | #endif | 
 |  | 
 | }  // namespace base |