]> git.lizzy.rs Git - rust.git/blobdiff - crates/proc-macro-srv/src/abis/mod.rs
Support the 1.64 nightly proc macro ABI
[rust.git] / crates / proc-macro-srv / src / abis / mod.rs
index 815f2e9638036fdb53874fd28f235a50231bddfa..0f3ebe44635686db18cc97874df50abee79557e6 100644 (file)
@@ -30,6 +30,7 @@
 mod abi_1_57;
 mod abi_1_58;
 mod abi_1_63;
+mod abi_1_64;
 
 use super::dylib::LoadProcMacroDylibError;
 pub(crate) use abi_1_48::Abi as Abi_1_48;
@@ -38,6 +39,7 @@
 pub(crate) use abi_1_57::Abi as Abi_1_57;
 pub(crate) use abi_1_58::Abi as Abi_1_58;
 pub(crate) use abi_1_63::Abi as Abi_1_63;
+pub(crate) use abi_1_64::Abi as Abi_1_64;
 use libloading::Library;
 use proc_macro_api::{ProcMacroKind, RustCInfo};
 
@@ -58,6 +60,7 @@ pub(crate) enum Abi {
     Abi1_57(Abi_1_57),
     Abi1_58(Abi_1_58),
     Abi1_63(Abi_1_63),
+    Abi1_64(Abi_1_64),
 }
 
 impl Abi {
@@ -98,10 +101,14 @@ pub fn from_lib(
                 let inner = unsafe { Abi_1_58::from_lib(lib, symbol_name) }?;
                 Ok(Abi::Abi1_58(inner))
             }
-            (1, 63..) => {
+            (1, 63) => {
                 let inner = unsafe { Abi_1_63::from_lib(lib, symbol_name) }?;
                 Ok(Abi::Abi1_63(inner))
             }
+            (1, 64..) => {
+                let inner = unsafe { Abi_1_64::from_lib(lib, symbol_name) }?;
+                Ok(Abi::Abi1_64(inner))
+            }
             _ => Err(LoadProcMacroDylibError::UnsupportedABI),
         }
     }
@@ -119,6 +126,7 @@ pub fn expand(
             Self::Abi1_57(abi) => abi.expand(macro_name, macro_body, attributes),
             Self::Abi1_58(abi) => abi.expand(macro_name, macro_body, attributes),
             Self::Abi1_63(abi) => abi.expand(macro_name, macro_body, attributes),
+            Self::Abi1_64(abi) => abi.expand(macro_name, macro_body, attributes),
         }
     }
 
@@ -130,6 +138,7 @@ pub fn list_macros(&self) -> Vec<(String, ProcMacroKind)> {
             Self::Abi1_57(abi) => abi.list_macros(),
             Self::Abi1_58(abi) => abi.list_macros(),
             Self::Abi1_63(abi) => abi.list_macros(),
+            Self::Abi1_64(abi) => abi.list_macros(),
         }
     }
 }