blob: a19581d37a62fc392f82633a68752ffb561cb899 [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 -070025mod expr;
Michael Layzell734adb42017-06-07 16:58:31 -040026pub use expr::{Expr, ExprKind, ExprBox, ExprInPlace, ExprArray, ExprCall,
27 ExprMethodCall, ExprTup, ExprBinary, ExprUnary, ExprCast,
28 ExprType, ExprIf, ExprIfLet, ExprWhile, ExprWhileLet,
Alex Crichton62a0a592017-05-22 13:58:53 -070029 ExprForLoop, ExprLoop, ExprMatch, ExprClosure, ExprBlock,
30 ExprAssign, ExprAssignOp, ExprField, ExprTupField, ExprIndex,
31 ExprRange, ExprPath, ExprAddrOf, ExprBreak, ExprContinue,
Alex Crichtonccbb45d2017-05-23 10:58:24 -070032 ExprRet, ExprStruct, ExprRepeat, ExprParen, ExprTry, ExprCatch,
Michael Layzell734adb42017-06-07 16:58:31 -040033 ExprGroup};
34
35#[cfg(feature = "full")]
36pub use expr::{Arm, BindingMode, Block, CaptureBy, FieldPat, FieldValue, Local,
37 MacStmtStyle, Pat, RangeLimits, Stmt, PatIdent, PatWild,
38 PatStruct, PatTuple, PatTupleStruct, PatPath, PatBox, PatRef,
39 PatLit, PatRange, PatSlice, InPlaceKind};
David Tolnayf4bbbd92016-09-23 14:41:55 -070040
David Tolnayb79ee962016-09-04 09:39:20 -070041mod generics;
David Tolnay63e3dee2017-06-03 20:13:17 -070042pub use generics::{Generics, LifetimeDef, TraitBoundModifier, TyParam, TyParamBound,
David Tolnayfa23f572017-01-23 00:19:11 -080043 WhereBoundPredicate, WhereClause, WhereEqPredicate, WherePredicate,
Alex Crichtonccbb45d2017-05-23 10:58:24 -070044 WhereRegionPredicate, BoundLifetimes};
David Tolnaye7678922016-10-13 20:44:03 -070045#[cfg(feature = "printing")]
David Tolnayc879a502017-01-25 15:51:32 -080046pub use generics::{ImplGenerics, Turbofish, TyGenerics};
David Tolnay35161ff2016-09-03 11:33:15 -070047
David Tolnay55337722016-09-11 12:58:56 -070048mod ident;
David Tolnaydaaf7742016-10-03 11:11:43 -070049pub use ident::Ident;
David Tolnay55337722016-09-11 12:58:56 -070050
David Tolnayf38cdf62016-09-23 19:07:09 -070051#[cfg(feature = "full")]
David Tolnayb79ee962016-09-04 09:39:20 -070052mod item;
David Tolnayf38cdf62016-09-23 19:07:09 -070053#[cfg(feature = "full")]
Alex Crichton62a0a592017-05-22 13:58:53 -070054pub use item::{Constness, Defaultness, FnArg, FnDecl, ForeignItemKind, ForeignItem, ItemForeignMod,
David Tolnayc1fea502016-10-30 17:54:02 -070055 ImplItem, ImplItemKind, ImplPolarity, Item, ItemKind, MethodSig, PathListItem,
Alex Crichton62a0a592017-05-22 13:58:53 -070056 TraitItem, TraitItemKind, ViewPath, ItemExternCrate, ItemUse,
57 ItemStatic, ItemConst, ItemFn, ItemMod, ItemTy, ItemEnum,
58 ItemStruct, ItemUnion, ItemTrait, ItemDefaultImpl, ItemImpl,
59 PathSimple, PathGlob, PathList, ForeignItemFn, ForeignItemStatic,
60 TraitItemConst, TraitItemMethod, TraitItemType,
61 ImplItemConst, ImplItemMethod, ImplItemType, ArgSelfRef,
62 ArgSelf, ArgCaptured};
David Tolnay35161ff2016-09-03 11:33:15 -070063
David Tolnay631cb8c2016-11-10 17:16:41 -080064#[cfg(feature = "full")]
65mod krate;
66#[cfg(feature = "full")]
67pub use krate::Crate;
68
David Tolnay63e3dee2017-06-03 20:13:17 -070069mod lifetime;
70pub use lifetime::Lifetime;
71
David Tolnayf4bbbd92016-09-23 14:41:55 -070072mod lit;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070073pub use lit::{Lit, LitKind};
David Tolnayf4bbbd92016-09-23 14:41:55 -070074
David Tolnayf4bbbd92016-09-23 14:41:55 -070075mod mac;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070076pub use mac::{Mac, TokenTree};
David Tolnayf4bbbd92016-09-23 14:41:55 -070077
David Tolnay0e837402016-12-22 17:25:55 -050078mod derive;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070079pub use derive::{Body, DeriveInput, BodyEnum, BodyStruct};
David Tolnayf38cdf62016-09-23 19:07:09 -070080
David Tolnay3cb23a92016-10-07 23:02:21 -070081mod op;
82pub use op::{BinOp, UnOp};
83
David Tolnayb79ee962016-09-04 09:39:20 -070084mod ty;
David Tolnayb8d8ef52016-10-29 14:30:08 -070085pub use ty::{Abi, AngleBracketedParameterData, BareFnArg, BareFnTy, FunctionRetTy, MutTy,
86 Mutability, ParenthesizedParameterData, Path, PathParameters, PathSegment,
Alex Crichton62a0a592017-05-22 13:58:53 -070087 PolyTraitRef, QSelf, Ty, TypeBinding, Unsafety, TySlice, TyArray,
88 TyPtr, TyRptr, TyBareFn, TyNever, TyTup, TyPath, TyTraitObject,
Michael Layzell93c36282017-06-04 20:43:14 -040089 TyImplTrait, TyParen, TyInfer, TyGroup};
Alex Crichtonccbb45d2017-05-23 10:58:24 -070090#[cfg(feature = "printing")]
91pub use ty::PathTokens;
92
Alex Crichton954046c2017-05-30 21:49:42 -070093pub use synom::span::Span;
94pub use synom::tokens;
Alex Crichtonccbb45d2017-05-23 10:58:24 -070095pub use synom::delimited;
David Tolnay35161ff2016-09-03 11:33:15 -070096
David Tolnay55337722016-09-11 12:58:56 -070097#[cfg(feature = "visit")]
98pub mod visit;
99
gnzlbg9ae88d82017-01-26 20:45:17 +0100100#[cfg(feature = "fold")]
101pub mod fold;
102
David Tolnay55337722016-09-11 12:58:56 -0700103#[cfg(feature = "parsing")]
David Tolnay55337722016-09-11 12:58:56 -0700104mod parsing {
Ted Driggs054abbb2017-05-01 12:20:52 -0700105 use std::str::FromStr;
106
David Tolnay55337722016-09-11 12:58:56 -0700107 use super::*;
Alex Crichton954046c2017-05-30 21:49:42 -0700108 use synom::{Synom, ParseError};
109 use proc_macro2::TokenStream;
Michael Layzell416724e2017-05-24 21:12:34 -0400110
Alex Crichton954046c2017-05-30 21:49:42 -0700111 macro_rules! traits {
112 ($($ty:ident,)*) => ($(
113 impl From<TokenStream> for $ty {
114 fn from(stream: TokenStream) -> $ty {
115 $ty::parse_all_unwrap(stream)
David Tolnayc94c38a2016-09-05 17:02:03 -0700116 }
David Tolnay55337722016-09-11 12:58:56 -0700117 }
Alex Crichton954046c2017-05-30 21:49:42 -0700118
119 impl FromStr for $ty {
120 type Err = ParseError;
121
122 fn from_str(s: &str) -> Result<Self, Self::Err> {
123 $ty::parse_str_all(s)
124 }
125 }
126 )*)
David Tolnay35161ff2016-09-03 11:33:15 -0700127 }
Michael Layzell5e107ff2017-01-24 19:58:39 -0500128
Alex Crichton954046c2017-05-30 21:49:42 -0700129 traits! {
130 DeriveInput,
131 TyParamBound,
132 Ident,
133 WhereClause,
134 Ty,
Michael Layzellc864f022017-06-03 13:01:33 -0400135 Lit,
Alex Crichton954046c2017-05-30 21:49:42 -0700136 }
David Tolnay0a8972b2017-02-27 02:10:01 -0800137
Michael Layzell5e107ff2017-01-24 19:58:39 -0500138 #[cfg(feature = "full")]
Alex Crichton954046c2017-05-30 21:49:42 -0700139 traits! {
140 Expr,
141 Item,
142 Crate,
143 }
Michael Layzell5e107ff2017-01-24 19:58:39 -0500144}