blob: 1495c93b8d42ddd37a8fb3b9220d3a0a8fdc3485 [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 Tolnayf38cdf62016-09-23 19:07:09 -070021mod data;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070022pub use data::{Field, Variant, VariantData, Visibility, VisRestricted, VisCrate,
23 VisPublic, VisInherited};
David Tolnayf38cdf62016-09-23 19:07:09 -070024
David Tolnayf4bbbd92016-09-23 14:41:55 -070025#[cfg(feature = "full")]
26mod expr;
27#[cfg(feature = "full")]
David Tolnay05120ef2017-03-12 18:29:26 -070028pub use expr::{Arm, BindingMode, Block, CaptureBy, Expr, ExprKind, FieldPat, FieldValue, Local,
Alex Crichton62a0a592017-05-22 13:58:53 -070029 MacStmtStyle, Pat, RangeLimits, Stmt, ExprBox, ExprInPlace,
30 ExprArray, ExprCall, ExprMethodCall, ExprTup, ExprBinary, ExprUnary,
31 ExprCast, ExprType, ExprIf, ExprIfLet, ExprWhile, ExprWhileLet,
32 ExprForLoop, ExprLoop, ExprMatch, ExprClosure, ExprBlock,
33 ExprAssign, ExprAssignOp, ExprField, ExprTupField, ExprIndex,
34 ExprRange, ExprPath, ExprAddrOf, ExprBreak, ExprContinue,
Alex Crichtonccbb45d2017-05-23 10:58:24 -070035 ExprRet, ExprStruct, ExprRepeat, ExprParen, ExprTry, ExprCatch,
36 PatIdent, PatWild, PatStruct, PatTuple, PatTupleStruct, PatPath,
Michael Layzell93c36282017-06-04 20:43:14 -040037 PatBox, PatRef, PatLit, PatRange, PatSlice, InPlaceKind, ExprGroup};
David Tolnayf4bbbd92016-09-23 14:41:55 -070038
David Tolnayb79ee962016-09-04 09:39:20 -070039mod generics;
David Tolnay63e3dee2017-06-03 20:13:17 -070040pub use generics::{Generics, LifetimeDef, TraitBoundModifier, TyParam, TyParamBound,
David Tolnayfa23f572017-01-23 00:19:11 -080041 WhereBoundPredicate, WhereClause, WhereEqPredicate, WherePredicate,
Alex Crichtonccbb45d2017-05-23 10:58:24 -070042 WhereRegionPredicate, BoundLifetimes};
David Tolnaye7678922016-10-13 20:44:03 -070043#[cfg(feature = "printing")]
David Tolnayc879a502017-01-25 15:51:32 -080044pub use generics::{ImplGenerics, Turbofish, TyGenerics};
David Tolnay35161ff2016-09-03 11:33:15 -070045
David Tolnay55337722016-09-11 12:58:56 -070046mod ident;
David Tolnaydaaf7742016-10-03 11:11:43 -070047pub use ident::Ident;
David Tolnay55337722016-09-11 12:58:56 -070048
David Tolnayf38cdf62016-09-23 19:07:09 -070049#[cfg(feature = "full")]
David Tolnayb79ee962016-09-04 09:39:20 -070050mod item;
David Tolnayf38cdf62016-09-23 19:07:09 -070051#[cfg(feature = "full")]
Alex Crichton62a0a592017-05-22 13:58:53 -070052pub use item::{Constness, Defaultness, FnArg, FnDecl, ForeignItemKind, ForeignItem, ItemForeignMod,
David Tolnayc1fea502016-10-30 17:54:02 -070053 ImplItem, ImplItemKind, ImplPolarity, Item, ItemKind, MethodSig, PathListItem,
Alex Crichton62a0a592017-05-22 13:58:53 -070054 TraitItem, TraitItemKind, ViewPath, ItemExternCrate, ItemUse,
55 ItemStatic, ItemConst, ItemFn, ItemMod, ItemTy, ItemEnum,
56 ItemStruct, ItemUnion, ItemTrait, ItemDefaultImpl, ItemImpl,
57 PathSimple, PathGlob, PathList, ForeignItemFn, ForeignItemStatic,
58 TraitItemConst, TraitItemMethod, TraitItemType,
59 ImplItemConst, ImplItemMethod, ImplItemType, ArgSelfRef,
60 ArgSelf, ArgCaptured};
David Tolnay35161ff2016-09-03 11:33:15 -070061
David Tolnay631cb8c2016-11-10 17:16:41 -080062#[cfg(feature = "full")]
63mod krate;
64#[cfg(feature = "full")]
65pub use krate::Crate;
66
David Tolnay63e3dee2017-06-03 20:13:17 -070067mod lifetime;
68pub use lifetime::Lifetime;
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 Tolnayf38cdf62016-09-23 19:07:09 -070078
David Tolnay3cb23a92016-10-07 23:02:21 -070079mod op;
80pub use op::{BinOp, UnOp};
81
David Tolnayb79ee962016-09-04 09:39:20 -070082mod ty;
David Tolnayb8d8ef52016-10-29 14:30:08 -070083pub use ty::{Abi, AngleBracketedParameterData, BareFnArg, BareFnTy, FunctionRetTy, MutTy,
84 Mutability, ParenthesizedParameterData, Path, PathParameters, PathSegment,
Alex Crichton62a0a592017-05-22 13:58:53 -070085 PolyTraitRef, QSelf, Ty, TypeBinding, Unsafety, TySlice, TyArray,
86 TyPtr, TyRptr, TyBareFn, TyNever, TyTup, TyPath, TyTraitObject,
Michael Layzell93c36282017-06-04 20:43:14 -040087 TyImplTrait, TyParen, TyInfer, TyGroup};
Alex Crichtonccbb45d2017-05-23 10:58:24 -070088#[cfg(feature = "printing")]
89pub use ty::PathTokens;
90
Alex Crichton954046c2017-05-30 21:49:42 -070091pub use synom::span::Span;
92pub use synom::tokens;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070093pub use synom::delimited;
David Tolnay35161ff2016-09-03 11:33:15 -070094
David Tolnay55337722016-09-11 12:58:56 -070095#[cfg(feature = "visit")]
96pub mod visit;
97
gnzlbg9ae88d82017-01-26 20:45:17 +010098#[cfg(feature = "fold")]
99pub mod fold;
100
David Tolnay55337722016-09-11 12:58:56 -0700101#[cfg(feature = "parsing")]
David Tolnay55337722016-09-11 12:58:56 -0700102mod parsing {
Ted Driggs054abbb2017-05-01 12:20:52 -0700103 use std::str::FromStr;
104
David Tolnay55337722016-09-11 12:58:56 -0700105 use super::*;
Alex Crichton954046c2017-05-30 21:49:42 -0700106 use synom::{Synom, ParseError};
107 use proc_macro2::TokenStream;
Michael Layzell416724e2017-05-24 21:12:34 -0400108
Alex Crichton954046c2017-05-30 21:49:42 -0700109 macro_rules! traits {
110 ($($ty:ident,)*) => ($(
111 impl From<TokenStream> for $ty {
112 fn from(stream: TokenStream) -> $ty {
113 $ty::parse_all_unwrap(stream)
David Tolnayc94c38a2016-09-05 17:02:03 -0700114 }
David Tolnay55337722016-09-11 12:58:56 -0700115 }
Alex Crichton954046c2017-05-30 21:49:42 -0700116
117 impl FromStr for $ty {
118 type Err = ParseError;
119
120 fn from_str(s: &str) -> Result<Self, Self::Err> {
121 $ty::parse_str_all(s)
122 }
123 }
124 )*)
David Tolnay35161ff2016-09-03 11:33:15 -0700125 }
Michael Layzell5e107ff2017-01-24 19:58:39 -0500126
Alex Crichton954046c2017-05-30 21:49:42 -0700127 traits! {
128 DeriveInput,
129 TyParamBound,
130 Ident,
131 WhereClause,
132 Ty,
Michael Layzellc864f022017-06-03 13:01:33 -0400133 Lit,
Alex Crichton954046c2017-05-30 21:49:42 -0700134 }
David Tolnay0a8972b2017-02-27 02:10:01 -0800135
Michael Layzell5e107ff2017-01-24 19:58:39 -0500136 #[cfg(feature = "full")]
Alex Crichton954046c2017-05-30 21:49:42 -0700137 traits! {
138 Expr,
139 Item,
140 Crate,
141 }
Michael Layzell5e107ff2017-01-24 19:58:39 -0500142}