[DEV-7087] TAMER: symbol_dummy! macro

master
Mike Gerwitz 2020-03-24 14:14:05 -04:00
parent f969877324
commit 7a4f6cf9f2
6 changed files with 70 additions and 61 deletions

View File

@ -468,8 +468,8 @@ mod test {
// index to create a gap, and then use an index within that gap
// to ensure that it's not considered an already-defined
// identifier.
let syma = Symbol::new_dummy(SymbolIndex::from_u32(5), "syma");
let symb = Symbol::new_dummy(SymbolIndex::from_u32(1), "symab");
let syma = symbol_dummy!(5, "syma");
let symb = symbol_dummy!(1, "symab");
let nodea = sut.declare(
&syma,
@ -522,7 +522,7 @@ mod test {
fn lookup_by_symbol() -> AsgResult<()> {
let mut sut = Sut::with_capacity(0, 0);
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "lookup");
let sym = symbol_dummy!(1, "lookup");
let node = sut.declare(
&sym,
IdentKind::Meta,
@ -541,7 +541,7 @@ mod test {
fn declare_extern() -> AsgResult<()> {
let mut sut = Sut::with_capacity(0, 0);
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "extern");
let sym = symbol_dummy!(1, "extern");
let node = sut.declare_extern(&sym, IdentKind::Meta)?;
assert_eq!(
@ -556,7 +556,7 @@ mod test {
fn declare_returns_existing() -> AsgResult<()> {
let mut sut = Sut::with_capacity(0, 0);
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "symdup");
let sym = symbol_dummy!(1, "symdup");
let src = Source::default();
let node = sut.declare(&sym, IdentKind::Meta, src.clone())?;
@ -585,7 +585,7 @@ mod test {
fn declare_fails_if_transition_fails() -> AsgResult<()> {
let mut sut = Sut::with_capacity(0, 0);
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "symdup");
let sym = symbol_dummy!(1, "symdup");
let src = Source {
desc: Some("orig".into()),
..Default::default()
@ -618,7 +618,7 @@ mod test {
fn add_fragment_to_ident() -> AsgResult<()> {
let mut sut = Sut::with_capacity(0, 0);
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "tofrag");
let sym = symbol_dummy!(1, "tofrag");
let src = Source {
generated: true,
..Default::default()
@ -649,8 +649,8 @@ mod test {
fn add_ident_dep_to_ident() -> AsgResult<()> {
let mut sut = Sut::with_capacity(0, 0);
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let dep = Symbol::new_dummy(SymbolIndex::from_u32(2), "dep");
let sym = symbol_dummy!(1, "sym");
let dep = symbol_dummy!(2, "dep");
let symnode = sut.declare(&sym, IdentKind::Meta, Source::default())?;
let depnode = sut.declare(&dep, IdentKind::Meta, Source::default())?;
@ -670,8 +670,8 @@ mod test {
fn add_dep_lookup_existing() -> AsgResult<()> {
let mut sut = Sut::with_capacity(0, 0);
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let dep = Symbol::new_dummy(SymbolIndex::from_u32(2), "dep");
let sym = symbol_dummy!(1, "sym");
let dep = symbol_dummy!(2, "dep");
let _ = sut.declare(&sym, IdentKind::Meta, Source::default())?;
let _ = sut.declare(&dep, IdentKind::Meta, Source::default())?;
@ -686,8 +686,8 @@ mod test {
fn add_dep_lookup_missing() -> AsgResult<()> {
let mut sut = Sut::with_capacity(0, 0);
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let dep = Symbol::new_dummy(SymbolIndex::from_u32(2), "dep");
let sym = symbol_dummy!(1, "sym");
let dep = symbol_dummy!(2, "dep");
// both of these are missing
let (symnode, depnode) = sut.add_dep_lookup(&sym, &dep);
@ -703,8 +703,8 @@ mod test {
fn declare_return_missing_symbol() -> AsgResult<()> {
let mut sut = Sut::with_capacity(0, 0);
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let dep = Symbol::new_dummy(SymbolIndex::from_u32(2), "dep");
let sym = symbol_dummy!(1, "sym");
let dep = symbol_dummy!(2, "dep");
// both of these are missing, see add_dep_lookup_missing
let (symnode, _) = sut.add_dep_lookup(&sym, &dep);
@ -746,10 +746,7 @@ mod test {
$(
i += 1;
let sym = Symbol::new_dummy(
SymbolIndex::from_u32(i),
stringify!($name)
);
let sym = symbol_dummy!(i, stringify!($name));
$sut.declare(&sym, $kind, Source::default())?;
let (_, _) = $sut.add_dep_lookup($base, &sym);
@ -768,7 +765,7 @@ mod test {
let mut map = vec![];
let mut retmap = vec![];
let base = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym1");
let base = symbol_dummy!(1, "sym1");
let base_node =
sut.declare(&base, IdentKind::Map, Source::default())?;
@ -807,8 +804,8 @@ mod test {
fn graph_sort_missing_node() -> AsgResult<()> {
let mut sut = Sut::with_capacity(0, 0);
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let dep = Symbol::new_dummy(SymbolIndex::from_u32(2), "dep");
let sym = symbol_dummy!(1, "sym");
let dep = symbol_dummy!(2, "dep");
let sym_node = sut.declare(
&sym,
@ -838,8 +835,8 @@ mod test {
fn graph_sort_no_roots() -> AsgResult<()> {
let mut sut = Sut::with_capacity(0, 0);
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let dep = Symbol::new_dummy(SymbolIndex::from_u32(2), "dep");
let sym = symbol_dummy!(1, "sym");
let dep = symbol_dummy!(2, "dep");
let (_, _) = sut.add_dep_lookup(&sym, &dep);

View File

@ -482,7 +482,7 @@ mod test {
// Note that IdentObject has no variants capable of None
#[test]
fn ident_object_name() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let sym = symbol_dummy!(1, "sym");
assert_eq!(Some(&sym), IdentObject::Missing(&sym).name());
@ -511,7 +511,7 @@ mod test {
#[test]
fn ident_object_kind() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let sym = symbol_dummy!(1, "sym");
let kind = IdentKind::Class(Dim::from_u8(5));
assert_eq!(None, IdentObject::Missing(&sym).kind());
@ -541,7 +541,7 @@ mod test {
#[test]
fn ident_object_src() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let sym = symbol_dummy!(1, "sym");
let src = Source {
desc: Some("test source".into()),
..Default::default()
@ -570,7 +570,7 @@ mod test {
#[test]
fn ident_object_fragment() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let sym = symbol_dummy!(1, "sym");
let text: FragmentText = "foo".into();
assert_eq!(None, IdentObject::Missing(&sym).fragment());
@ -600,7 +600,7 @@ mod test {
#[test]
fn ident_object_as_ident() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let sym = symbol_dummy!(1, "sym");
let ident = IdentObject::Missing(&sym);
// Since we _are_ an IdentObject, we should return a reference
@ -617,13 +617,13 @@ mod test {
#[test]
fn ident_object_missing() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "missing");
let sym = symbol_dummy!(1, "missing");
assert_eq!(IdentObject::Missing(&sym), IdentObject::missing(&sym));
}
#[test]
fn ident_object_ident() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "missing");
let sym = symbol_dummy!(1, "missing");
let kind = IdentKind::Meta;
let src = Source {
desc: Some("ident ctor".into()),
@ -638,7 +638,7 @@ mod test {
#[test]
fn ident_object_extern() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "missing");
let sym = symbol_dummy!(1, "missing");
let kind = IdentKind::Class(Dim::from_u8(1));
assert_eq!(
@ -650,7 +650,7 @@ mod test {
// TODO: incompatible
#[test]
fn redeclare_returns_existing_compatible() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "symdup");
let sym = symbol_dummy!(1, "symdup");
let first =
IdentObject::ident(&sym, IdentKind::Meta, Source::default());
@ -667,7 +667,7 @@ mod test {
#[test]
fn add_fragment_to_ident() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "tofrag");
let sym = symbol_dummy!(1, "tofrag");
let src = Source {
generated: true,
..Default::default()
@ -686,7 +686,7 @@ mod test {
#[test]
fn add_fragment_to_fragment_fails() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "badsym");
let sym = symbol_dummy!(1, "badsym");
let ident =
IdentObject::ident(&sym, IdentKind::Meta, Source::default());
@ -716,8 +716,8 @@ mod test {
// TODO: incompatible
#[test]
fn declare_override_virtual_ident() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "virtual");
let over_src = Symbol::new_dummy(SymbolIndex::from_u32(2), "src");
let sym = symbol_dummy!(1, "virtual");
let over_src = symbol_dummy!(2, "src");
let kind = IdentKind::Meta;
let virt = IdentObject::ident(
@ -743,8 +743,8 @@ mod test {
// TODO: incompatible
#[test]
fn declare_override_virtual_ident_fragment() {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "virtual");
let over_src = Symbol::new_dummy(SymbolIndex::from_u32(2), "src");
let sym = symbol_dummy!(1, "virtual");
let over_src = symbol_dummy!(2, "src");
let kind = IdentKind::Meta;
let virt_src = Source {
@ -783,7 +783,7 @@ mod test {
}
fn add_ident_kind_ignores(given: IdentKind, expected: IdentKind) {
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "tofrag");
let sym = symbol_dummy!(1, "tofrag");
let src = Source {
generated: true,
..Default::default()
@ -823,11 +823,11 @@ mod test {
#[test]
fn source_from_sym_attrs() {
let nsym = Symbol::new_dummy(SymbolIndex::from_u32(1), "name");
let ssym = Symbol::new_dummy(SymbolIndex::from_u32(2), "src");
let psym = Symbol::new_dummy(SymbolIndex::from_u32(3), "parent");
let ysym = Symbol::new_dummy(SymbolIndex::from_u32(4), "yields");
let fsym = Symbol::new_dummy(SymbolIndex::from_u32(5), "from");
let nsym = symbol_dummy!(1, "name");
let ssym = symbol_dummy!(2, "src");
let psym = symbol_dummy!(3, "parent");
let ysym = symbol_dummy!(4, "yields");
let fsym = symbol_dummy!(5, "from");
let attrs = SymAttrs {
pkg_name: Some(&nsym),

View File

@ -155,8 +155,7 @@ mod test {
use crate::sym::{Symbol, SymbolIndex};
lazy_static! {
static ref SYM: Symbol<'static> =
Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
static ref SYM: Symbol<'static> = symbol_dummy!(1, "sym");
}
type Sut<'a, 'i> = Section<'a, IdentObject<'i>>;

View File

@ -20,10 +20,13 @@
//! An incremental rewrite of TAME in Rust.
pub mod global;
#[macro_use]
pub mod sym;
pub mod ir;
pub mod ld;
pub mod obj;
pub mod sym;
#[cfg(test)]
#[macro_use]

View File

@ -453,7 +453,7 @@ mod test {
_ => panic!("did not match expected event"),
}));
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let sym = symbol_dummy!(1, "sym");
sut.write_start_package(&sym, &String::from(""))?;
@ -508,7 +508,7 @@ mod test {
_ => panic!("did not trigger event"),
}));
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let sym = symbol_dummy!(1, "sym");
let obj = IdentObject::IdentFragment(
&sym,
IdentKind::Meta,
@ -530,7 +530,7 @@ mod test {
panic!("callback should not have been called");
}));
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let sym = symbol_dummy!(1, "sym");
let obj = IdentObject::Ident(
&sym,
IdentKind::Cgen(Dim::default()),
@ -551,7 +551,7 @@ mod test {
panic!("callback should not have been called");
}));
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "sym");
let sym = symbol_dummy!(1, "sym");
let obj = IdentObject::Missing(&sym);
let mut section = Section::new();
@ -590,7 +590,7 @@ mod test {
_ => panic!("unexpected event"),
}));
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "random_symbol");
let sym = symbol_dummy!(1, "random_symbol");
let object =
IdentObject::Ident(&sym, IdentKind::Worksheet, Source::default());
let mut sections = Sections::new();
@ -645,11 +645,11 @@ mod test {
_ => panic!("unexpected event"),
}));
let nsym = Symbol::new_dummy(SymbolIndex::from_u32(1), "name");
let ssym = Symbol::new_dummy(SymbolIndex::from_u32(2), "src");
let psym = Symbol::new_dummy(SymbolIndex::from_u32(3), "parent");
let ysym = Symbol::new_dummy(SymbolIndex::from_u32(4), "yields");
let fsym = Symbol::new_dummy(SymbolIndex::from_u32(5), "from");
let nsym = symbol_dummy!(1, "name");
let ssym = symbol_dummy!(2, "src");
let psym = symbol_dummy!(3, "parent");
let ysym = symbol_dummy!(4, "yields");
let fsym = symbol_dummy!(5, "from");
let attrs = SymAttrs {
pkg_name: Some(&nsym),
@ -692,8 +692,8 @@ mod test {
_ => panic!("unexpected event"),
}));
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "source symbol");
let symb = Symbol::new_dummy(SymbolIndex::from_u32(2), "dest symbol");
let sym = symbol_dummy!(1, "source symbol");
let symb = symbol_dummy!(2, "dest symbol");
let mut src = Source::default();
src.from = Some(vec![&symb]);
@ -713,7 +713,7 @@ mod test {
_ => panic!("unexpected write"),
}));
let sym = Symbol::new_dummy(SymbolIndex::from_u32(1), "random_symbol");
let sym = symbol_dummy!(1, "random_symbol");
let object =
IdentObject::Ident(&sym, IdentKind::Worksheet, Source::default());

View File

@ -371,6 +371,8 @@ impl<'i> Symbol<'i> {
/// builds.
/// This separate name is meant to strongly imply that you should not be
/// doing this otherwise.
///
/// See also `dummy_symbol!`.
#[cfg(test)]
#[inline(always)]
pub fn new_dummy(index: SymbolIndex, str: &'i str) -> Symbol<'i> {
@ -615,6 +617,14 @@ pub type FxArenaInterner<'i> = ArenaInterner<'i, FxBuildHasher>;
/// see [`FxArenaInterner`].
pub type DefaultInterner<'i> = FxArenaInterner<'i>;
/// Concisely define dummy symbols for testing.
#[cfg(test)]
macro_rules! symbol_dummy {
($id:expr, $name:expr) => {
Symbol::new_dummy(SymbolIndex::from_u32($id), $name);
};
}
#[cfg(test)]
mod test {
use super::*;