diff --git a/libcxx/test/libcxx/vendor/apple/swift-interop.sh.cpp b/libcxx/test/libcxx/vendor/apple/swift-interop.sh.cpp new file mode 100755 index 0000000000000..87c6c80f62a7e --- /dev/null +++ b/libcxx/test/libcxx/vendor/apple/swift-interop.sh.cpp @@ -0,0 +1,21 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// This test requires access to the Swift compiler, which we assume is only available on Apple +// platforms for now. +// REQUIRES: buildhost=darwin + +// std::string basic test +// RUN: swiftc -cxx-interoperability-mode=default %S/swift-interop/string/main.swift -o %t.string.exe \ +// RUN: -Xcc -nostdinc++ -Xcc -nostdlib++ -Xcc -isystem -Xcc "%{include-dir}" +// RUN: %{exec} %t.string.exe + +// std::vector test with a modulemap +// RUN: swiftc -cxx-interoperability-mode=default %S/swift-interop/vector/main.swift -o %t.vector.exe \ +// RUN: -Xcc -nostdinc++ -Xcc -nostdlib++ -Xcc -isystem -Xcc "%{include-dir}" -Xcc -I -Xcc %S/swift-interop/vector +// RUN: %{exec} %t.vector.exe diff --git a/libcxx/test/libcxx/vendor/apple/swift-interop/string/main.swift b/libcxx/test/libcxx/vendor/apple/swift-interop/string/main.swift new file mode 100755 index 0000000000000..1b2e12f839ba7 --- /dev/null +++ b/libcxx/test/libcxx/vendor/apple/swift-interop/string/main.swift @@ -0,0 +1,13 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +import CxxStdlib + +let s: std.string = "abc123" + +for char in s { print(char) } diff --git a/libcxx/test/libcxx/vendor/apple/swift-interop/vector/header.h b/libcxx/test/libcxx/vendor/apple/swift-interop/vector/header.h new file mode 100644 index 0000000000000..de41747de0515 --- /dev/null +++ b/libcxx/test/libcxx/vendor/apple/swift-interop/vector/header.h @@ -0,0 +1,13 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include + +using VectorOfInt = std::vector; + +inline VectorOfInt getStdVector() { return {1, 2, 3}; } diff --git a/libcxx/test/libcxx/vendor/apple/swift-interop/vector/main.swift b/libcxx/test/libcxx/vendor/apple/swift-interop/vector/main.swift new file mode 100644 index 0000000000000..6ec3640881424 --- /dev/null +++ b/libcxx/test/libcxx/vendor/apple/swift-interop/vector/main.swift @@ -0,0 +1,13 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +import MyCxxDep // no explicit import of CxxStdlib + +let vec = getStdVector() + +for it in vec { print(it) } diff --git a/libcxx/test/libcxx/vendor/apple/swift-interop/vector/module.modulemap b/libcxx/test/libcxx/vendor/apple/swift-interop/vector/module.modulemap new file mode 100644 index 0000000000000..8dabb57126261 --- /dev/null +++ b/libcxx/test/libcxx/vendor/apple/swift-interop/vector/module.modulemap @@ -0,0 +1,4 @@ +module MyCxxDep { + header "header.h" + export * +}