mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
When we have both const and non-const version of a function, we import the non-cont version with the "Mutating" suffix. This logic, however, is redundant for static member functions as those can never be marked as "const" since they don't have a "self" or "this" to mutate. rdar://120858502
72 lines
2.0 KiB
Swift
72 lines
2.0 KiB
Swift
// RUN: %target-run-simple-swift(-I %S/Inputs/ -Xfrontend -enable-experimental-cxx-interop)
|
|
//
|
|
// REQUIRES: executable_test
|
|
|
|
import StdlibUnittest
|
|
import Methods
|
|
|
|
var CxxMethodTestSuite = TestSuite("CxxMethods")
|
|
|
|
CxxMethodTestSuite.test("() -> Void") {
|
|
var instance = HasMethods()
|
|
|
|
instance.nonConstMethod()
|
|
instance.nonConstMethod(5)
|
|
HasMethods.nonConstMethod(4.2) // Testing name collision
|
|
instance.constMethod()
|
|
HasMethods.constMethod(4.2) // Testing name collision
|
|
}
|
|
|
|
CxxMethodTestSuite.test("(Int) -> Int") {
|
|
var instance = HasMethods()
|
|
|
|
expectEqual(42, instance.nonConstPassThrough(42))
|
|
expectEqual(42, instance.constPassThrough(42))
|
|
}
|
|
|
|
CxxMethodTestSuite.test("(Int, Int) -> Int") {
|
|
var instance = HasMethods()
|
|
|
|
expectEqual(42, instance.nonConstSum(40, 2))
|
|
expectEqual(42, instance.constSum(40, 2))
|
|
}
|
|
|
|
CxxMethodTestSuite.test("(NonTrivialInWrapper, NonTrivialInWrapper) -> Int") {
|
|
var instance = HasMethods()
|
|
|
|
expectEqual(42, instance.nonConstSum(NonTrivialInWrapper(40), NonTrivialInWrapper(2)))
|
|
expectEqual(42, instance.constSum(NonTrivialInWrapper(40), NonTrivialInWrapper(2)))
|
|
}
|
|
|
|
CxxMethodTestSuite.test("(NonTrivialInWrapper, NonTrivialInWrapper) -> NonTrivialInWrapper") {
|
|
var instance = HasMethods()
|
|
|
|
expectEqual(42, instance.nonConstSumAsWrapper(NonTrivialInWrapper(40), NonTrivialInWrapper(2)).value)
|
|
expectEqual(42, instance.constSumAsWrapper(NonTrivialInWrapper(40), NonTrivialInWrapper(2)).value)
|
|
}
|
|
|
|
CxxMethodTestSuite.test("(Int) -> NonTrivialInWrapper") {
|
|
var instance = HasMethods()
|
|
|
|
expectEqual(42, instance.nonConstPassThroughAsWrapper(42).value)
|
|
expectEqual(42, instance.constPassThroughAsWrapper(42).value)
|
|
}
|
|
|
|
CxxMethodTestSuite.test("Constructor with ref params") {
|
|
let a = CInt(42)
|
|
let b = CInt(11)
|
|
var instance = ReferenceParams(a, b)
|
|
|
|
expectEqual(42, instance.a)
|
|
expectEqual(11, instance.b)
|
|
}
|
|
|
|
// Just make sure we don't crash
|
|
CxxMethodTestSuite.test("Static method with ref params") {
|
|
let a = CInt(42)
|
|
let b = CInt(11)
|
|
ReferenceParams.staticMethod(a, b)
|
|
}
|
|
|
|
runAllTests()
|