Эх сурвалжийг харах

lang: Fix doc strings not working with double quotes (#1537)

Ian Macalinao 3 жил өмнө
parent
commit
8ffb22d936

+ 4 - 2
lang/syn/src/codegen/accounts/__client_accounts.rs

@@ -22,7 +22,8 @@ pub fn generate(accs: &AccountsStruct) -> proc_macro2::TokenStream {
             AccountField::CompositeField(s) => {
                 let name = &s.ident;
                 let docs = if !s.docs.is_empty() {
-                    proc_macro2::TokenStream::from_str(&format!("#[doc = \"{}\"]", s.docs)).unwrap()
+                    proc_macro2::TokenStream::from_str(&format!("#[doc = r#\"{}\"#]", s.docs))
+                        .unwrap()
                 } else {
                     quote!()
                 };
@@ -41,7 +42,8 @@ pub fn generate(accs: &AccountsStruct) -> proc_macro2::TokenStream {
             AccountField::Field(f) => {
                 let name = &f.ident;
                 let docs = if !f.docs.is_empty() {
-                    proc_macro2::TokenStream::from_str(&format!("#[doc = \"{}\"]", f.docs)).unwrap()
+                    proc_macro2::TokenStream::from_str(&format!("#[doc = r#\"{}\"#]", f.docs))
+                        .unwrap()
                 } else {
                     quote!()
                 };

+ 4 - 2
lang/syn/src/codegen/accounts/__cpi_client_accounts.rs

@@ -23,7 +23,8 @@ pub fn generate(accs: &AccountsStruct) -> proc_macro2::TokenStream {
             AccountField::CompositeField(s) => {
                 let name = &s.ident;
                 let docs = if !s.docs.is_empty() {
-                    proc_macro2::TokenStream::from_str(&format!("#[doc = \"{}\"]", s.docs)).unwrap()
+                    proc_macro2::TokenStream::from_str(&format!("#[doc = r#\"{}\"#]", s.docs))
+                        .unwrap()
                 } else {
                     quote!()
                 };
@@ -42,7 +43,8 @@ pub fn generate(accs: &AccountsStruct) -> proc_macro2::TokenStream {
             AccountField::Field(f) => {
                 let name = &f.ident;
                 let docs = if !f.docs.is_empty() {
-                    proc_macro2::TokenStream::from_str(&format!("#[doc = \"{}\"]", f.docs)).unwrap()
+                    proc_macro2::TokenStream::from_str(&format!("#[doc = r#\"{}\"#]", f.docs))
+                        .unwrap()
                 } else {
                     quote!()
                 };

+ 1 - 0
tests/docs/programs/docs/src/lib.rs

@@ -24,6 +24,7 @@ pub struct Hello<'info> {
     pub rent: Sysvar<'info, Rent>,
     /// Composite accounts test.
     /// Multiple lines supported.
+    /// You can also include "double quotes".
     pub other: HelloComposite<'info>,
 }