// 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() {
	}
}

