summaryrefslogtreecommitdiffstats
path: root/tests/ui/offset-of
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-07 05:48:48 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-07 05:48:48 +0000
commitef24de24a82fe681581cc130f342363c47c0969a (patch)
tree0d494f7e1a38b95c92426f58fe6eaa877303a86c /tests/ui/offset-of
parentReleasing progress-linux version 1.74.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-ef24de24a82fe681581cc130f342363c47c0969a.tar.xz
rustc-ef24de24a82fe681581cc130f342363c47c0969a.zip
Merging upstream version 1.75.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/offset-of')
-rw-r--r--tests/ui/offset-of/offset-of-enum.rs9
-rw-r--r--tests/ui/offset-of/offset-of-enum.stderr40
-rw-r--r--tests/ui/offset-of/offset-of-output-type.stderr2
-rw-r--r--tests/ui/offset-of/offset-of-private.rs13
-rw-r--r--tests/ui/offset-of/offset-of-private.stderr22
5 files changed, 68 insertions, 18 deletions
diff --git a/tests/ui/offset-of/offset-of-enum.rs b/tests/ui/offset-of/offset-of-enum.rs
index d73505821..a2d6aace4 100644
--- a/tests/ui/offset-of/offset-of-enum.rs
+++ b/tests/ui/offset-of/offset-of-enum.rs
@@ -1,4 +1,4 @@
-#![feature(offset_of)]
+#![feature(offset_of, offset_of_enum)]
use std::mem::offset_of;
@@ -9,5 +9,10 @@ enum Alpha {
fn main() {
offset_of!(Alpha::One, 0); //~ ERROR expected type, found variant `Alpha::One`
- offset_of!(Alpha, Two.0); //~ ERROR no field `Two` on type `Alpha`
+ offset_of!(Alpha, One); //~ ERROR `One` is an enum variant; expected field at end of `offset_of`
+ offset_of!(Alpha, Two.0);
+ offset_of!(Alpha, Two.1); //~ ERROR no field named `1` on enum variant `Alpha::Two`
+ offset_of!(Alpha, Two.foo); //~ ERROR no field named `foo` on enum variant `Alpha::Two`
+ offset_of!(Alpha, NonExistent); //~ ERROR no variant named `NonExistent` found for enum `Alpha`
+ offset_of!(Beta, One); //~ ERROR cannot find type `Beta` in this scope
}
diff --git a/tests/ui/offset-of/offset-of-enum.stderr b/tests/ui/offset-of/offset-of-enum.stderr
index 6958d199f..7e7ad41f5 100644
--- a/tests/ui/offset-of/offset-of-enum.stderr
+++ b/tests/ui/offset-of/offset-of-enum.stderr
@@ -7,13 +7,41 @@ LL | offset_of!(Alpha::One, 0);
| not a type
| help: try using the variant's enum: `Alpha`
-error[E0609]: no field `Two` on type `Alpha`
+error[E0412]: cannot find type `Beta` in this scope
+ --> $DIR/offset-of-enum.rs:17:16
+ |
+LL | offset_of!(Beta, One);
+ | ^^^^ not found in this scope
+
+error[E0795]: `One` is an enum variant; expected field at end of `offset_of`
--> $DIR/offset-of-enum.rs:12:23
|
-LL | offset_of!(Alpha, Two.0);
- | ^^^
+LL | offset_of!(Alpha, One);
+ | ^^^ enum variant
+
+error[E0609]: no field named `1` on enum variant `Alpha::Two`
+ --> $DIR/offset-of-enum.rs:14:23
+ |
+LL | offset_of!(Alpha, Two.1);
+ | ^^^ - ...does not have this field
+ | |
+ | this enum variant...
+
+error[E0609]: no field named `foo` on enum variant `Alpha::Two`
+ --> $DIR/offset-of-enum.rs:15:23
+ |
+LL | offset_of!(Alpha, Two.foo);
+ | ^^^ --- ...does not have this field
+ | |
+ | this enum variant...
+
+error[E0599]: no variant named `NonExistent` found for enum `Alpha`
+ --> $DIR/offset-of-enum.rs:16:23
+ |
+LL | offset_of!(Alpha, NonExistent);
+ | ^^^^^^^^^^^ variant not found
-error: aborting due to 2 previous errors
+error: aborting due to 6 previous errors
-Some errors have detailed explanations: E0573, E0609.
-For more information about an error, try `rustc --explain E0573`.
+Some errors have detailed explanations: E0412, E0573, E0599, E0609, E0795.
+For more information about an error, try `rustc --explain E0412`.
diff --git a/tests/ui/offset-of/offset-of-output-type.stderr b/tests/ui/offset-of/offset-of-output-type.stderr
index 6133f3263..233d49876 100644
--- a/tests/ui/offset-of/offset-of-output-type.stderr
+++ b/tests/ui/offset-of/offset-of-output-type.stderr
@@ -42,7 +42,7 @@ error[E0308]: mismatched types
--> $DIR/offset-of-output-type.rs:19:5
|
LL | fn main() {
- | - expected `()` because of default return type
+ | - expected `()` because of default return type
...
LL | offset_of!(S, v)
| ^^^^^^^^^^^^^^^^ expected `()`, found `usize`
diff --git a/tests/ui/offset-of/offset-of-private.rs b/tests/ui/offset-of/offset-of-private.rs
index 6b1a16ba6..b7affdb79 100644
--- a/tests/ui/offset-of/offset-of-private.rs
+++ b/tests/ui/offset-of/offset-of-private.rs
@@ -1,4 +1,4 @@
-#![feature(offset_of)]
+#![feature(offset_of, offset_of_enum)]
use std::mem::offset_of;
@@ -8,13 +8,20 @@ mod m {
pub public: u8,
private: u8,
}
+
#[repr(C)]
pub struct FooTuple(pub u8, u8);
+
#[repr(C)]
struct Bar {
pub public: u8,
private: u8,
}
+
+ pub enum Baz {
+ Var1(Foo),
+ Var2(u64),
+ }
}
fn main() {
@@ -25,4 +32,8 @@ fn main() {
offset_of!(m::Bar, public); //~ ERROR struct `Bar` is private
offset_of!(m::Bar, private); //~ ERROR struct `Bar` is private
//~| ERROR field `private` of struct `Bar` is private
+
+ offset_of!(m::Baz, Var1.0.public);
+ offset_of!(m::Baz, Var1.0.private); //~ ERROR field `private` of struct `Foo` is private
+ offset_of!(m::Baz, Var2.0);
}
diff --git a/tests/ui/offset-of/offset-of-private.stderr b/tests/ui/offset-of/offset-of-private.stderr
index 0674b58f8..930e30e63 100644
--- a/tests/ui/offset-of/offset-of-private.stderr
+++ b/tests/ui/offset-of/offset-of-private.stderr
@@ -1,46 +1,52 @@
error[E0603]: struct `Bar` is private
- --> $DIR/offset-of-private.rs:25:19
+ --> $DIR/offset-of-private.rs:32:19
|
LL | offset_of!(m::Bar, public);
| ^^^ private struct
|
note: the struct `Bar` is defined here
- --> $DIR/offset-of-private.rs:14:5
+ --> $DIR/offset-of-private.rs:16:5
|
LL | struct Bar {
| ^^^^^^^^^^
error[E0603]: struct `Bar` is private
- --> $DIR/offset-of-private.rs:26:19
+ --> $DIR/offset-of-private.rs:33:19
|
LL | offset_of!(m::Bar, private);
| ^^^ private struct
|
note: the struct `Bar` is defined here
- --> $DIR/offset-of-private.rs:14:5
+ --> $DIR/offset-of-private.rs:16:5
|
LL | struct Bar {
| ^^^^^^^^^^
error[E0616]: field `private` of struct `Foo` is private
- --> $DIR/offset-of-private.rs:22:24
+ --> $DIR/offset-of-private.rs:29:24
|
LL | offset_of!(m::Foo, private);
| ^^^^^^^ private field
error[E0616]: field `1` of struct `FooTuple` is private
- --> $DIR/offset-of-private.rs:24:29
+ --> $DIR/offset-of-private.rs:31:29
|
LL | offset_of!(m::FooTuple, 1);
| ^ private field
error[E0616]: field `private` of struct `Bar` is private
- --> $DIR/offset-of-private.rs:26:24
+ --> $DIR/offset-of-private.rs:33:24
|
LL | offset_of!(m::Bar, private);
| ^^^^^^^ private field
-error: aborting due to 5 previous errors
+error[E0616]: field `private` of struct `Foo` is private
+ --> $DIR/offset-of-private.rs:37:31
+ |
+LL | offset_of!(m::Baz, Var1.0.private);
+ | ^^^^^^^ private field
+
+error: aborting due to 6 previous errors
Some errors have detailed explanations: E0603, E0616.
For more information about an error, try `rustc --explain E0603`.