| David Tolnay | 3caa50a | 2020-04-19 21:25:34 -0700 | [diff] [blame] | 1 | use crate::syntax::namespace::Namespace; |
| David Tolnay | 5ea922a | 2020-04-19 21:58:06 -0700 | [diff] [blame^] | 2 | use crate::syntax::{symbol, ExternFn}; |
| 3 | |
| 4 | const CXXBRIDGE: &str = "cxxbridge02"; |
| 5 | |
| 6 | macro_rules! join { |
| 7 | ($($segment:expr),*) => { |
| 8 | symbol::join(&[$(&$segment),*]) |
| 9 | }; |
| 10 | } |
| David Tolnay | 3caa50a | 2020-04-19 21:25:34 -0700 | [diff] [blame] | 11 | |
| 12 | pub fn extern_fn(namespace: &Namespace, efn: &ExternFn) -> String { |
| David Tolnay | 5ea922a | 2020-04-19 21:58:06 -0700 | [diff] [blame^] | 13 | match &efn.receiver { |
| 14 | Some(receiver) => join!(namespace, CXXBRIDGE, receiver.ident, efn.ident), |
| 15 | None => join!(namespace, CXXBRIDGE, efn.ident), |
| 16 | } |
| 17 | .to_string() |
| David Tolnay | 3caa50a | 2020-04-19 21:25:34 -0700 | [diff] [blame] | 18 | } |