There is an unofficial, unsupported feature that lets this work:
struct S: ChildP {
@_implements(ParentP, x)
var a: Int
@_implements(ChildP, x)
var b: String
}
It’s not an official part of the language (yet?) but it does exist and can be used.