mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
StdlibUnitest is the preferred system for testing that a certain piece of code crashes. It's also the only way to get this test to pass when run on an Android host device, since otherwise the device test runner exits before confirming the output via FileCheck.
58 lines
1.1 KiB
Swift
58 lines
1.1 KiB
Swift
// RUN: rm -rf %t
|
|
// RUN: mkdir -p %t
|
|
|
|
// We compile with -O (optimizations) and -disable-access-control (which
|
|
// allows use to "call" methods that are removed by dead code elimination).
|
|
// RUN: %target-build-swift %S/Inputs/report_dead_method_call/main.swift %s -O -Xfrontend -disable-access-control -o %t/report_dead_method_call
|
|
|
|
// The private, unused methods are optimized away. The test calls these
|
|
// methods anyway (since it has overridden the access control), so we
|
|
// expect them to produce "fatal error: call of deleted method" when run.
|
|
// RUN: %target-run %t/report_dead_method_call
|
|
// REQUIRES: executable_test
|
|
|
|
private protocol PrivateProto {
|
|
func abc()
|
|
}
|
|
|
|
struct PrivateStructC : PrivateProto {
|
|
func abc() {
|
|
}
|
|
}
|
|
|
|
struct Container {
|
|
|
|
private var p: PrivateProto = PrivateStructC()
|
|
}
|
|
|
|
@inline(never)
|
|
func callProto() {
|
|
testProto(Container())
|
|
}
|
|
|
|
private class Base {
|
|
func def() {
|
|
}
|
|
}
|
|
|
|
private class Derived : Base {
|
|
override func def() {
|
|
}
|
|
}
|
|
|
|
struct ClassContainer {
|
|
|
|
private var p: Base = Derived()
|
|
}
|
|
|
|
@inline(never)
|
|
func callClass() {
|
|
testClass(ClassContainer())
|
|
}
|
|
|
|
public class PublicBase {
|
|
private func ghi() {
|
|
}
|
|
}
|
|
|