Skip to content

Commit 71c27a9

Browse files
authored
Merge pull request #75395 from swiftlang/egorzhdan/std-function-test
[cxx-interop] Add one more test for `std::function`
2 parents c21a3a9 + d7212ff commit 71c27a9

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

test/Interop/Cxx/stdlib/Inputs/std-function.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
#include <string>
66

77
using FunctionIntToInt = std::function<int(int)>;
8-
using FunctionStringToString = std::function<std::string(const std::string&)>;
8+
using FunctionStringToString = std::function<std::string(std::string)>;
9+
using FunctionStringToStringConstRef = std::function<std::string(const std::string&)>;
910

1011
inline FunctionIntToInt getIdentityFunction() {
1112
return [](int x) { return x; };
@@ -19,4 +20,8 @@ std::string invokeFunctionTwice(FunctionStringToString f, std::string s) {
1920
return f(f(s));
2021
}
2122

23+
std::string invokeFunctionTwiceConstRef(FunctionStringToStringConstRef f, std::string s) {
24+
return f(f(s));
25+
}
26+
2227
#endif // TEST_INTEROP_CXX_STDLIB_INPUTS_STD_FUNCTION_H

test/Interop/Cxx/stdlib/use-std-function.swift

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,16 @@ StdFunctionTestSuite.test("FunctionIntToInt init from closure and pass as parame
5757
expectEqual(222, res)
5858
}
5959

60+
StdFunctionTestSuite.test("FunctionStringToString init from closure and pass as parameter") {
61+
let res = invokeFunctionTwice(.init({ $0 + std.string("abc") }),
62+
std.string("prefix"))
63+
expectEqual(std.string("prefixabcabc"), res)
64+
}
65+
6066
// FIXME: assertion for address-only closure params (rdar://124501345)
61-
//StdFunctionTestSuite.test("FunctionStringToString init from closure and pass as parameter") {
62-
// let res = invokeFunctionTwice(.init({ $0 + std.string("abc") }),
63-
// std.string("prefix"))
67+
//StdFunctionTestSuite.test("FunctionStringToStringConstRef init from closure and pass as parameter") {
68+
// let res = invokeFunctionTwiceConstRef(.init({ $0 + std.string("abc") }),
69+
// std.string("prefix"))
6470
// expectEqual(std.string("prefixabcabc"), res)
6571
//}
6672
#endif

0 commit comments

Comments
 (0)