Focus pin mut opaque message on Pin suggestion
In common usage the Pin<&mut T> is going to be the right fix most of the
time. In all of these cases the user is *also* going to receive a
suggestion to implement ExternType. That suggestion will appear pointing
to the opaque extern `type` item.
diff --git a/syntax/check.rs b/syntax/check.rs
index 65c0288..32d147b 100644
--- a/syntax/check.rs
+++ b/syntax/check.rs
@@ -188,7 +188,7 @@
cx.error(
ty,
format!(
- "mutable reference to C++ type requires a pin -- use Pin<&mut {}> or declare the type Trivial in a cxx::ExternType impl",
+ "mutable reference to C++ type requires a pin -- use Pin<&mut {}>",
requires_pin,
),
);
@@ -380,7 +380,7 @@
cx.error(
span,
format!(
- "mutable reference to opaque C++ type requires a pin -- use `self: Pin<&mut {}>` or declare the type Trivial in a cxx::ExternType impl",
+ "mutable reference to opaque C++ type requires a pin -- use `self: Pin<&mut {}>`",
receiver.ty.rust,
),
);
diff --git a/tests/ui/pin_mut_opaque.stderr b/tests/ui/pin_mut_opaque.stderr
index 91a7caa..2de4264 100644
--- a/tests/ui/pin_mut_opaque.stderr
+++ b/tests/ui/pin_mut_opaque.stderr
@@ -1,16 +1,16 @@
-error: mutable reference to C++ type requires a pin -- use Pin<&mut Opaque> or declare the type Trivial in a cxx::ExternType impl
+error: mutable reference to C++ type requires a pin -- use Pin<&mut Opaque>
--> $DIR/pin_mut_opaque.rs:5:19
|
5 | fn f(arg: &mut Opaque);
| ^^^^^^^^^^^
-error: mutable reference to C++ type requires a pin -- use Pin<&mut CxxString> or declare the type Trivial in a cxx::ExternType impl
+error: mutable reference to C++ type requires a pin -- use Pin<&mut CxxString>
--> $DIR/pin_mut_opaque.rs:8:17
|
8 | fn s(s: &mut CxxString);
| ^^^^^^^^^^^^^^
-error: mutable reference to C++ type requires a pin -- use Pin<&mut CxxVector<...>> or declare the type Trivial in a cxx::ExternType impl
+error: mutable reference to C++ type requires a pin -- use Pin<&mut CxxVector<...>>
--> $DIR/pin_mut_opaque.rs:9:17
|
9 | fn v(v: &mut CxxVector<u8>);
@@ -34,13 +34,13 @@
4 | type Opaque;
| ^^^^^^^^^^^
-error: mutable reference to opaque C++ type requires a pin -- use `self: Pin<&mut Opaque>` or declare the type Trivial in a cxx::ExternType impl
+error: mutable reference to opaque C++ type requires a pin -- use `self: Pin<&mut Opaque>`
--> $DIR/pin_mut_opaque.rs:6:14
|
6 | fn g(&mut self);
| ^^^^^^^^^
-error: mutable reference to opaque C++ type requires a pin -- use `self: Pin<&mut Opaque>` or declare the type Trivial in a cxx::ExternType impl
+error: mutable reference to opaque C++ type requires a pin -- use `self: Pin<&mut Opaque>`
--> $DIR/pin_mut_opaque.rs:7:20
|
7 | fn h(self: &mut Opaque);