split macros across crates

This commit is contained in:
Aleksey Kladov 2019-01-31 21:09:43 +03:00
parent ad80a0c551
commit 40feacdeb9
11 changed files with 57 additions and 29 deletions

14
Cargo.lock generated
View file

@ -940,8 +940,9 @@ dependencies = [
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
"ra_arena 0.1.0",
"ra_db 0.1.0",
"ra_macros 0.1.0",
"ra_mbe 0.1.0",
"ra_syntax 0.1.0",
"ra_tt 0.1.0",
"relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"test_utils 0.1.0",
@ -1019,9 +1020,10 @@ dependencies = [
]
[[package]]
name = "ra_macros"
name = "ra_mbe"
version = "0.1.0"
dependencies = [
"ra_tt 0.1.0",
"rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"smol_str 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -1052,6 +1054,14 @@ dependencies = [
"text_unit 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "ra_tt"
version = "0.1.0"
dependencies = [
"rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"smol_str 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "ra_vfs"
version = "0.1.0"

View file

@ -16,7 +16,8 @@ join_to_string = "0.1.3"
ra_syntax = { path = "../ra_syntax" }
ra_arena = { path = "../ra_arena" }
ra_db = { path = "../ra_db" }
ra_macros = { path = "../ra_macros" }
mbe = { path = "../ra_mbe", package = "ra_mbe" }
tt = { path = "../ra_tt", package = "ra_tt" }
test_utils = { path = "../test_utils" }
[dev-dependencies]

View file

@ -14,7 +14,6 @@ use ra_syntax::{
SyntaxKind::*,
ast::{self, NameOwner},
};
use ra_macros::{tt, mbe};
use crate::{HirDatabase, MacroCallId};

View file

@ -1,17 +0,0 @@
macro_rules! impl_froms {
($e:ident: $($v:ident), *) => {
$(
impl From<$v> for $e {
fn from(it: $v) -> $e {
$e::$v(it)
}
}
)*
}
}
pub mod tt;
pub mod mbe;
mod tt_cursor;
mod mbe_parser;
mod mbe_expander;

10
crates/ra_mbe/Cargo.toml Normal file
View file

@ -0,0 +1,10 @@
[package]
edition = "2018"
name = "ra_mbe"
version = "0.1.0"
authors = ["Aleksey Kladov <aleksey.kladov@gmail.com>"]
[dependencies]
tt = { path = "../ra_tt", package = "ra_tt" }
rustc-hash = "1.0.0"
smol_str = "0.1.9"

View file

@ -1,6 +1,22 @@
macro_rules! impl_froms {
($e:ident: $($v:ident), *) => {
$(
impl From<$v> for $e {
fn from(it: $v) -> $e {
$e::$v(it)
}
}
)*
}
}
mod tt_cursor;
mod mbe_parser;
mod mbe_expander;
use smol_str::SmolStr;
pub(crate) use crate::tt::{Delimiter, Punct};
pub use tt::{Delimiter, Punct};
pub use crate::{
mbe_parser::parse,

View file

@ -1,7 +1,7 @@
use rustc_hash::FxHashMap;
use smol_str::SmolStr;
use crate::{mbe, tt, tt_cursor::TtCursor};
use crate::{self as mbe, tt_cursor::TtCursor};
pub fn exapnd(rules: &mbe::MacroRules, input: &tt::Subtree) -> Option<tt::Subtree> {
rules.rules.iter().find_map(|it| expand_rule(it, input))

View file

@ -1,5 +1,4 @@
use crate::{tt, mbe};
use crate::tt_cursor::TtCursor;
use crate::{self as mbe, tt_cursor::TtCursor};
/// This module parses a raw `tt::TokenStream` into macro-by-example token
/// stream. This is a *mostly* identify function, expect for handling of
@ -43,7 +42,7 @@ fn parse_subtree(tt: &tt::Subtree) -> Option<mbe::Subtree> {
mbe::Leaf::from(mbe::Literal { text: text.clone() }).into()
}
},
tt::TokenTree::Subtree(subtree) => parse_subtree(subtree)?.into(),
tt::TokenTree::Subtree(subtree) => parse_subtree(&subtree)?.into(),
};
token_trees.push(child);
}

View file

@ -1,5 +1,3 @@
use crate::tt;
#[derive(Clone)]
pub(crate) struct TtCursor<'a> {
subtree: &'a tt::Subtree,

View file

@ -1,6 +1,6 @@
[package]
edition = "2018"
name = "ra_macros"
name = "ra_tt"
version = "0.1.0"
authors = ["Aleksey Kladov <aleksey.kladov@gmail.com>"]

View file

@ -1,3 +1,15 @@
macro_rules! impl_froms {
($e:ident: $($v:ident), *) => {
$(
impl From<$v> for $e {
fn from(it: $v) -> $e {
$e::$v(it)
}
}
)*
}
}
use std::fmt;
use smol_str::SmolStr;