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 {
259259 }
260260};
261261
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+
262285struct HasCustomIteratorTagInline {
263286 struct iterator_category : public std ::input_iterator_tag {};
264287
Original file line number Diff line number Diff line change 6666// CHECK: static func == (lhs: HasCustomRACIteratorTag, other: HasCustomRACIteratorTag) -> Bool
6767// CHECK: }
6868
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+
6986// CHECK: struct HasCustomIteratorTagInline : UnsafeCxxInputIterator {
7087// CHECK: func successor() -> HasCustomIteratorTagInline
7188// CHECK: var pointee: Int32 { get }
You can’t perform that action at this time.
0 commit comments