diff options
Diffstat (limited to 'src/test/ui/coherence/const-generics-orphan-check-ok.rs')
-rw-r--r-- | src/test/ui/coherence/const-generics-orphan-check-ok.rs | 28 |
1 files changed, 0 insertions, 28 deletions
diff --git a/src/test/ui/coherence/const-generics-orphan-check-ok.rs b/src/test/ui/coherence/const-generics-orphan-check-ok.rs deleted file mode 100644 index 217e8aed2..000000000 --- a/src/test/ui/coherence/const-generics-orphan-check-ok.rs +++ /dev/null @@ -1,28 +0,0 @@ -// check-pass -// aux-build:trait-with-const-param.rs -extern crate trait_with_const_param; -use trait_with_const_param::*; - -// Trivial case, const param after local type. -struct Local1; -impl<const N: usize, T> Trait<N, T> for Local1 {} - -// Concrete consts behave the same as foreign types, -// so this also trivially works. -impl Trait<3, Local1> for i32 {} - -// This case isn't as trivial as we would forbid type -// parameters here, we do allow const parameters though. -// -// The reason that type parameters are forbidden for -// `impl<T> Trait<T, LocalInA> for i32 {}` is that another -// downstream crate can add `impl<T> Trait<LocalInB, T> for i32`. -// As these two impls would overlap we forbid any impls which -// have a type parameter in front of a local type. -// -// With const parameters this issue does not exist as there are no -// constants local to another downstream crate. -struct Local2; -impl<const N: usize> Trait<N, Local2> for i32 {} - -fn main() {} |