| 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 {} |
| ``` |