summaryrefslogtreecommitdiffstats
path: root/tests/ui/structs
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/structs
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/structs')
-rw-r--r--tests/ui/structs/method-chain-expression-failure.rs31
-rw-r--r--tests/ui/structs/method-chain-expression-failure.stderr15
-rw-r--r--tests/ui/structs/struct-path-associated-type.stderr6
3 files changed, 49 insertions, 3 deletions
diff --git a/tests/ui/structs/method-chain-expression-failure.rs b/tests/ui/structs/method-chain-expression-failure.rs
new file mode 100644
index 000000000..43ebc5bac
--- /dev/null
+++ b/tests/ui/structs/method-chain-expression-failure.rs
@@ -0,0 +1,31 @@
+struct A;
+struct B;
+struct C;
+struct D;
+struct E;
+
+impl A {
+ fn b(&self) -> B { B }
+ fn foo(&self) {}
+}
+
+impl B {
+ fn c(&self) -> C { C }
+}
+
+impl C {
+ fn d(&self) -> D { D }
+ fn foo(&self) {}
+}
+
+impl D {
+ fn e(&self) -> E { E }
+}
+
+impl E {
+ fn f(&self) {}
+}
+fn main() {
+ A.b().c().d().e().foo();
+//~^ ERROR no method named `foo` found for struct `E` in the current scope
+}
diff --git a/tests/ui/structs/method-chain-expression-failure.stderr b/tests/ui/structs/method-chain-expression-failure.stderr
new file mode 100644
index 000000000..ba635ab1f
--- /dev/null
+++ b/tests/ui/structs/method-chain-expression-failure.stderr
@@ -0,0 +1,15 @@
+error[E0599]: no method named `foo` found for struct `E` in the current scope
+ --> $DIR/method-chain-expression-failure.rs:29:23
+ |
+LL | struct E;
+ | -------- method `foo` not found for this struct
+...
+LL | A.b().c().d().e().foo();
+ | - --- ^^^ method not found in `E`
+ | | |
+ | | method `foo` is available on `&C`
+ | method `foo` is available on `&A`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0599`.
diff --git a/tests/ui/structs/struct-path-associated-type.stderr b/tests/ui/structs/struct-path-associated-type.stderr
index acfddaf37..0c9d2aad5 100644
--- a/tests/ui/structs/struct-path-associated-type.stderr
+++ b/tests/ui/structs/struct-path-associated-type.stderr
@@ -48,19 +48,19 @@ error[E0223]: ambiguous associated type
--> $DIR/struct-path-associated-type.rs:32:13
|
LL | let s = S::A {};
- | ^^^^ help: use the fully-qualified path: `<S as Tr>::A`
+ | ^^^^ help: use fully-qualified syntax: `<S as Tr>::A`
error[E0223]: ambiguous associated type
--> $DIR/struct-path-associated-type.rs:33:13
|
LL | let z = S::A::<u8> {};
- | ^^^^ help: use the fully-qualified path: `<S as Tr>::A`
+ | ^^^^ help: use fully-qualified syntax: `<S as Tr>::A`
error[E0223]: ambiguous associated type
--> $DIR/struct-path-associated-type.rs:35:9
|
LL | S::A {} => {}
- | ^^^^ help: use the fully-qualified path: `<S as Tr>::A`
+ | ^^^^ help: use fully-qualified syntax: `<S as Tr>::A`
error: aborting due to 8 previous errors