diff --git a/tests/ui/single-use-lifetime/issue-117965.rs b/tests/ui/single-use-lifetime/issue-117965.rs
new file mode 100644
index 00000000000..5eb2a03e13d
--- /dev/null
+++ b/tests/ui/single-use-lifetime/issue-117965.rs
@@ -0,0 +1,18 @@
+#![deny(single_use_lifetimes)]
+
+pub enum Data<'a> {
+    Borrowed(&'a str),
+    Owned(String),
+}
+
+impl<'a> Data<'a> {
+    pub fn get<'b: 'a>(&'b self) -> &'a str {
+        //~^ ERROR lifetime parameter `'b` only used once
+        match &self {
+            Self::Borrowed(val) => val,
+            Self::Owned(val) => &val,
+        }
+    }
+}
+
+fn main() {}
diff --git a/tests/ui/single-use-lifetime/issue-117965.stderr b/tests/ui/single-use-lifetime/issue-117965.stderr
new file mode 100644
index 00000000000..e789e183546
--- /dev/null
+++ b/tests/ui/single-use-lifetime/issue-117965.stderr
@@ -0,0 +1,21 @@
+error: lifetime parameter `'b` only used once
+  --> $DIR/issue-117965.rs:9:16
+   |
+LL |     pub fn get<'b: 'a>(&'b self) -> &'a str {
+   |                ^^       -- ...is used only here
+   |                |
+   |                this lifetime...
+   |
+note: the lint level is defined here
+  --> $DIR/issue-117965.rs:1:9
+   |
+LL | #![deny(single_use_lifetimes)]
+   |         ^^^^^^^^^^^^^^^^^^^^
+help: elide the single-use lifetime
+   |
+LL -     pub fn get<'b: 'a>(&'b self) -> &'a str {
+LL +     pub fn get(&self) -> &'a str {
+   |
+
+error: aborting due to 1 previous error
+