It really depends what you mean by "parameterized suites." The topic has come up before, and I don't think we can universally agree on a definition of the term, let alone figure out how to implement it.
Based on your post here, I don't think "parameterized suites" is necessarily the right solution so much as something that sounds like it might be shoehornable. So I'm going to try to address this problem instead:
Hypothetically, if the following compiled, would it solve your problem?
@Suite protocol CommonTests {
@Test func f()
@Test func g()
}
extension CommonTests {
func f() { ... }
func g() { ... }
}
@Suite struct Tests1: CommonTests {
// inherits f() and g() automatically
}
As of right now, we can't build anything like the above because our current mechanism for emitting metadata into a binary doesn't let us specialize generic types such as any/some CommonTests at runtime. I'm working on replacing that mechanism with a new one that is more flexible and ought to let us perform that sort of protocol specialization.