blob: 55f93efa04dc0ccc940e6ba4c32b4023f9e00853 [file] [log] [blame]
David Tolnayad2836d2017-04-20 10:11:43 -07001#![doc(html_root_url = "https://dtolnay.github.io/syn")]
2
David Tolnay02a8d472017-02-19 12:59:44 -08003#![cfg_attr(feature = "cargo-clippy", allow(large_enum_variant))]
David Tolnayaed77b02016-09-23 20:50:31 -07004
Alex Crichtonccbb45d2017-05-23 10:58:24 -07005extern crate proc_macro2;
6
David Tolnay87d0b442016-09-04 11:52:12 -07007#[cfg(feature = "printing")]
8extern crate quote;
9
Alex Crichtonccbb45d2017-05-23 10:58:24 -070010#[cfg_attr(feature = "parsing", macro_use)]
David Tolnay5fe14fc2017-01-27 16:22:08 -080011extern crate synom;
David Tolnay35161ff2016-09-03 11:33:15 -070012
David Tolnay631cb8c2016-11-10 17:16:41 -080013#[cfg(feature = "aster")]
14pub mod aster;
David Tolnay886d8ea2016-09-13 08:34:07 -070015
Alex Crichton62a0a592017-05-22 13:58:53 -070016#[macro_use]
17mod macros;
18
David Tolnayb79ee962016-09-04 09:39:20 -070019mod attr;
Alex Crichton62a0a592017-05-22 13:58:53 -070020pub use attr::{Attribute, AttrStyle, MetaItem, NestedMetaItem, MetaItemList,
21 MetaNameValue};
David Tolnay35161ff2016-09-03 11:33:15 -070022
David Tolnay3cb23a92016-10-07 23:02:21 -070023mod constant;
Alex Crichton62a0a592017-05-22 13:58:53 -070024pub use constant::{ConstExpr, ConstCall, ConstBinary, ConstUnary, ConstCast,
25 ConstIndex, ConstParen};
David Tolnay3cb23a92016-10-07 23:02:21 -070026
David Tolnayf38cdf62016-09-23 19:07:09 -070027mod data;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070028pub use data::{Field, Variant, VariantData, Visibility, VisRestricted, VisCrate,
29 VisPublic, VisInherited};
David Tolnayf38cdf62016-09-23 19:07:09 -070030
David Tolnayf4bbbd92016-09-23 14:41:55 -070031#[cfg(feature = "full")]
32mod expr;
33#[cfg(feature = "full")]
David Tolnay05120ef2017-03-12 18:29:26 -070034pub use expr::{Arm, BindingMode, Block, CaptureBy, Expr, ExprKind, FieldPat, FieldValue, Local,
Alex Crichton62a0a592017-05-22 13:58:53 -070035 MacStmtStyle, Pat, RangeLimits, Stmt, ExprBox, ExprInPlace,
36 ExprArray, ExprCall, ExprMethodCall, ExprTup, ExprBinary, ExprUnary,
37 ExprCast, ExprType, ExprIf, ExprIfLet, ExprWhile, ExprWhileLet,
38 ExprForLoop, ExprLoop, ExprMatch, ExprClosure, ExprBlock,
39 ExprAssign, ExprAssignOp, ExprField, ExprTupField, ExprIndex,
40 ExprRange, ExprPath, ExprAddrOf, ExprBreak, ExprContinue,
Alex Crichtonccbb45d2017-05-23 10:58:24 -070041 ExprRet, ExprStruct, ExprRepeat, ExprParen, ExprTry, ExprCatch,
42 PatIdent, PatWild, PatStruct, PatTuple, PatTupleStruct, PatPath,
43 PatBox, PatRef, PatLit, PatRange, PatSlice};
David Tolnayf4bbbd92016-09-23 14:41:55 -070044
David Tolnayb79ee962016-09-04 09:39:20 -070045mod generics;
David Tolnaydaaf7742016-10-03 11:11:43 -070046pub use generics::{Generics, Lifetime, LifetimeDef, TraitBoundModifier, TyParam, TyParamBound,
David Tolnayfa23f572017-01-23 00:19:11 -080047 WhereBoundPredicate, WhereClause, WhereEqPredicate, WherePredicate,
Alex Crichtonccbb45d2017-05-23 10:58:24 -070048 WhereRegionPredicate, BoundLifetimes};
David Tolnaye7678922016-10-13 20:44:03 -070049#[cfg(feature = "printing")]
David Tolnayc879a502017-01-25 15:51:32 -080050pub use generics::{ImplGenerics, Turbofish, TyGenerics};
David Tolnay35161ff2016-09-03 11:33:15 -070051
David Tolnay55337722016-09-11 12:58:56 -070052mod ident;
David Tolnaydaaf7742016-10-03 11:11:43 -070053pub use ident::Ident;
David Tolnay55337722016-09-11 12:58:56 -070054
David Tolnayf38cdf62016-09-23 19:07:09 -070055#[cfg(feature = "full")]
David Tolnayb79ee962016-09-04 09:39:20 -070056mod item;
David Tolnayf38cdf62016-09-23 19:07:09 -070057#[cfg(feature = "full")]
Alex Crichton62a0a592017-05-22 13:58:53 -070058pub use item::{Constness, Defaultness, FnArg, FnDecl, ForeignItemKind, ForeignItem, ItemForeignMod,
David Tolnayc1fea502016-10-30 17:54:02 -070059 ImplItem, ImplItemKind, ImplPolarity, Item, ItemKind, MethodSig, PathListItem,
Alex Crichton62a0a592017-05-22 13:58:53 -070060 TraitItem, TraitItemKind, ViewPath, ItemExternCrate, ItemUse,
61 ItemStatic, ItemConst, ItemFn, ItemMod, ItemTy, ItemEnum,
62 ItemStruct, ItemUnion, ItemTrait, ItemDefaultImpl, ItemImpl,
63 PathSimple, PathGlob, PathList, ForeignItemFn, ForeignItemStatic,
64 TraitItemConst, TraitItemMethod, TraitItemType,
65 ImplItemConst, ImplItemMethod, ImplItemType, ArgSelfRef,
66 ArgSelf, ArgCaptured};
David Tolnay35161ff2016-09-03 11:33:15 -070067
David Tolnay631cb8c2016-11-10 17:16:41 -080068#[cfg(feature = "full")]
69mod krate;
70#[cfg(feature = "full")]
71pub use krate::Crate;
72
David Tolnayf4bbbd92016-09-23 14:41:55 -070073mod lit;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070074pub use lit::{Lit, LitKind};
David Tolnayf4bbbd92016-09-23 14:41:55 -070075
David Tolnayf4bbbd92016-09-23 14:41:55 -070076mod mac;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070077pub use mac::{Mac, TokenTree};
David Tolnayf4bbbd92016-09-23 14:41:55 -070078
David Tolnay0e837402016-12-22 17:25:55 -050079mod derive;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070080pub use derive::{Body, DeriveInput, BodyEnum, BodyStruct};
David Tolnayc28a4a52017-02-04 09:50:57 -080081// Deprecated. Use `DeriveInput` instead.
David Tolnay0e837402016-12-22 17:25:55 -050082#[doc(hidden)]
83pub type MacroInput = DeriveInput;
David Tolnayf38cdf62016-09-23 19:07:09 -070084
David Tolnay3cb23a92016-10-07 23:02:21 -070085mod op;
86pub use op::{BinOp, UnOp};
87
David Tolnayb79ee962016-09-04 09:39:20 -070088mod ty;
David Tolnayb8d8ef52016-10-29 14:30:08 -070089pub use ty::{Abi, AngleBracketedParameterData, BareFnArg, BareFnTy, FunctionRetTy, MutTy,
90 Mutability, ParenthesizedParameterData, Path, PathParameters, PathSegment,
Alex Crichton62a0a592017-05-22 13:58:53 -070091 PolyTraitRef, QSelf, Ty, TypeBinding, Unsafety, TySlice, TyArray,
92 TyPtr, TyRptr, TyBareFn, TyNever, TyTup, TyPath, TyTraitObject,
93 TyImplTrait, TyParen, TyInfer};
Alex Crichtonccbb45d2017-05-23 10:58:24 -070094#[cfg(feature = "printing")]
95pub use ty::PathTokens;
96
Alex Crichton954046c2017-05-30 21:49:42 -070097pub use synom::span::Span;
98pub use synom::tokens;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070099pub use synom::delimited;
David Tolnay35161ff2016-09-03 11:33:15 -0700100
David Tolnay55337722016-09-11 12:58:56 -0700101#[cfg(feature = "visit")]
102pub mod visit;
103
gnzlbg9ae88d82017-01-26 20:45:17 +0100104#[cfg(feature = "fold")]
105pub mod fold;
106
David Tolnay55337722016-09-11 12:58:56 -0700107#[cfg(feature = "parsing")]
David Tolnay55337722016-09-11 12:58:56 -0700108mod parsing {
Ted Driggs054abbb2017-05-01 12:20:52 -0700109 use std::str::FromStr;
110
David Tolnay55337722016-09-11 12:58:56 -0700111 use super::*;
Alex Crichton954046c2017-05-30 21:49:42 -0700112 use synom::{Synom, ParseError};
113 use proc_macro2::TokenStream;
Michael Layzell416724e2017-05-24 21:12:34 -0400114
Alex Crichton954046c2017-05-30 21:49:42 -0700115 macro_rules! traits {
116 ($($ty:ident,)*) => ($(
117 impl From<TokenStream> for $ty {
118 fn from(stream: TokenStream) -> $ty {
119 $ty::parse_all_unwrap(stream)
David Tolnayc94c38a2016-09-05 17:02:03 -0700120 }
David Tolnay55337722016-09-11 12:58:56 -0700121 }
Alex Crichton954046c2017-05-30 21:49:42 -0700122
123 impl FromStr for $ty {
124 type Err = ParseError;
125
126 fn from_str(s: &str) -> Result<Self, Self::Err> {
127 $ty::parse_str_all(s)
128 }
129 }
130 )*)
David Tolnay35161ff2016-09-03 11:33:15 -0700131 }
Michael Layzell5e107ff2017-01-24 19:58:39 -0500132
Alex Crichton954046c2017-05-30 21:49:42 -0700133 traits! {
134 DeriveInput,
135 TyParamBound,
136 Ident,
137 WhereClause,
138 Ty,
139 }
David Tolnay0a8972b2017-02-27 02:10:01 -0800140
Michael Layzell5e107ff2017-01-24 19:58:39 -0500141 #[cfg(feature = "full")]
Alex Crichton954046c2017-05-30 21:49:42 -0700142 traits! {
143 Expr,
144 Item,
145 Crate,
146 }
Michael Layzell5e107ff2017-01-24 19:58:39 -0500147}