Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 namespace blink { | 5 namespace blink { |
| 6 | 6 |
| 7 // Note: do not add any copy or move constructors to this class: doing so will | 7 // Note: do not add any copy or move constructors to this class: doing so will |
| 8 // break test coverage that we don't clobber the class name by trying to emit | 8 // break test coverage that we don't clobber the class name by trying to emit |
| 9 // replacements for synthesized functions. | 9 // replacements for synthesized functions. |
| 10 class C { | 10 class C { |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 86 class TypeTrait2 { | 86 class TypeTrait2 { |
| 87 public: | 87 public: |
| 88 static const bool value = false; | 88 static const bool value = false; |
| 89 }; | 89 }; |
| 90 template <> | 90 template <> |
| 91 class TypeTrait2<void> { | 91 class TypeTrait2<void> { |
| 92 public: | 92 public: |
| 93 static const bool value = false; | 93 static const bool value = false; |
| 94 }; | 94 }; |
| 95 | 95 |
| 96 template <typename T, typename U> | |
|
dcheng
2016/09/01 21:04:22
Please add some comments to this test (e.g. what s
Łukasz Anforowicz
2016/09/01 21:39:45
Done.
| |
| 97 struct IsSubclass { | |
| 98 private: | |
| 99 typedef char YesType; | |
| 100 struct NoType { | |
| 101 char padding[8]; | |
| 102 }; | |
| 103 | |
| 104 static YesType SubclassCheck(U*); | |
| 105 static NoType SubclassCheck(...); | |
| 106 static T* t_; | |
| 107 | |
| 108 public: | |
| 109 static const bool value = sizeof(SubclassCheck(t_)) == sizeof(YesType); | |
| 110 }; | |
| 111 | |
| 112 template <typename U = void> | |
| 113 struct IsTraceableInCollection { | |
| 114 // Expanded from STATIC_ONLY(IsTraceableInCollection): | |
| 115 private: | |
| 116 IsTraceableInCollection() = delete; | |
| 117 IsTraceableInCollection(const IsTraceableInCollection&) = delete; | |
| 118 IsTraceableInCollection& operator=(const IsTraceableInCollection&) = delete; | |
| 119 void* operator new(unsigned long) = delete; | |
| 120 void* operator new(unsigned long, void*) = delete; | |
| 121 | |
| 122 public: | |
| 123 static const bool value = true; | |
| 124 }; | |
| 125 | |
| 96 }; // namespace WTF | 126 }; // namespace WTF |
| 97 | 127 |
| 98 void F() { | 128 void F() { |
| 99 // Test that references to a static field are correctly rewritten. | 129 // Test that references to a static field are correctly rewritten. |
| 100 blink::C::instance_count_++; | 130 blink::C::instance_count_++; |
| 101 // Force instantiation of a copy constructor for blink::C to make sure field | 131 // Force instantiation of a copy constructor for blink::C to make sure field |
| 102 // initializers for synthesized functions don't cause weird rewrites. | 132 // initializers for synthesized functions don't cause weird rewrites. |
| 103 blink::C c; | 133 blink::C c; |
| 104 blink::C c2 = c; | 134 blink::C c2 = c; |
| 105 | 135 |
| 106 bool b1 = WTF::TypeTrait1::value; | 136 bool b1 = WTF::TypeTrait1::value; |
| 107 bool b2 = WTF::TypeTrait2<void>::value; | 137 bool b2 = WTF::TypeTrait2<void>::value; |
| 108 } | 138 } |
| OLD | NEW |