mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[interop][SwiftToCxx] incorporate argument labels into Stdlib API names in C++
This allows easier use and more wider API exposure from the Swift stdlib In the future, all functions and method should incorporate argument labels, but it's not yet clear how
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
// RUN: %empty-directory(%t)
|
||||
// RUN: split-file %s %t
|
||||
|
||||
// RUN: %target-swift-frontend -typecheck %t/print-string.swift -typecheck -module-name Stringer -enable-experimental-cxx-interop -emit-clang-header-path %t/Stringer.h
|
||||
|
||||
// RUN: %target-interop-build-clangxx -std=gnu++20 -c %t/string-conversions.cpp -I %t -o %t/swift-stdlib-execution.o
|
||||
// RUN: %target-build-swift %t/print-string.swift -o %t/swift-stdlib-execution -Xlinker %t/swift-stdlib-execution.o -module-name Stringer -Xfrontend -entry-point-function-name -Xfrontend swiftMain %target-cxx-lib
|
||||
// RUN: %target-codesign %t/swift-stdlib-execution
|
||||
// RUN: %target-run %t/swift-stdlib-execution | %FileCheck %s
|
||||
|
||||
// REQUIRES: executable_test
|
||||
|
||||
//--- print-string.swift
|
||||
|
||||
@_expose(Cxx)
|
||||
public func printString(_ s: String) {
|
||||
print("'''\(s)'''")
|
||||
}
|
||||
|
||||
//--- string-conversions.cpp
|
||||
|
||||
#include <cassert>
|
||||
#include "Stringer.h"
|
||||
|
||||
int main() {
|
||||
using namespace Swift;
|
||||
using namespace Stringer;
|
||||
|
||||
{
|
||||
auto s = String("Hello world");
|
||||
assert(s.getCount() == 11);
|
||||
printString(s);
|
||||
s.append(String("!test"));
|
||||
printString(s);
|
||||
printString(s.lowercased());
|
||||
printString(s.uppercased());
|
||||
}
|
||||
// CHECK: '''Hello world'''
|
||||
// CHECK: '''Hello world!test'''
|
||||
// CHECK: '''hello world!test'''
|
||||
// CHECK: '''HELLO WORLD!TEST'''
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user