# \[Pitch\] Opaque parameter types

**URL:** <https://forums.swift.org/t/pitch-opaque-parameter-types/54914>\
**Category:** Pitches\
**Created:** [January 27, 2022, 7:38pm UTC](https://forums.swift.org/t/pitch-opaque-parameter-types/54914 "2022-01-27T19:38:56Z")\
**Posts on this page:** 1\
**Showing post:** 21

<div class="post-metadata">

**Author:** ![hborla](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/hborla/32/27563_2.png) [@hborla](https://forums.swift.org/u/hborla)\
**Post date:** [January 28, 2022, 4:05am UTC](https://forums.swift.org/t/pitch-opaque-parameter-types/54914/21 "2022-01-28T04:05:35Z")

</div>

> [@DevAndArtist](#):
>
> So the proposal puts the `Protocol<...>` feature into the "Future direction" bucket. Yet it already implements this under the hood?! Please DO NOT make this feature available in the public without a proper evolution process.

The "primary associated type" feature is implemented behind an experimental frontend flag, just like the current implementation of opaque parameters has been merged behind a different experimental frontend flag. Both features have been pitched separately, but yes, there are test cases that use these experimental features together. Each feature will, of course, go through the Swift Evolution process.

> [@DevAndArtist](#):
>
> Sure the feature is hiding behind the private `@_primaryAssociatedType` attribute, but it's not hard to find it and actually start using it. As soon as someone used it people start arguing that we have to keep it because there is code that relies on it. That's not a great way to sneak this feature in.

No features are being "sneaked in". You cannot use `@_primaryAssociatedType` without also enabling the experimental compiler flag.

---

_[View the full topic](https://forums.swift.org/t/pitch-opaque-parameter-types/54914)._
