Files
swift-mirror/test/Interop/Cxx/class/access/using-non-public-executable.swift
John Hui edc742013d [cxx-interop] Make experimental flag ImportNonPublicCxxMembers (#79728)
ClangImporter can now import non-public members as of be73254cdc and 66c2e2c52b, but doing so triggers some latent ClangImporter bugs in projects that don't use or need those non-public members.

This patch introduces a new experimental feature flag, ImportNonPublicCxxMembers, that guards against the importation of non-public members while we iron out those latent issues. Adopters of the SWIFT_PRIVATE_FILEID feature introduced in bdf22948ce can enable this flag to opt into importing private members they wish to access from Swift.

rdar://145569473
2025-03-04 13:31:46 -05:00

42 lines
1.4 KiB
Swift

// RUN: %target-run-simple-swift(-I %S/Inputs/ -Xfrontend -cxx-interoperability-mode=default -enable-experimental-feature ImportNonPublicCxxMembers)
// REQUIRES: executable_test
// REQUIRES: swift_feature_ImportNonPublicCxxMembers
import StdlibUnittest
import UsingNonPublic
var Suite = TestSuite("Using Base methods")
Suite.test("PublUser: using statements with public inheritance") {
let p = PublUser()
expectEqual(p.publUsingPubl(), Return.publUsingPubl)
expectEqual(p.publUsingProt(), Return.publUsingProt)
expectEqual(p.omitUsingPubl(), Return.omitUsingPubl)
}
Suite.test("ProtUser: using statements with protected inheritance") {
let p = ProtUser()
expectEqual(p.publUsingPubl(), Return.publUsingPubl)
expectEqual(p.publUsingProt(), Return.publUsingProt)
}
Suite.test("PrivUser: using statements with private inheritance") {
let p = PrivUser()
expectEqual(p.publUsingPubl(), Return.publUsingPubl)
expectEqual(p.publUsingProt(), Return.publUsingProt)
}
Suite.test("PublPrivUser: inheriting using statements") {
let p = PublPrivUser()
expectEqual(p.publUsingPubl(), Return.publUsingPubl)
expectEqual(p.publUsingProt(), Return.publUsingProt)
}
Suite.test("PrivUserPubl: using inherited members") {
let p = PrivUserPubl()
expectEqual(p.publUsingPubl(), Return.publUsingPubl)
expectEqual(p.publUsingProt(), Return.publUsingProt)
}
runAllTests()