use super::expr::MacArgs;
use super::path::Path;
use super::span::Span;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct NodeId(pub u32);
impl NodeId {
pub const DUMMY: NodeId = NodeId(u32::MAX);
}
pub type AttrVec = Vec<Attribute>;
#[derive(Debug, Clone, PartialEq)]
pub struct Attribute {
pub kind: AttrKind,
pub id: AttrId,
pub style: AttrStyle,
pub span: Span,
}
pub type AttrId = usize;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum AttrStyle {
Outer, Inner, }
#[derive(Debug, Clone, PartialEq)]
pub enum AttrKind {
Normal(NormalAttr),
DocComment(CommentKind, String),
}
#[derive(Debug, Clone, PartialEq)]
pub struct NormalAttr {
pub item: AttrItem,
}
#[derive(Debug, Clone, PartialEq)]
pub struct AttrItem {
pub path: Path,
pub args: MacArgs, }
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CommentKind {
Line, Block, }
#[derive(Debug, Clone, PartialEq)]
pub enum TokenStream {
Source(String), Empty,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Defaultness {
Default,
Final,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Safety {
Safe,
Unsafe,
Default,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Constness {
Const,
NotConst,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Extern {
None,
Explicit(String), }
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CoroutineKind {
Async,
Gen,
}