Files
swift-mirror/test/Interop/Cxx/class/print-simple-structs.swift
susmonteiro d81d6547ba [cxx-interop] Fix metadata mismatch regarding fields of structs
In https://github.com/swiftlang/swift/pull/78467 and https://github.com/swiftlang/swift/pull/78961, we stopped emitting metadata for private C++ fields. However, this created a mismatch between the fields emitted and the number of fields + their offsets in the StructDescriptor.

rdar://147263490
(cherry picked from commit 72b13b3b48)
2025-05-23 11:16:09 +01:00

38 lines
936 B
Swift

// RUN: %target-run-simple-swift(-cxx-interoperability-mode=default -Xfrontend -disable-availability-checking -I %S/Inputs) | %FileCheck %s
// REQUIRES: executable_test
import SimpleStructs
func printCxxStructPrivateFields() {
let s = HasPrivateFieldsOnly(1, 2)
print(s)
}
func printCxxStructPublicFields() {
let s = HasPublicFieldsOnly(1, 2)
print(s)
}
func printCxxStructPrivatePublicProtectedFields() {
let s = HasPrivatePublicProtectedFields(1, 2, 3, 4, 5, 6)
print(s)
}
func printCxxStructNested() {
let s = Outer()
print(s)
}
printCxxStructPrivateFields()
// CHECK: HasPrivateFieldsOnly()
printCxxStructPublicFields()
// CHECK: HasPublicFieldsOnly(publ1: 1, publ2: 2)
printCxxStructPrivatePublicProtectedFields()
// CHECK: HasPrivatePublicProtectedFields(publ1: 2, publ2: 6)
printCxxStructNested()
// CHECK: Outer(publStruct: {{.*}}.HasPrivatePublicProtectedFields(publ1: 8, publ2: 12))