about summary refs log tree commit diff
path: root/tests/ui/higher-ranked
diff options
context:
space:
mode:
authorTrevor Gross <tmgross@umich.edu>2025-07-01 06:59:49 +0000
committerKivooeo <Kivooeo123@gmail.com>2025-07-01 16:26:56 +0500
commit3b57db4d87ea589ec05e2c7543fb6ad2df41795f (patch)
treed48c0ffe9e45a1c09922d3a59382363afb8667ea /tests/ui/higher-ranked
parentf46ce66fcc3d6058f90ac5bf0930f940f1e7b0ca (diff)
downloadrust-3b57db4d87ea589ec05e2c7543fb6ad2df41795f.tar.gz
rust-3b57db4d87ea589ec05e2c7543fb6ad2df41795f.zip
Give some UI tests more apropriate names
Prepare for rework done by the rest of RUST-142440.

Co-authored-by: Kivooeo <Kivooeo123@gmail.com>
Diffstat (limited to 'tests/ui/higher-ranked')
-rw-r--r--tests/ui/higher-ranked/higher-ranked-encoding.rs52
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/ui/higher-ranked/higher-ranked-encoding.rs b/tests/ui/higher-ranked/higher-ranked-encoding.rs
new file mode 100644
index 00000000000..eb2aef9cee1
--- /dev/null
+++ b/tests/ui/higher-ranked/higher-ranked-encoding.rs
@@ -0,0 +1,52 @@
+//@ run-pass
+
+#![allow(unused_imports)]
+#![allow(unused_must_use)]
+
+use std::fmt;
+use std::marker::PhantomData;
+
+trait Encoder {
+    type Error;
+}
+
+trait Encodable<S: Encoder> {
+    fn encode(&self, s: &mut S) -> Result<(), S::Error>;
+}
+
+impl<S: Encoder> Encodable<S> for i32 {
+    fn encode(&self, _s: &mut S) -> Result<(), S::Error> {
+        Ok(())
+    }
+}
+
+struct JsonEncoder<'a>(PhantomData<&'a mut ()>);
+
+impl Encoder for JsonEncoder<'_> {
+    type Error = ();
+}
+
+fn encode_json<T: for<'r> Encodable<JsonEncoder<'r>>>(
+    object: &T,
+) -> Result<String, ()> {
+    let s = String::new();
+    {
+        let mut encoder = JsonEncoder(PhantomData);
+        object.encode(&mut encoder)?;
+    }
+    Ok(s)
+}
+
+struct Foo<T: for<'a> Encodable<JsonEncoder<'a>>> {
+    v: T,
+}
+
+impl<T: for<'a> Encodable<JsonEncoder<'a>>> Drop for Foo<T> {
+    fn drop(&mut self) {
+        encode_json(&self.v);
+    }
+}
+
+fn main() {
+    let _ = Foo { v: 10 };
+}