repo_description: An interpreter for Rust's mid-level intermediate representation
code: #![allow(non_upper_case_globals)]
  
  #[doc(no_inline)]
  pub use rustc_span::sym::*;
  
  macro_rules! val {
      ($name:ident) => {
          stringify!($name)
      };
      ($name:ident $value:literal) => {
          $value
      };
  }
  
  macro_rules! generate {
      ($($name:ident $(: $value:literal)? ,)*) => {
          /// To be supplied to `rustc_interface::Config`
          pub const EXTRA_SYMBOLS: &[&str] = &[
              $(
                  val!($name $($value)?),
              )*
          ];
  
          $(
              pub const $name: rustc_span::Symbol = rustc_span::Symbol::new(rustc_span::symbol::PREDEFINED_SYMBOLS_COUNT + ${index()});
          )*
      };
  }
  
  // List of extra symbols to be included in Miri.
  // An alternative content can be specified using a colon after the symbol name.
  generate! {
      sys_mutex_lock,
      sys_mutex_try_lock,
      sys_mutex_unlock,
  }
  