diff options
| author | David Tolnay <dtolnay@gmail.com> | 2024-12-29 10:56:36 -0800 |
|---|---|---|
| committer | David Tolnay <dtolnay@gmail.com> | 2024-12-29 11:03:06 -0800 |
| commit | adaa756b555f751201440bca4ba65fc9b5691ace (patch) | |
| tree | d73ae68e926985a7fce75585c4e670b81f912b66 | |
| parent | 64feb9b502a42d23bbc6c49065c3876ef23efa31 (diff) | |
| download | rust-adaa756b555f751201440bca4ba65fc9b5691ace.tar.gz rust-adaa756b555f751201440bca4ba65fc9b5691ace.zip | |
Add more ranges parsing tests
--- stderr -------------------------------
error: expected expression, found `..`
--> tests/ui/parser/ranges-precedence.rs:75:12
|
LL | ($e:expr) => {};
| ------- while parsing argument for this `expr` macro fragment
LL | }
LL | expr!(!..0);
| ^^ expected expression
error: expected expression, found `..`
--> tests/ui/parser/ranges-precedence.rs:76:12
|
LL | ($e:expr) => {};
| ------- while parsing argument for this `expr` macro fragment
...
LL | expr!(-..0);
| ^^ expected expression
error: expected expression, found `..`
--> tests/ui/parser/ranges-precedence.rs:77:12
|
LL | ($e:expr) => {};
| ------- while parsing argument for this `expr` macro fragment
...
LL | expr!(*..0);
| ^^ expected expression
error: aborting due to 3 previous errors
------------------------------------------
| -rw-r--r-- | tests/ui/parser/ranges-precedence.rs | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/tests/ui/parser/ranges-precedence.rs b/tests/ui/parser/ranges-precedence.rs index 14dd6488ff2..783799f7099 100644 --- a/tests/ui/parser/ranges-precedence.rs +++ b/tests/ui/parser/ranges-precedence.rs @@ -1,7 +1,8 @@ //@ run-pass +//@ edition: 2021 // Test that the precedence of ranges is correct - +use core::ops::{Add, RangeTo}; struct Foo { foo: usize, @@ -11,6 +12,13 @@ impl Foo { fn bar(&self) -> usize { 5 } } +impl Add<RangeTo<usize>> for Foo { + type Output = usize; + fn add(self, range: RangeTo<usize>) -> Self::Output { + self.foo + range.end + } +} + fn main() { let x = 1+3..4+5; assert_eq!(x, (4..9)); @@ -49,4 +57,22 @@ fn main() { let y = ..; assert_eq!(y, (..)); + + let reference = &..0; + assert_eq!(*reference, ..0); + let reference2 = &&..0; + assert_eq!(**reference2, ..0); + + let closure = || ..0; + assert_eq!(closure(), ..0); + + let sum = Foo { foo: 3 } + ..4; + assert_eq!(sum, 7); + + macro_rules! expr { + ($e:expr) => {}; + } + expr!(!..0); + expr!(-..0); + expr!(*..0); } |
