fix(rustc_typeck): produce better errors for dyn auto trait
Fixes #85026
This commit is contained in:
30
compiler/rustc_error_codes/src/error_codes/E0785.md
Normal file
30
compiler/rustc_error_codes/src/error_codes/E0785.md
Normal file
@@ -0,0 +1,30 @@
|
||||
An inherent `impl` was written on a dyn auto trait.
|
||||
|
||||
Erroneous code example:
|
||||
|
||||
```compile_fail,E0785
|
||||
#![feature(auto_traits)]
|
||||
|
||||
auto trait AutoTrait {}
|
||||
|
||||
impl dyn AutoTrait {}
|
||||
```
|
||||
|
||||
Dyn objects allow any number of auto traits, plus at most one non-auto trait.
|
||||
The non-auto trait becomes the "principal trait".
|
||||
|
||||
When checking if an impl on a dyn trait is coherent, the principal trait is
|
||||
normally the only one considered. Since the erroneous code has no principal
|
||||
trait, it cannot be implemented at all.
|
||||
|
||||
Working example:
|
||||
|
||||
```
|
||||
#![feature(auto_traits)]
|
||||
|
||||
trait PrincipalTrait {}
|
||||
|
||||
auto trait AutoTrait {}
|
||||
|
||||
impl dyn (PrincipalTrait + AutoTrait + Send) {}
|
||||
```
|
||||
Reference in New Issue
Block a user