mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Clang is using C++17 standard version by default since Clang 16. Swift’s ClangImporter should do the same, to make sure that clients who run clang and then swiftc without explicit std version see consistent behavior. rdar://125777068
55 lines
1.5 KiB
Swift
55 lines
1.5 KiB
Swift
// RUN: %target-run-simple-swift(-I %S/Inputs -Xfrontend -cxx-interoperability-mode=swift-6)
|
|
// RUN: %target-run-simple-swift(-I %S/Inputs -Xfrontend -cxx-interoperability-mode=upcoming-swift)
|
|
// RUN: %target-run-simple-swift(-I %S/Inputs -Xfrontend -cxx-interoperability-mode=upcoming-swift -Xcc -std=c++20)
|
|
//
|
|
// REQUIRES: executable_test
|
|
|
|
import StdlibUnittest
|
|
import StdOptional
|
|
import CxxStdlib
|
|
|
|
var StdOptionalTestSuite = TestSuite("StdOptional")
|
|
|
|
StdOptionalTestSuite.test("pointee") {
|
|
let nonNilOpt = getNonNilOptional()
|
|
let pointee = nonNilOpt.pointee
|
|
expectEqual(123, pointee)
|
|
|
|
#if !os(Linux) // crashes on Ubuntu 18.04 (rdar://113414160)
|
|
var modifiedOpt = getNilOptional()
|
|
modifiedOpt.pointee = 777
|
|
expectEqual(777, modifiedOpt.pointee)
|
|
#endif
|
|
}
|
|
|
|
StdOptionalTestSuite.test("std::optional => Swift.Optional") {
|
|
let nonNilOpt = getNonNilOptional()
|
|
let swiftOptional = Optional(fromCxx: nonNilOpt)
|
|
expectNotNil(swiftOptional)
|
|
expectEqual(123, swiftOptional!)
|
|
|
|
let nilOpt = getNilOptional()
|
|
let swiftNil = Optional(fromCxx: nilOpt)
|
|
expectNil(swiftNil)
|
|
}
|
|
|
|
StdOptionalTestSuite.test("std::optional hasValue/value") {
|
|
let nonNilOpt = getNonNilOptional()
|
|
expectTrue(nonNilOpt.hasValue)
|
|
expectEqual(123, nonNilOpt.value!)
|
|
|
|
let nilOpt = getNilOptional()
|
|
expectFalse(nilOpt.hasValue)
|
|
expectNil(nilOpt.value)
|
|
}
|
|
|
|
StdOptionalTestSuite.test("std::optional as ExpressibleByNilLiteral") {
|
|
let res1 = takesOptionalInt(nil)
|
|
expectFalse(res1)
|
|
|
|
let res2 = takesOptionalString(nil)
|
|
expectFalse(res2)
|
|
}
|
|
|
|
runAllTests()
|