Add upgrade conversion from WeakPtr to SharedPtr
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index 690dbf9..e53e5b6 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -1243,6 +1243,7 @@
     let link_null = format!("{}null", prefix);
     let link_clone = format!("{}clone", prefix);
     let link_downgrade = format!("{}downgrade", prefix);
+    let link_upgrade = format!("{}upgrade", prefix);
     let link_drop = format!("{}drop", prefix);
 
     let begin_span =
@@ -1274,6 +1275,13 @@
                 }
                 __downgrade(shared, weak);
             }
+            unsafe fn __upgrade(weak: *const ::std::ffi::c_void, shared: *mut ::std::ffi::c_void) {
+                extern "C" {
+                    #[link_name = #link_upgrade]
+                    fn __upgrade(weak: *const ::std::ffi::c_void, shared: *mut ::std::ffi::c_void);
+                }
+                __upgrade(weak, shared);
+            }
             unsafe fn __drop(this: *mut ::std::ffi::c_void) {
                 extern "C" {
                     #[link_name = #link_drop]