Test.extension.foo(a: Bool = true)
isn't considered a witness for Test.foo()
. You'll get the same error if you did:
struct S: Test {} // Type 'S' does not conform to protocol 'Test'
although I think it would be reasonable to allow functions with default arguments to satisfy protocol requirements (as I mentioned in the Protocol Witness Matching Manifesto).