diff options
| author | Albert Larsan <74931857+albertlarsan68@users.noreply.github.com> | 2023-01-05 09:13:28 +0100 |
|---|---|---|
| committer | Albert Larsan <74931857+albertlarsan68@users.noreply.github.com> | 2023-01-11 09:32:08 +0000 |
| commit | cf2dff2b1e3fa55fa5415d524200070d0d7aacfe (patch) | |
| tree | 40a88d9a46aaf3e8870676eb2538378b75a263eb /tests/ui/explicit | |
| parent | ca855e6e42787ecd062d81d53336fe6788ef51a9 (diff) | |
| download | rust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.tar.gz rust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.zip | |
Move /src/test to /tests
Diffstat (limited to 'tests/ui/explicit')
| -rw-r--r-- | tests/ui/explicit/explicit-call-to-dtor.fixed | 16 | ||||
| -rw-r--r-- | tests/ui/explicit/explicit-call-to-dtor.rs | 16 | ||||
| -rw-r--r-- | tests/ui/explicit/explicit-call-to-dtor.stderr | 12 | ||||
| -rw-r--r-- | tests/ui/explicit/explicit-call-to-supertrait-dtor.fixed | 26 | ||||
| -rw-r--r-- | tests/ui/explicit/explicit-call-to-supertrait-dtor.rs | 26 | ||||
| -rw-r--r-- | tests/ui/explicit/explicit-call-to-supertrait-dtor.stderr | 12 | ||||
| -rw-r--r-- | tests/ui/explicit/explicit-self-lifetime-mismatch.rs | 20 | ||||
| -rw-r--r-- | tests/ui/explicit/explicit-self-lifetime-mismatch.stderr | 41 |
8 files changed, 169 insertions, 0 deletions
diff --git a/tests/ui/explicit/explicit-call-to-dtor.fixed b/tests/ui/explicit/explicit-call-to-dtor.fixed new file mode 100644 index 00000000000..91a4ca608da --- /dev/null +++ b/tests/ui/explicit/explicit-call-to-dtor.fixed @@ -0,0 +1,16 @@ +// run-rustfix +struct Foo { + x: isize +} + +impl Drop for Foo { + fn drop(&mut self) { + println!("kaboom"); + } +} + +fn main() { + let x = Foo { x: 3 }; + println!("{}", x.x); + drop(x); //~ ERROR explicit use of destructor method +} diff --git a/tests/ui/explicit/explicit-call-to-dtor.rs b/tests/ui/explicit/explicit-call-to-dtor.rs new file mode 100644 index 00000000000..0656871eb1b --- /dev/null +++ b/tests/ui/explicit/explicit-call-to-dtor.rs @@ -0,0 +1,16 @@ +// run-rustfix +struct Foo { + x: isize +} + +impl Drop for Foo { + fn drop(&mut self) { + println!("kaboom"); + } +} + +fn main() { + let x = Foo { x: 3 }; + println!("{}", x.x); + x.drop(); //~ ERROR explicit use of destructor method +} diff --git a/tests/ui/explicit/explicit-call-to-dtor.stderr b/tests/ui/explicit/explicit-call-to-dtor.stderr new file mode 100644 index 00000000000..f3c9bf6cccd --- /dev/null +++ b/tests/ui/explicit/explicit-call-to-dtor.stderr @@ -0,0 +1,12 @@ +error[E0040]: explicit use of destructor method + --> $DIR/explicit-call-to-dtor.rs:15:7 + | +LL | x.drop(); + | --^^^^-- + | | | + | | explicit destructor calls not allowed + | help: consider using `drop` function: `drop(x)` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0040`. diff --git a/tests/ui/explicit/explicit-call-to-supertrait-dtor.fixed b/tests/ui/explicit/explicit-call-to-supertrait-dtor.fixed new file mode 100644 index 00000000000..47c4c9f67b6 --- /dev/null +++ b/tests/ui/explicit/explicit-call-to-supertrait-dtor.fixed @@ -0,0 +1,26 @@ +// run-rustfix +struct Foo { + x: isize +} + +#[allow(drop_bounds)] +trait Bar: Drop { + fn blah(&self); +} + +impl Drop for Foo { + fn drop(&mut self) { + println!("kaboom"); + } +} + +impl Bar for Foo { + fn blah(&self) { + drop(self); //~ ERROR explicit use of destructor method + } +} + +fn main() { + let x = Foo { x: 3 }; + println!("{}", x.x); +} diff --git a/tests/ui/explicit/explicit-call-to-supertrait-dtor.rs b/tests/ui/explicit/explicit-call-to-supertrait-dtor.rs new file mode 100644 index 00000000000..c698de50c75 --- /dev/null +++ b/tests/ui/explicit/explicit-call-to-supertrait-dtor.rs @@ -0,0 +1,26 @@ +// run-rustfix +struct Foo { + x: isize +} + +#[allow(drop_bounds)] +trait Bar: Drop { + fn blah(&self); +} + +impl Drop for Foo { + fn drop(&mut self) { + println!("kaboom"); + } +} + +impl Bar for Foo { + fn blah(&self) { + self.drop(); //~ ERROR explicit use of destructor method + } +} + +fn main() { + let x = Foo { x: 3 }; + println!("{}", x.x); +} diff --git a/tests/ui/explicit/explicit-call-to-supertrait-dtor.stderr b/tests/ui/explicit/explicit-call-to-supertrait-dtor.stderr new file mode 100644 index 00000000000..7f5106eb57e --- /dev/null +++ b/tests/ui/explicit/explicit-call-to-supertrait-dtor.stderr @@ -0,0 +1,12 @@ +error[E0040]: explicit use of destructor method + --> $DIR/explicit-call-to-supertrait-dtor.rs:19:14 + | +LL | self.drop(); + | -----^^^^-- + | | | + | | explicit destructor calls not allowed + | help: consider using `drop` function: `drop(self)` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0040`. diff --git a/tests/ui/explicit/explicit-self-lifetime-mismatch.rs b/tests/ui/explicit/explicit-self-lifetime-mismatch.rs new file mode 100644 index 00000000000..a9a6f50fb8e --- /dev/null +++ b/tests/ui/explicit/explicit-self-lifetime-mismatch.rs @@ -0,0 +1,20 @@ +struct Foo<'a,'b> { + x: &'a isize, + y: &'b isize, +} + +impl<'a,'b> Foo<'a,'b> { + fn bar(self: + Foo<'b,'a> + //~^ ERROR mismatched `self` parameter type + //~| expected struct `Foo<'a, 'b>` + //~| found struct `Foo<'b, 'a>` + //~| lifetime mismatch + //~| ERROR mismatched `self` parameter type + //~| expected struct `Foo<'a, 'b>` + //~| found struct `Foo<'b, 'a>` + //~| lifetime mismatch + ) {} +} + +fn main() {} diff --git a/tests/ui/explicit/explicit-self-lifetime-mismatch.stderr b/tests/ui/explicit/explicit-self-lifetime-mismatch.stderr new file mode 100644 index 00000000000..d5ffa8f1b2f --- /dev/null +++ b/tests/ui/explicit/explicit-self-lifetime-mismatch.stderr @@ -0,0 +1,41 @@ +error[E0308]: mismatched `self` parameter type + --> $DIR/explicit-self-lifetime-mismatch.rs:8:12 + | +LL | Foo<'b,'a> + | ^^^^^^^^^^ lifetime mismatch + | + = note: expected struct `Foo<'a, 'b>` + found struct `Foo<'b, 'a>` +note: the lifetime `'b` as defined here... + --> $DIR/explicit-self-lifetime-mismatch.rs:6:9 + | +LL | impl<'a,'b> Foo<'a,'b> { + | ^^ +note: ...does not necessarily outlive the lifetime `'a` as defined here + --> $DIR/explicit-self-lifetime-mismatch.rs:6:6 + | +LL | impl<'a,'b> Foo<'a,'b> { + | ^^ + +error[E0308]: mismatched `self` parameter type + --> $DIR/explicit-self-lifetime-mismatch.rs:8:12 + | +LL | Foo<'b,'a> + | ^^^^^^^^^^ lifetime mismatch + | + = note: expected struct `Foo<'a, 'b>` + found struct `Foo<'b, 'a>` +note: the lifetime `'a` as defined here... + --> $DIR/explicit-self-lifetime-mismatch.rs:6:6 + | +LL | impl<'a,'b> Foo<'a,'b> { + | ^^ +note: ...does not necessarily outlive the lifetime `'b` as defined here + --> $DIR/explicit-self-lifetime-mismatch.rs:6:9 + | +LL | impl<'a,'b> Foo<'a,'b> { + | ^^ + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0308`. |
