blob: 8c55d6445e69cf09585965f2b2a06fba01185d52 [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 Tolnay63e3dee2017-06-03 20:13:17 -070044pub use generics::{Generics, 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 Tolnay63e3dee2017-06-03 20:13:17 -070071mod lifetime;
72pub use lifetime::Lifetime;
73
David Tolnayf4bbbd92016-09-23 14:41:55 -070074mod lit;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070075pub use lit::{Lit, LitKind};
David Tolnayf4bbbd92016-09-23 14:41:55 -070076
David Tolnayf4bbbd92016-09-23 14:41:55 -070077mod mac;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070078pub use mac::{Mac, TokenTree};
David Tolnayf4bbbd92016-09-23 14:41:55 -070079
David Tolnay0e837402016-12-22 17:25:55 -050080mod derive;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070081pub use derive::{Body, DeriveInput, BodyEnum, BodyStruct};
David Tolnayc28a4a52017-02-04 09:50:57 -080082// Deprecated. Use `DeriveInput` instead.
David Tolnay0e837402016-12-22 17:25:55 -050083#[doc(hidden)]
84pub type MacroInput = DeriveInput;
David Tolnayf38cdf62016-09-23 19:07:09 -070085
David Tolnay3cb23a92016-10-07 23:02:21 -070086mod op;
87pub use op::{BinOp, UnOp};
88
David Tolnayb79ee962016-09-04 09:39:20 -070089mod ty;
David Tolnayb8d8ef52016-10-29 14:30:08 -070090pub use ty::{Abi, AngleBracketedParameterData, BareFnArg, BareFnTy, FunctionRetTy, MutTy,
91 Mutability, ParenthesizedParameterData, Path, PathParameters, PathSegment,
Alex Crichton62a0a592017-05-22 13:58:53 -070092 PolyTraitRef, QSelf, Ty, TypeBinding, Unsafety, TySlice, TyArray,
93 TyPtr, TyRptr, TyBareFn, TyNever, TyTup, TyPath, TyTraitObject,
94 TyImplTrait, TyParen, TyInfer};
Alex Crichtonccbb45d2017-05-23 10:58:24 -070095#[cfg(feature = "printing")]
96pub use ty::PathTokens;
97
Alex Crichton954046c2017-05-30 21:49:42 -070098pub use synom::span::Span;
99pub use synom::tokens;
Alex Crichtonccbb45d2017-05-23 10:58:24 -0700100pub use synom::delimited;
David Tolnay35161ff2016-09-03 11:33:15 -0700101
David Tolnay55337722016-09-11 12:58:56 -0700102#[cfg(feature = "visit")]
103pub mod visit;
104
gnzlbg9ae88d82017-01-26 20:45:17 +0100105#[cfg(feature = "fold")]
106pub mod fold;
107
David Tolnay55337722016-09-11 12:58:56 -0700108#[cfg(feature = "parsing")]
David Tolnay55337722016-09-11 12:58:56 -0700109mod parsing {
Ted Driggs054abbb2017-05-01 12:20:52 -0700110 use std::str::FromStr;
111
David Tolnay55337722016-09-11 12:58:56 -0700112 use super::*;
Alex Crichton954046c2017-05-30 21:49:42 -0700113 use synom::{Synom, ParseError};
114 use proc_macro2::TokenStream;
Michael Layzell416724e2017-05-24 21:12:34 -0400115
Alex Crichton954046c2017-05-30 21:49:42 -0700116 macro_rules! traits {
117 ($($ty:ident,)*) => ($(
118 impl From<TokenStream> for $ty {
119 fn from(stream: TokenStream) -> $ty {
120 $ty::parse_all_unwrap(stream)
David Tolnayc94c38a2016-09-05 17:02:03 -0700121 }
David Tolnay55337722016-09-11 12:58:56 -0700122 }
Alex Crichton954046c2017-05-30 21:49:42 -0700123
124 impl FromStr for $ty {
125 type Err = ParseError;
126
127 fn from_str(s: &str) -> Result<Self, Self::Err> {
128 $ty::parse_str_all(s)
129 }
130 }
131 )*)
David Tolnay35161ff2016-09-03 11:33:15 -0700132 }
Michael Layzell5e107ff2017-01-24 19:58:39 -0500133
Alex Crichton954046c2017-05-30 21:49:42 -0700134 traits! {
135 DeriveInput,
136 TyParamBound,
137 Ident,
138 WhereClause,
139 Ty,
Michael Layzellc864f022017-06-03 13:01:33 -0400140 Lit,
Alex Crichton954046c2017-05-30 21:49:42 -0700141 }
David Tolnay0a8972b2017-02-27 02:10:01 -0800142
Michael Layzell5e107ff2017-01-24 19:58:39 -0500143 #[cfg(feature = "full")]
Alex Crichton954046c2017-05-30 21:49:42 -0700144 traits! {
145 Expr,
146 Item,
147 Crate,
148 }
Michael Layzell5e107ff2017-01-24 19:58:39 -0500149}