Files
swift-mirror/test/Interop/Cxx/stdlib/use-std-pair.swift
Egor Zhdan 1be7230876 [cxx-interop] Use C++17 standard by default
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
2024-04-02 16:23:32 +01:00

66 lines
2.0 KiB
Swift

// RUN: %target-run-simple-swift(-I %S/Inputs -Xfrontend -enable-experimental-cxx-interop)
// RUN: %target-run-simple-swift(-I %S/Inputs -cxx-interoperability-mode=swift-6)
// RUN: %target-run-simple-swift(-I %S/Inputs -cxx-interoperability-mode=upcoming-swift)
// RUN: %target-run-simple-swift(-I %S/Inputs -cxx-interoperability-mode=upcoming-swift -Xcc -std=c++14)
// RUN: %target-run-simple-swift(-I %S/Inputs -cxx-interoperability-mode=upcoming-swift -Xcc -std=c++17)
// RUN: %target-run-simple-swift(-I %S/Inputs -cxx-interoperability-mode=upcoming-swift -Xcc -std=c++20)
// REQUIRES: executable_test
import StdlibUnittest
import StdPair
import CxxStdlib
import Cxx
var StdPairTestSuite = TestSuite("StdPair")
StdPairTestSuite.test("StdPairInts.init") {
let pi = PairInts(first: 1, second: 2)
expectEqual(pi.first, 1)
expectEqual(pi.second, 2)
}
StdPairTestSuite.test("StdPairStrings.init") {
let ps = PairStrings(first: std.string(), second: std.string())
expectEqual(ps.first, std.string())
expectEqual(ps.second, std.string())
let ps2 = PairStrings(first: std.string("abc"), second: std.string("123"))
expectEqual(ps2.first, std.string("abc"))
expectEqual(ps2.second, std.string("123"))
}
StdPairTestSuite.test("StdPair.elements") {
var pi = getIntPair()
expectEqual(pi.first, -5)
expectEqual(pi.second, 12)
pi.first = 11
expectEqual(pi.first, 11)
expectEqual(pi.second, 12)
}
StdPairTestSuite.test("StdPair.ref.elements") {
let pi = getIntPairPointer().pointee
expectEqual(pi.first, 4)
expectEqual(pi.second, 9)
}
StdPairTestSuite.test("PairStructInt.elements") {
let pair = getPairStructInt(11)
expectEqual(pair.first.x, 22)
expectEqual(pair.first.y, -11)
expectEqual(pair.second, 11)
}
StdPairTestSuite.test("StdPair as CxxPair") {
func changeFirst(_ p: inout any CxxPair<CInt, CInt>) {
p.first = 123
}
var pair: any CxxPair<CInt, CInt> = getIntPair()
changeFirst(&pair)
expectEqual(pair.first, 123)
}
runAllTests()