blob: 8e63ac406937a605d127bfc573e2a6de2d5b57dd [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;
David Tolnay570695e2017-06-03 16:15:13 -07006extern crate unicode_xid;
Alex Crichtonccbb45d2017-05-23 10:58:24 -07007
David Tolnay87d0b442016-09-04 11:52:12 -07008#[cfg(feature = "printing")]
9extern crate quote;
10
Alex Crichtonccbb45d2017-05-23 10:58:24 -070011#[cfg_attr(feature = "parsing", macro_use)]
David Tolnay5fe14fc2017-01-27 16:22:08 -080012extern crate synom;
David Tolnay35161ff2016-09-03 11:33:15 -070013
Alex Crichton62a0a592017-05-22 13:58:53 -070014#[macro_use]
15mod macros;
16
David Tolnayb79ee962016-09-04 09:39:20 -070017mod attr;
Alex Crichton62a0a592017-05-22 13:58:53 -070018pub use attr::{Attribute, AttrStyle, MetaItem, NestedMetaItem, MetaItemList,
19 MetaNameValue};
David Tolnay35161ff2016-09-03 11:33:15 -070020
David Tolnay3cb23a92016-10-07 23:02:21 -070021mod constant;
Alex Crichton62a0a592017-05-22 13:58:53 -070022pub use constant::{ConstExpr, ConstCall, ConstBinary, ConstUnary, ConstCast,
23 ConstIndex, ConstParen};
David Tolnay3cb23a92016-10-07 23:02:21 -070024
David Tolnayf38cdf62016-09-23 19:07:09 -070025mod data;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070026pub use data::{Field, Variant, VariantData, Visibility, VisRestricted, VisCrate,
27 VisPublic, VisInherited};
David Tolnayf38cdf62016-09-23 19:07:09 -070028
David Tolnayf4bbbd92016-09-23 14:41:55 -070029#[cfg(feature = "full")]
30mod expr;
31#[cfg(feature = "full")]
David Tolnay05120ef2017-03-12 18:29:26 -070032pub use expr::{Arm, BindingMode, Block, CaptureBy, Expr, ExprKind, FieldPat, FieldValue, Local,
Alex Crichton62a0a592017-05-22 13:58:53 -070033 MacStmtStyle, Pat, RangeLimits, Stmt, ExprBox, ExprInPlace,
34 ExprArray, ExprCall, ExprMethodCall, ExprTup, ExprBinary, ExprUnary,
35 ExprCast, ExprType, ExprIf, ExprIfLet, ExprWhile, ExprWhileLet,
36 ExprForLoop, ExprLoop, ExprMatch, ExprClosure, ExprBlock,
37 ExprAssign, ExprAssignOp, ExprField, ExprTupField, ExprIndex,
38 ExprRange, ExprPath, ExprAddrOf, ExprBreak, ExprContinue,
Alex Crichtonccbb45d2017-05-23 10:58:24 -070039 ExprRet, ExprStruct, ExprRepeat, ExprParen, ExprTry, ExprCatch,
40 PatIdent, PatWild, PatStruct, PatTuple, PatTupleStruct, PatPath,
41 PatBox, PatRef, PatLit, PatRange, PatSlice};
David Tolnayf4bbbd92016-09-23 14:41:55 -070042
David Tolnayb79ee962016-09-04 09:39:20 -070043mod generics;
David Tolnaydaaf7742016-10-03 11:11:43 -070044pub use generics::{Generics, Lifetime, LifetimeDef, TraitBoundModifier, TyParam, TyParamBound,
David Tolnayfa23f572017-01-23 00:19:11 -080045 WhereBoundPredicate, WhereClause, WhereEqPredicate, WherePredicate,
Alex Crichtonccbb45d2017-05-23 10:58:24 -070046 WhereRegionPredicate, BoundLifetimes};
David Tolnaye7678922016-10-13 20:44:03 -070047#[cfg(feature = "printing")]
David Tolnayc879a502017-01-25 15:51:32 -080048pub use generics::{ImplGenerics, Turbofish, TyGenerics};
David Tolnay35161ff2016-09-03 11:33:15 -070049
David Tolnay55337722016-09-11 12:58:56 -070050mod ident;
David Tolnaydaaf7742016-10-03 11:11:43 -070051pub use ident::Ident;
David Tolnay55337722016-09-11 12:58:56 -070052
David Tolnayf38cdf62016-09-23 19:07:09 -070053#[cfg(feature = "full")]
David Tolnayb79ee962016-09-04 09:39:20 -070054mod item;
David Tolnayf38cdf62016-09-23 19:07:09 -070055#[cfg(feature = "full")]
Alex Crichton62a0a592017-05-22 13:58:53 -070056pub use item::{Constness, Defaultness, FnArg, FnDecl, ForeignItemKind, ForeignItem, ItemForeignMod,
David Tolnayc1fea502016-10-30 17:54:02 -070057 ImplItem, ImplItemKind, ImplPolarity, Item, ItemKind, MethodSig, PathListItem,
Alex Crichton62a0a592017-05-22 13:58:53 -070058 TraitItem, TraitItemKind, ViewPath, ItemExternCrate, ItemUse,
59 ItemStatic, ItemConst, ItemFn, ItemMod, ItemTy, ItemEnum,
60 ItemStruct, ItemUnion, ItemTrait, ItemDefaultImpl, ItemImpl,
61 PathSimple, PathGlob, PathList, ForeignItemFn, ForeignItemStatic,
62 TraitItemConst, TraitItemMethod, TraitItemType,
63 ImplItemConst, ImplItemMethod, ImplItemType, ArgSelfRef,
64 ArgSelf, ArgCaptured};
David Tolnay35161ff2016-09-03 11:33:15 -070065
David Tolnay631cb8c2016-11-10 17:16:41 -080066#[cfg(feature = "full")]
67mod krate;
68#[cfg(feature = "full")]
69pub use krate::Crate;
70
David Tolnayf4bbbd92016-09-23 14:41:55 -070071mod lit;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070072pub use lit::{Lit, LitKind};
David Tolnayf4bbbd92016-09-23 14:41:55 -070073
David Tolnayf4bbbd92016-09-23 14:41:55 -070074mod mac;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070075pub use mac::{Mac, TokenTree};
David Tolnayf4bbbd92016-09-23 14:41:55 -070076
David Tolnay0e837402016-12-22 17:25:55 -050077mod derive;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070078pub use derive::{Body, DeriveInput, BodyEnum, BodyStruct};
David Tolnayc28a4a52017-02-04 09:50:57 -080079// Deprecated. Use `DeriveInput` instead.
David Tolnay0e837402016-12-22 17:25:55 -050080#[doc(hidden)]
81pub type MacroInput = DeriveInput;
David Tolnayf38cdf62016-09-23 19:07:09 -070082
David Tolnay3cb23a92016-10-07 23:02:21 -070083mod op;
84pub use op::{BinOp, UnOp};
85
David Tolnayb79ee962016-09-04 09:39:20 -070086mod ty;
David Tolnayb8d8ef52016-10-29 14:30:08 -070087pub use ty::{Abi, AngleBracketedParameterData, BareFnArg, BareFnTy, FunctionRetTy, MutTy,
88 Mutability, ParenthesizedParameterData, Path, PathParameters, PathSegment,
Alex Crichton62a0a592017-05-22 13:58:53 -070089 PolyTraitRef, QSelf, Ty, TypeBinding, Unsafety, TySlice, TyArray,
90 TyPtr, TyRptr, TyBareFn, TyNever, TyTup, TyPath, TyTraitObject,
91 TyImplTrait, TyParen, TyInfer};
Alex Crichtonccbb45d2017-05-23 10:58:24 -070092#[cfg(feature = "printing")]
93pub use ty::PathTokens;
94
Alex Crichton954046c2017-05-30 21:49:42 -070095pub use synom::span::Span;
96pub use synom::tokens;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070097pub use synom::delimited;
David Tolnay35161ff2016-09-03 11:33:15 -070098
David Tolnay55337722016-09-11 12:58:56 -070099#[cfg(feature = "visit")]
100pub mod visit;
101
gnzlbg9ae88d82017-01-26 20:45:17 +0100102#[cfg(feature = "fold")]
103pub mod fold;
104
David Tolnay55337722016-09-11 12:58:56 -0700105#[cfg(feature = "parsing")]
David Tolnay55337722016-09-11 12:58:56 -0700106mod parsing {
Ted Driggs054abbb2017-05-01 12:20:52 -0700107 use std::str::FromStr;
108
David Tolnay55337722016-09-11 12:58:56 -0700109 use super::*;
Alex Crichton954046c2017-05-30 21:49:42 -0700110 use synom::{Synom, ParseError};
111 use proc_macro2::TokenStream;
Michael Layzell416724e2017-05-24 21:12:34 -0400112
Alex Crichton954046c2017-05-30 21:49:42 -0700113 macro_rules! traits {
114 ($($ty:ident,)*) => ($(
115 impl From<TokenStream> for $ty {
116 fn from(stream: TokenStream) -> $ty {
117 $ty::parse_all_unwrap(stream)
David Tolnayc94c38a2016-09-05 17:02:03 -0700118 }
David Tolnay55337722016-09-11 12:58:56 -0700119 }
Alex Crichton954046c2017-05-30 21:49:42 -0700120
121 impl FromStr for $ty {
122 type Err = ParseError;
123
124 fn from_str(s: &str) -> Result<Self, Self::Err> {
125 $ty::parse_str_all(s)
126 }
127 }
128 )*)
David Tolnay35161ff2016-09-03 11:33:15 -0700129 }
Michael Layzell5e107ff2017-01-24 19:58:39 -0500130
Alex Crichton954046c2017-05-30 21:49:42 -0700131 traits! {
132 DeriveInput,
133 TyParamBound,
134 Ident,
135 WhereClause,
136 Ty,
Michael Layzellc864f022017-06-03 13:01:33 -0400137 Lit,
Alex Crichton954046c2017-05-30 21:49:42 -0700138 }
David Tolnay0a8972b2017-02-27 02:10:01 -0800139
Michael Layzell5e107ff2017-01-24 19:58:39 -0500140 #[cfg(feature = "full")]
Alex Crichton954046c2017-05-30 21:49:42 -0700141 traits! {
142 Expr,
143 Item,
144 Crate,
145 }
Michael Layzell5e107ff2017-01-24 19:58:39 -0500146}