Support ?Trait bounds in supertraits and dyn Trait under a feature gate
This patch allows `maybe` polarity bounds under a feature gate. The only language change here is that corresponding hard errors are replaced by feature gates. Example:
```rust
#![feature(allow_maybe_polarity)]
...
trait Trait1 : ?Trait { ... } // ok
fn foo(_: Box<(dyn Trait2 + ?Trait)>) {} // ok
fn bar<T: ?Sized + ?Trait>(_: &T) {} // ok
```
Maybe bounds still don't do anything (except for `Sized` trait), however this patch will allow us to [experiment with default auto traits](https://github.com/rust-lang/rust/pull/120706#issuecomment-1934006762).
This is a part of the [MCP: Low level components for async drop](https://github.com/rust-lang/compiler-team/issues/727)
|
||
|---|---|---|
| .. | ||
| analyze_source_file | ||
| edit_distance | ||
| source_map | ||
| symbol | ||
| analyze_source_file.rs | ||
| caching_source_map_view.rs | ||
| def_id.rs | ||
| edit_distance.rs | ||
| edition.rs | ||
| fatal_error.rs | ||
| hygiene.rs | ||
| lib.rs | ||
| profiling.rs | ||
| source_map.rs | ||
| span_encoding.rs | ||
| symbol.rs | ||
| tests.rs | ||