// RUN: %target-run-simple-swift // REQUIRES: executable_test import StdlibUnittest import DifferentiationUnittest var ExistentialTests = TestSuite("Existential") protocol A { @differentiable(reverse, wrt: x) func a(_ x: Tracked) -> Tracked } func b(g: A) -> Tracked { return gradient(at: 3) { x in g.a(x) } } struct B : A { @differentiable(reverse, wrt: x) func a(_ x: Tracked) -> Tracked { return x * 5 } } ExistentialTests.testWithLeakChecking("Existential method VJP") { expectEqual(5.0, b(g: B())) } runAllTests()