summaryrefslogtreecommitdiffstats
path: root/tests/ui/self/elision
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/self/elision')
-rw-r--r--tests/ui/self/elision/nested-item.rs13
-rw-r--r--tests/ui/self/elision/nested-item.stderr38
2 files changed, 51 insertions, 0 deletions
diff --git a/tests/ui/self/elision/nested-item.rs b/tests/ui/self/elision/nested-item.rs
new file mode 100644
index 000000000..4bcb645c6
--- /dev/null
+++ b/tests/ui/self/elision/nested-item.rs
@@ -0,0 +1,13 @@
+// Regression test for #110899.
+// When looking for the elided lifetime for `wrap`,
+// we must not consider the lifetimes in `bar` as candidates.
+
+fn wrap(self: Wrap<{ fn bar(&self) {} }>) -> &() {
+ //~^ ERROR `self` parameter is only allowed in associated functions
+ //~| ERROR `self` parameter is only allowed in associated functions
+ //~| ERROR missing lifetime specifier
+ //~| ERROR cannot find type `Wrap` in this scope
+ &()
+}
+
+fn main() {}
diff --git a/tests/ui/self/elision/nested-item.stderr b/tests/ui/self/elision/nested-item.stderr
new file mode 100644
index 000000000..752fd8233
--- /dev/null
+++ b/tests/ui/self/elision/nested-item.stderr
@@ -0,0 +1,38 @@
+error: `self` parameter is only allowed in associated functions
+ --> $DIR/nested-item.rs:5:9
+ |
+LL | fn wrap(self: Wrap<{ fn bar(&self) {} }>) -> &() {
+ | ^^^^ not semantically valid as function parameter
+ |
+ = note: associated functions are those in `impl` or `trait` definitions
+
+error: `self` parameter is only allowed in associated functions
+ --> $DIR/nested-item.rs:5:29
+ |
+LL | fn wrap(self: Wrap<{ fn bar(&self) {} }>) -> &() {
+ | ^^^^^ not semantically valid as function parameter
+ |
+ = note: associated functions are those in `impl` or `trait` definitions
+
+error[E0106]: missing lifetime specifier
+ --> $DIR/nested-item.rs:5:46
+ |
+LL | fn wrap(self: Wrap<{ fn bar(&self) {} }>) -> &() {
+ | ^ expected named lifetime parameter
+ |
+ = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
+help: consider using the `'static` lifetime
+ |
+LL | fn wrap(self: Wrap<{ fn bar(&self) {} }>) -> &'static () {
+ | +++++++
+
+error[E0412]: cannot find type `Wrap` in this scope
+ --> $DIR/nested-item.rs:5:15
+ |
+LL | fn wrap(self: Wrap<{ fn bar(&self) {} }>) -> &() {
+ | ^^^^ not found in this scope
+
+error: aborting due to 4 previous errors
+
+Some errors have detailed explanations: E0106, E0412.
+For more information about an error, try `rustc --explain E0106`.