blob: 0519ed1745da246821d50b33cd9cfccf731a61c5 [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
Alex Crichton62a0a592017-05-22 13:58:53 -070013#[macro_use]
14mod macros;
15
David Tolnayb79ee962016-09-04 09:39:20 -070016mod attr;
Alex Crichton62a0a592017-05-22 13:58:53 -070017pub use attr::{Attribute, AttrStyle, MetaItem, NestedMetaItem, MetaItemList,
18 MetaNameValue};
David Tolnay35161ff2016-09-03 11:33:15 -070019
David Tolnay3cb23a92016-10-07 23:02:21 -070020mod constant;
Alex Crichton62a0a592017-05-22 13:58:53 -070021pub use constant::{ConstExpr, ConstCall, ConstBinary, ConstUnary, ConstCast,
22 ConstIndex, ConstParen};
David Tolnay3cb23a92016-10-07 23:02:21 -070023
David Tolnayf38cdf62016-09-23 19:07:09 -070024mod data;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070025pub use data::{Field, Variant, VariantData, Visibility, VisRestricted, VisCrate,
26 VisPublic, VisInherited};
David Tolnayf38cdf62016-09-23 19:07:09 -070027
David Tolnayf4bbbd92016-09-23 14:41:55 -070028#[cfg(feature = "full")]
29mod expr;
30#[cfg(feature = "full")]
David Tolnay05120ef2017-03-12 18:29:26 -070031pub use expr::{Arm, BindingMode, Block, CaptureBy, Expr, ExprKind, FieldPat, FieldValue, Local,
Alex Crichton62a0a592017-05-22 13:58:53 -070032 MacStmtStyle, Pat, RangeLimits, Stmt, ExprBox, ExprInPlace,
33 ExprArray, ExprCall, ExprMethodCall, ExprTup, ExprBinary, ExprUnary,
34 ExprCast, ExprType, ExprIf, ExprIfLet, ExprWhile, ExprWhileLet,
35 ExprForLoop, ExprLoop, ExprMatch, ExprClosure, ExprBlock,
36 ExprAssign, ExprAssignOp, ExprField, ExprTupField, ExprIndex,
37 ExprRange, ExprPath, ExprAddrOf, ExprBreak, ExprContinue,
Alex Crichtonccbb45d2017-05-23 10:58:24 -070038 ExprRet, ExprStruct, ExprRepeat, ExprParen, ExprTry, ExprCatch,
39 PatIdent, PatWild, PatStruct, PatTuple, PatTupleStruct, PatPath,
40 PatBox, PatRef, PatLit, PatRange, PatSlice};
David Tolnayf4bbbd92016-09-23 14:41:55 -070041
David Tolnayb79ee962016-09-04 09:39:20 -070042mod generics;
David Tolnaydaaf7742016-10-03 11:11:43 -070043pub use generics::{Generics, Lifetime, LifetimeDef, TraitBoundModifier, TyParam, TyParamBound,
David Tolnayfa23f572017-01-23 00:19:11 -080044 WhereBoundPredicate, WhereClause, WhereEqPredicate, WherePredicate,
Alex Crichtonccbb45d2017-05-23 10:58:24 -070045 WhereRegionPredicate, BoundLifetimes};
David Tolnaye7678922016-10-13 20:44:03 -070046#[cfg(feature = "printing")]
David Tolnayc879a502017-01-25 15:51:32 -080047pub use generics::{ImplGenerics, Turbofish, TyGenerics};
David Tolnay35161ff2016-09-03 11:33:15 -070048
David Tolnay55337722016-09-11 12:58:56 -070049mod ident;
David Tolnaydaaf7742016-10-03 11:11:43 -070050pub use ident::Ident;
David Tolnay55337722016-09-11 12:58:56 -070051
David Tolnayf38cdf62016-09-23 19:07:09 -070052#[cfg(feature = "full")]
David Tolnayb79ee962016-09-04 09:39:20 -070053mod item;
David Tolnayf38cdf62016-09-23 19:07:09 -070054#[cfg(feature = "full")]
Alex Crichton62a0a592017-05-22 13:58:53 -070055pub use item::{Constness, Defaultness, FnArg, FnDecl, ForeignItemKind, ForeignItem, ItemForeignMod,
David Tolnayc1fea502016-10-30 17:54:02 -070056 ImplItem, ImplItemKind, ImplPolarity, Item, ItemKind, MethodSig, PathListItem,
Alex Crichton62a0a592017-05-22 13:58:53 -070057 TraitItem, TraitItemKind, ViewPath, ItemExternCrate, ItemUse,
58 ItemStatic, ItemConst, ItemFn, ItemMod, ItemTy, ItemEnum,
59 ItemStruct, ItemUnion, ItemTrait, ItemDefaultImpl, ItemImpl,
60 PathSimple, PathGlob, PathList, ForeignItemFn, ForeignItemStatic,
61 TraitItemConst, TraitItemMethod, TraitItemType,
62 ImplItemConst, ImplItemMethod, ImplItemType, ArgSelfRef,
63 ArgSelf, ArgCaptured};
David Tolnay35161ff2016-09-03 11:33:15 -070064
David Tolnay631cb8c2016-11-10 17:16:41 -080065#[cfg(feature = "full")]
66mod krate;
67#[cfg(feature = "full")]
68pub use krate::Crate;
69
David Tolnayf4bbbd92016-09-23 14:41:55 -070070mod lit;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070071pub use lit::{Lit, LitKind};
David Tolnayf4bbbd92016-09-23 14:41:55 -070072
David Tolnayf4bbbd92016-09-23 14:41:55 -070073mod mac;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070074pub use mac::{Mac, TokenTree};
David Tolnayf4bbbd92016-09-23 14:41:55 -070075
David Tolnay0e837402016-12-22 17:25:55 -050076mod derive;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070077pub use derive::{Body, DeriveInput, BodyEnum, BodyStruct};
David Tolnayc28a4a52017-02-04 09:50:57 -080078// Deprecated. Use `DeriveInput` instead.
David Tolnay0e837402016-12-22 17:25:55 -050079#[doc(hidden)]
80pub type MacroInput = DeriveInput;
David Tolnayf38cdf62016-09-23 19:07:09 -070081
David Tolnay3cb23a92016-10-07 23:02:21 -070082mod op;
83pub use op::{BinOp, UnOp};
84
David Tolnayb79ee962016-09-04 09:39:20 -070085mod ty;
David Tolnayb8d8ef52016-10-29 14:30:08 -070086pub use ty::{Abi, AngleBracketedParameterData, BareFnArg, BareFnTy, FunctionRetTy, MutTy,
87 Mutability, ParenthesizedParameterData, Path, PathParameters, PathSegment,
Alex Crichton62a0a592017-05-22 13:58:53 -070088 PolyTraitRef, QSelf, Ty, TypeBinding, Unsafety, TySlice, TyArray,
89 TyPtr, TyRptr, TyBareFn, TyNever, TyTup, TyPath, TyTraitObject,
90 TyImplTrait, TyParen, TyInfer};
Alex Crichtonccbb45d2017-05-23 10:58:24 -070091#[cfg(feature = "printing")]
92pub use ty::PathTokens;
93
Alex Crichton954046c2017-05-30 21:49:42 -070094pub use synom::span::Span;
95pub use synom::tokens;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070096pub use synom::delimited;
David Tolnay35161ff2016-09-03 11:33:15 -070097
David Tolnay55337722016-09-11 12:58:56 -070098#[cfg(feature = "visit")]
99pub mod visit;
100
gnzlbg9ae88d82017-01-26 20:45:17 +0100101#[cfg(feature = "fold")]
102pub mod fold;
103
David Tolnay55337722016-09-11 12:58:56 -0700104#[cfg(feature = "parsing")]
David Tolnay55337722016-09-11 12:58:56 -0700105mod parsing {
Ted Driggs054abbb2017-05-01 12:20:52 -0700106 use std::str::FromStr;
107
David Tolnay55337722016-09-11 12:58:56 -0700108 use super::*;
Alex Crichton954046c2017-05-30 21:49:42 -0700109 use synom::{Synom, ParseError};
110 use proc_macro2::TokenStream;
Michael Layzell416724e2017-05-24 21:12:34 -0400111
Alex Crichton954046c2017-05-30 21:49:42 -0700112 macro_rules! traits {
113 ($($ty:ident,)*) => ($(
114 impl From<TokenStream> for $ty {
115 fn from(stream: TokenStream) -> $ty {
116 $ty::parse_all_unwrap(stream)
David Tolnayc94c38a2016-09-05 17:02:03 -0700117 }
David Tolnay55337722016-09-11 12:58:56 -0700118 }
Alex Crichton954046c2017-05-30 21:49:42 -0700119
120 impl FromStr for $ty {
121 type Err = ParseError;
122
123 fn from_str(s: &str) -> Result<Self, Self::Err> {
124 $ty::parse_str_all(s)
125 }
126 }
127 )*)
David Tolnay35161ff2016-09-03 11:33:15 -0700128 }
Michael Layzell5e107ff2017-01-24 19:58:39 -0500129
Alex Crichton954046c2017-05-30 21:49:42 -0700130 traits! {
131 DeriveInput,
132 TyParamBound,
133 Ident,
134 WhereClause,
135 Ty,
Michael Layzellc864f022017-06-03 13:01:33 -0400136 Lit,
Alex Crichton954046c2017-05-30 21:49:42 -0700137 }
David Tolnay0a8972b2017-02-27 02:10:01 -0800138
Michael Layzell5e107ff2017-01-24 19:58:39 -0500139 #[cfg(feature = "full")]
Alex Crichton954046c2017-05-30 21:49:42 -0700140 traits! {
141 Expr,
142 Item,
143 Crate,
144 }
Michael Layzell5e107ff2017-01-24 19:58:39 -0500145}