Files
swift-mirror/test/Interop/Cxx/class/method/unsafe-projections.swift
zoecarver 474a7cd834 [cxx-interop] Only mark projections of self-contained types as unsafe.
Projections of trivial types and view types aren't unsafe. This matches what was described in the vision document.
2023-07-18 17:42:05 -07:00

56 lines
2.0 KiB
Swift

// RUN: %target-swift-ide-test -print-module -module-to-print=UnsafeProjections -I %S/Inputs -source-filename=x -enable-experimental-cxx-interop | %FileCheck %s
// CHECK: struct View {
// CHECK: func data() -> UnsafeMutableRawPointer!
// CHECK: func empty() -> UnsafeMutableRawPointer!
// CHECK: func name() -> std{{.*}}string
// CHECK: func nested() -> NestedSelfContained
// CHECK: }
// CHECK: struct SelfContained {
// CHECK: func name() -> std{{.*}}string
// CHECK: func selfContained() -> SelfContained
// CHECK: func nested() -> NestedSelfContained
// CHECK: func empty() -> Empty
// CHECK: func value() -> Int32
// CHECK: func __viewUnsafe() -> View
// CHECK: func __pointerUnsafe() -> UnsafeMutablePointer<Int32>!
// CHECK: }
// CHECK: struct NestedSelfContained {
// CHECK: func name() -> std{{.*}}string
// CHECK: func selfContained() -> SelfContained
// CHECK: func nested() -> NestedSelfContained
// CHECK: func empty() -> Empty
// CHECK: func value() -> Int32
// CHECK: func __viewUnsafe() -> View
// CHECK: func __pointerUnsafe() -> UnsafeMutablePointer<Int32>!
// CHECK: }
// CHECK: struct InheritSelfContained {
// CHECK: func name() -> std{{.*}}string
// CHECK: func selfContained() -> SelfContained
// CHECK: func nested() -> NestedSelfContained
// CHECK: func empty() -> Empty
// CHECK: func value() -> Int32
// CHECK: func __viewUnsafe() -> View
// CHECK: func __pointerUnsafe() -> UnsafeMutablePointer<Int32>!
// CHECK: }
// CHECK: struct ExplicitSelfContained {
// CHECK: func __pointerUnsafe() -> UnsafeMutableRawPointer!
// CHECK: func __viewUnsafe() -> View
// CHECK: }
// CHECK: struct Empty {
// CHECK: func empty() -> Empty
// CHECK: func pointer() -> UnsafeMutableRawPointer!
// CHECK: func selfContained() -> SelfContained
// CHECK: }
// CHECK: struct IntPair {
// CHECK: func first() -> Int32
// CHECK: func pointer() -> UnsafeMutableRawPointer!
// CHECK: func selfContained() -> SelfContained
// CHECK: }