Files
swift-mirror/test/Interop/Cxx/library-evolution/allow-cxx-api-in-evolving-libraries.swift
Daniel Rodríguez Troitiño ba68faaed5 [test] Mark tests that use experimental/upcoming features as such
Find all the usages of `--enable-experimental-feature` or
`--enable-upcoming-feature` in the tests and replace some of the
`REQUIRES: asserts` to use `REQUIRES: swift-feature-Foo` instead, which
should correctly apply to depending on the asserts/noasserts mode of the
toolchain for each feature.

Remove some comments that talked about enabling asserts since they don't
apply anymore (but I might had miss some).

All this was done with an automated script, so some formatting weirdness
might happen, but I hope I fixed most of those.

There might be some tests that were `REQUIRES: asserts` that might run
in `noasserts` toolchains now. This will normally be because their
feature went from experimental to upcoming/base and the tests were not
updated.
2024-11-02 11:46:46 -07:00

90 lines
1.7 KiB
Swift

// RUN: %empty-directory(%t)
// RUN: split-file %s %t
// RUN: %target-swift-frontend %t/test.swift -I %t/Inputs -typecheck -enable-library-evolution -enable-experimental-cxx-interop -disable-availability-checking -disable-implicit-cxx-module-import -enable-experimental-feature AssumeResilientCxxTypes -verify
// REQUIRES: swift_feature_AssumeResilientCxxTypes
//--- Inputs/module.modulemap
module CxxModule {
header "header.h"
requires cplusplus
}
//--- Inputs/header.h
class CxxStruct {
public:
int x; int y;
void method() const;
};
enum class CxxEnum {
A, B
};
template<class T>
class CxxTemplate {
T v;
};
using CxxTemplateInt = CxxTemplate<int>;
class
__attribute__((swift_attr("import_reference")))
__attribute__((swift_attr("retain:immortal")))
__attribute__((swift_attr("release:immortal")))
SingletonReference {
public:
SingletonReference(const SingletonReference &) = delete;
static SingletonReference * _Nonnull create();
void method();
};
CxxStruct createStruct();
void freeCxxFunction();
using BuiltinIntTypealis = int;
//--- test.swift
import CxxModule
public func usesBuiltinIntTypealis() -> BuiltinIntTypealis {
return 21
}
public func usesCxxSingletonReference() -> SingletonReference {
return SingletonReference.create()
}
public func usesCxxStruct(_ x: CxxStruct) {
}
public typealias EnumT = CxxEnum
extension CxxTemplateInt {
func testInternal() {
}
}
extension CxxTemplateInt {
public func testPublicExt() {
}
}
public func publicFuncInternalBody() {
let s = createStruct()
s.method()
}
@inlinable
public func publicFuncPublicBody() {
let value = SingletonReference.create()
value.method()
}