Existential types don't have self-conformance, at least not yet. The topic was raised many times though (e.g. here).
You may want to take a look at Moving between any and some to fix your problem.
func flip(_ shape: some Shape) -> some Shape
will work.