Files
swift-mirror/test/Interop/Cxx/stdlib/overlay/custom-sequence-module-interface.swift
Nate CookandElsa Keirouz fbc2a41fe4 Enable BorrowingForLoop and BorrowingSequence flags by default (#90545)
This PR converts these two experimental feature flags to regular
language flags – includes #90017.

Co-authored-by: Elsa Keirouz <e_keirouz@apple.com>
2026-07-10 23:18:55 -05:00

76 lines
3.5 KiB
Swift

// RUN: %target-swift-ide-test -print-module -module-to-print=CustomSequence -source-filename=x -I %S/Inputs -cxx-interoperability-mode=default -module-cache-path %t | %FileCheck %s
// CHECK: struct SimpleSequence : CxxConvertibleToCollection, CxxIterable {
// CHECK: typealias Element = ConstIterator.Pointee
// CHECK: typealias RawIterator = ConstIterator
// CHECK: typealias BorrowingIterator = CxxBorrowingIterator<SimpleSequence>
// CHECK: typealias Iterator = CxxIterator<SimpleSequence>
// CHECK: }
// CHECK: struct SimpleSequenceWithOutOfLineEqualEqual : CxxConvertibleToCollection, CxxIterable {
// CHECK: typealias Element = ConstIteratorOutOfLineEq.Pointee
// CHECK: typealias RawIterator = ConstIteratorOutOfLineEq
// CHECK: typealias BorrowingIterator = CxxBorrowingIterator<SimpleSequenceWithOutOfLineEqualEqual>
// CHECK: typealias Iterator = CxxIterator<SimpleSequenceWithOutOfLineEqualEqual>
// CHECK: }
// CHECK: struct SimpleArrayWrapperNullableIterators : CxxConvertibleToCollection, CxxIterable {
// CHECK: typealias Element = Optional<UnsafePointer<Int32>>.Pointee
// CHECK: typealias RawIterator = UnsafePointer<Int32>?
// CHECK: typealias BorrowingIterator = CxxBorrowingIterator<SimpleArrayWrapperNullableIterators>
// CHECK: typealias Iterator = CxxIterator<SimpleArrayWrapperNullableIterators>
// CHECK: }
// CHECK: struct SimpleEmptySequence : CxxConvertibleToCollection, CxxIterable {
// CHECK: typealias Element = Optional<UnsafePointer<Int32>>.Pointee
// CHECK: typealias RawIterator = UnsafePointer<Int32>?
// CHECK: typealias BorrowingIterator = CxxBorrowingIterator<SimpleEmptySequence>
// CHECK: typealias Iterator = CxxIterator<SimpleEmptySequence>
// CHECK: }
// CHECK: struct HasMutatingBeginEnd {
// CHECK-NOT: typealias Element = ConstIterator.Pointee
// CHECK-NOT: typealias RawIterator = ConstIterator
// CHECK-NOT: typealias BorrowingIterator
// CHECK-NOT: typealias Iterator = CxxIterator<HasMutatingBeginEnd>
// CHECK: }
// CHECK: struct HasNoBeginMethod {
// CHECK-NOT: typealias Element
// CHECK-NOT: typealias RawIterator
// CHECK-NOT: typealias BorrowingIterator
// CHECK-NOT: typealias Iterator
// CHECK: }
// CHECK: struct HasNoEndMethod {
// CHECK-NOT: typealias Element
// CHECK-NOT: typealias RawIterator
// CHECK-NOT: typealias BorrowingIterator
// CHECK-NOT: typealias Iterator
// CHECK: }
// CHECK: struct HasBeginEndTypeMismatch {
// CHECK-NOT: typealias Element
// CHECK-NOT: typealias RawIterator
// CHECK-NOT: typealias BorrowingIterator
// CHECK-NOT: typealias Iterator
// CHECK: }
// CHECK: struct HasBeginEndReturnNonIterators {
// CHECK-NOT: typealias Element
// CHECK-NOT: typealias RawIterator
// CHECK-NOT: typealias BorrowingIterator
// CHECK-NOT: typealias Iterator
// CHECK: }
// CHECK: struct HasTemplatedIterator<CInt, NoDefinition<CInt>> {
// CHECK-NOT: typealias Element
// CHECK-NOT: typealias RawIterator
// CHECK-NOT: typealias BorrowingIterator
// CHECK-NOT: typealias Iterator
// CHECK: }
// CHECK: typealias HasUninstantiatableIterator = HasTemplatedIterator<CInt, NoDefinition<CInt>>
// CHECK: struct HasInputOutputConstIterator : CxxConvertibleToCollection, CxxIterable {
// CHECK: typealias Element = InputOutputConstIterator.Pointee
// CHECK: typealias RawIterator = HasInputOutputConstIterator.iterator
// CHECK: typealias BorrowingIterator = CxxBorrowingIterator<HasInputOutputConstIterator>
// CHECK: typealias Iterator = CxxIterator<HasInputOutputConstIterator>
// CHECK: }