diff options
| author | Michael Goulet <michael@errs.io> | 2022-01-07 10:26:17 -0800 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-01-12 08:28:41 -0800 |
| commit | 7bf0cb76710e723ac71257e04f4a1bfbbfc87c3c (patch) | |
| tree | 7dfcfefd8ae8010927902850d72cb92ac83bee13 | |
| parent | 9bf9fe07dc2775a8499326990a2fa4bc4af88f8f (diff) | |
| download | rust-7bf0cb76710e723ac71257e04f4a1bfbbfc87c3c.tar.gz rust-7bf0cb76710e723ac71257e04f4a1bfbbfc87c3c.zip | |
Add new tests, fix up old tests
| -rw-r--r-- | src/test/ui/autoref-autoderef/deref-into-array.rs | 17 | ||||
| -rw-r--r-- | src/test/ui/const-generics/deref-into-array-generic.rs | 27 |
2 files changed, 44 insertions, 0 deletions
diff --git a/src/test/ui/autoref-autoderef/deref-into-array.rs b/src/test/ui/autoref-autoderef/deref-into-array.rs new file mode 100644 index 00000000000..855a82d2f9c --- /dev/null +++ b/src/test/ui/autoref-autoderef/deref-into-array.rs @@ -0,0 +1,17 @@ +// check-pass + +struct Test<T>([T; 1]); + +impl<T> std::ops::Deref for Test<T> { + type Target = [T; 1]; + + fn deref(&self) -> &[T; 1] { + &self.0 + } +} + +fn main() { + let out = Test([(); 1]); + let blah = out.len(); + println!("{}", blah); +} diff --git a/src/test/ui/const-generics/deref-into-array-generic.rs b/src/test/ui/const-generics/deref-into-array-generic.rs new file mode 100644 index 00000000000..7d75af12bdf --- /dev/null +++ b/src/test/ui/const-generics/deref-into-array-generic.rs @@ -0,0 +1,27 @@ +// check-pass + +struct Test<T, const N: usize>([T; N]); + +impl<T: Copy + Default, const N: usize> Default for Test<T, N> { + fn default() -> Self { + Self([T::default(); N]) + } +} + +impl<T, const N: usize> std::ops::Deref for Test<T, N> { + type Target = [T; N]; + + fn deref(&self) -> &[T; N] { + &self.0 + } +} + +fn test() -> Test<u64, 16> { + let test = Test::default(); + println!("{}", test.len()); + test +} + +fn main() { + test(); +} |
