OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 not_blink { | 5 namespace not_blink { |
6 | 6 |
7 void function(int x) {} | 7 void function(int x) {} |
8 | 8 |
9 class Class { | 9 class Class { |
10 public: | 10 public: |
11 void method() {} | 11 void method() {} |
12 template <typename T> | 12 template <typename T> |
13 void methodTemplate(T) {} | 13 void methodTemplate(T) {} |
14 template <typename T> | 14 template <typename T> |
15 static void staticMethodTemplate(T) {} | 15 static void staticMethodTemplate(T) {} |
16 }; | 16 }; |
17 | 17 |
18 template <typename T> | 18 template <typename T> |
19 void functionTemplate(T x) {} | 19 void functionTemplate(T x) {} |
20 | 20 |
| 21 template <typename T = Class> |
| 22 void functionTemplate2() { |
| 23 T::staticMethodTemplate(123); |
| 24 } |
| 25 |
| 26 template <typename T = Class> |
| 27 class TemplatedClass { |
| 28 public: |
| 29 void anotherMethod() { T::staticMethodTemplate(123); } |
| 30 }; |
| 31 |
21 } // not_blink | 32 } // not_blink |
22 | 33 |
23 namespace blink { | 34 namespace blink { |
24 | 35 |
25 template <typename T, int number> | 36 template <typename T, int number> |
26 void F() { | 37 void F() { |
27 // We don't assert on this, and we don't end up considering it a const for | 38 // We don't assert on this, and we don't end up considering it a const for |
28 // now. | 39 // now. |
29 const int maybe_a_const = sizeof(T); | 40 const int maybe_a_const = sizeof(T); |
30 const int is_a_const = number; | 41 const int is_a_const = number; |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 Class c; | 144 Class c; |
134 c.f(x); | 145 c.f(x); |
135 // Non-Blink should stay the same. | 146 // Non-Blink should stay the same. |
136 not_blink::Class c2; | 147 not_blink::Class c2; |
137 c2.method(x); | 148 c2.method(x); |
138 } | 149 } |
139 }; | 150 }; |
140 | 151 |
141 } // namespace test_template_arg_is_method_template_in_member_context | 152 } // namespace test_template_arg_is_method_template_in_member_context |
142 | 153 |
| 154 namespace test_new_array_bug { |
| 155 |
| 156 class PartitionAllocator { |
| 157 public: |
| 158 static void method() {} |
| 159 }; |
| 160 |
| 161 template <typename Allocator = PartitionAllocator> |
| 162 class Vector { |
| 163 public: |
| 164 // https://crbug.com/584117: |method| below should be renamed to |Method|. |
| 165 // |Allocator::method| is a CXXDependentScopeMemberExpr. |
| 166 void anotherMethod() { Allocator::method(); } |
| 167 }; |
| 168 |
| 169 template <typename Allocator = PartitionAllocator> |
| 170 void test() { |
| 171 // https://crbug.com/584117: |method| below should be renamed to |Method|. |
| 172 // |Allocator::method| is a DependentScopeDeclRefExpr. |
| 173 Allocator::method(); |
| 174 } |
| 175 |
| 176 } // namespace test_new_array_bug |
| 177 |
143 } // namespace blink | 178 } // namespace blink |
OLD | NEW |