File tree Expand file tree Collapse file tree 2 files changed +40
-0
lines changed
test/Interop/Cxx/stdlib/overlay Expand file tree Collapse file tree 2 files changed +40
-0
lines changed Original file line number Diff line number Diff line change @@ -259,6 +259,29 @@ struct HasCustomRACIteratorTag {
259
259
}
260
260
};
261
261
262
+ struct HasCustomInheritedRACIteratorTag {
263
+ struct CustomTag0 : public std ::random_access_iterator_tag {};
264
+ using CustomTag1 = CustomTag0;
265
+ struct CustomTag2 : public CustomTag1 {};
266
+ using CustomTag3 = CustomTag2;
267
+ using CustomTag4 = CustomTag3;
268
+
269
+ int value;
270
+ using iterator_category = CustomTag4;
271
+ const int &operator *() const { return value; }
272
+ HasCustomInheritedRACIteratorTag &operator ++() {
273
+ value++;
274
+ return *this ;
275
+ }
276
+ void operator +=(int x) { value += x; }
277
+ int operator -(const HasCustomInheritedRACIteratorTag &x) const {
278
+ return value - x.value ;
279
+ }
280
+ bool operator ==(const HasCustomInheritedRACIteratorTag &other) const {
281
+ return value == other.value ;
282
+ }
283
+ };
284
+
262
285
struct HasCustomIteratorTagInline {
263
286
struct iterator_category : public std ::input_iterator_tag {};
264
287
Original file line number Diff line number Diff line change 66
66
// CHECK: static func == (lhs: HasCustomRACIteratorTag, other: HasCustomRACIteratorTag) -> Bool
67
67
// CHECK: }
68
68
69
+ // CHECK: struct HasCustomInheritedRACIteratorTag : UnsafeCxxRandomAccessIterator, UnsafeCxxInputIterator {
70
+ // CHECK: func successor() -> HasCustomInheritedRACIteratorTag
71
+ // CHECK: var pointee: Int32 { get }
72
+ // CHECK: typealias Pointee = Int32
73
+ // CHECK: typealias Distance = Int32
74
+ // CHECK: struct CustomTag0 {
75
+ // CHECK: init()
76
+ // CHECK: }
77
+ // CHECK: typealias CustomTag1 = HasCustomInheritedRACIteratorTag.CustomTag0
78
+ // CHECK: struct CustomTag2 {
79
+ // CHECK: init()
80
+ // CHECK: }
81
+ // CHECK: typealias CustomTag3 = HasCustomInheritedRACIteratorTag.CustomTag2
82
+ // CHECK: typealias CustomTag4 = HasCustomInheritedRACIteratorTag.CustomTag3
83
+ // CHECK: typealias iterator_category = HasCustomInheritedRACIteratorTag.CustomTag4
84
+ // CHECK: }
85
+
69
86
// CHECK: struct HasCustomIteratorTagInline : UnsafeCxxInputIterator {
70
87
// CHECK: func successor() -> HasCustomIteratorTagInline
71
88
// CHECK: var pointee: Int32 { get }
You can’t perform that action at this time.
0 commit comments