blob: f2616d225ba0c076eb347104e8456a897779ac2f [file] [log] [blame]
David Tolnay3caa50a2020-04-19 21:25:34 -07001use crate::syntax::namespace::Namespace;
David Tolnay5ea922a2020-04-19 21:58:06 -07002use crate::syntax::{symbol, ExternFn};
3
4const CXXBRIDGE: &str = "cxxbridge02";
5
6macro_rules! join {
7 ($($segment:expr),*) => {
8 symbol::join(&[$(&$segment),*])
9 };
10}
David Tolnay3caa50a2020-04-19 21:25:34 -070011
12pub fn extern_fn(namespace: &Namespace, efn: &ExternFn) -> String {
David Tolnay5ea922a2020-04-19 21:58:06 -070013 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 Tolnay3caa50a2020-04-19 21:25:34 -070018}