From f561339c9cc31f7bc867416e0060c28816816ba2 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 3 Aug 2023 20:53:17 -0700 Subject: [PATCH 1/5] Update test suite to nightly-2023-08-04 --- tests/common/eq.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/common/eq.rs b/tests/common/eq.rs index 7fe75d49bb..460254ba02 100644 --- a/tests/common/eq.rs +++ b/tests/common/eq.rs @@ -93,7 +93,6 @@ use rustc_ast::ast::Local; use rustc_ast::ast::LocalKind; use rustc_ast::ast::MacCall; use rustc_ast::ast::MacCallStmt; -use rustc_ast::ast::MacDelimiter; use rustc_ast::ast::MacStmtStyle; use rustc_ast::ast::MacroDef; use rustc_ast::ast::MetaItemLit; @@ -558,7 +557,6 @@ spanless_eq_enum!(IsAuto; Yes No); spanless_eq_enum!(LitFloatType; Suffixed(0) Unsuffixed); spanless_eq_enum!(LitIntType; Signed(0) Unsigned(0) Unsuffixed); spanless_eq_enum!(LocalKind; Decl Init(0) InitElse(0 1)); -spanless_eq_enum!(MacDelimiter; Parenthesis Bracket Brace); spanless_eq_enum!(MacStmtStyle; Semicolon Braces NoBraces); spanless_eq_enum!(ModKind; Loaded(0 1 2) Unloaded); spanless_eq_enum!(Movability; Static Movable); From 020fe208099e6159fad781f595081bbf00ad7232 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Fri, 4 Aug 2023 19:18:48 -0700 Subject: [PATCH 2/5] Update test suite to nightly-2023-08-05 --- tests/common/eq.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/common/eq.rs b/tests/common/eq.rs index 460254ba02..68fd1949e4 100644 --- a/tests/common/eq.rs +++ b/tests/common/eq.rs @@ -582,7 +582,7 @@ spanless_eq_enum!(ExprKind; Array(0) ConstBlock(0) Call(0 1) MethodCall(0) Tup(0) Binary(0 1 2) Unary(0 1) Lit(0) Cast(0 1) Type(0 1) Let(0 1 2) If(0 1 2) While(0 1 2) ForLoop(0 1 2 3) Loop(0 1 2) Match(0 1) Closure(0) Block(0 1) Async(0 1) Await(0 1) TryBlock(0) Assign(0 1 2) AssignOp(0 1 2) - Field(0 1) Index(0 1) Underscore Range(0 1 2) Path(0 1) AddrOf(0 1 2) + Field(0 1) Index(0 1 2) Underscore Range(0 1 2) Path(0 1) AddrOf(0 1 2) Break(0 1) Continue(0) Ret(0) InlineAsm(0) OffsetOf(0 1) MacCall(0) Struct(0) Repeat(0 1) Paren(0) Try(0) Yield(0) Yeet(0) Become(0) IncludedBytes(0) FormatArgs(0) Err); From 47dc5d000f15b2c74d097b80810f765d91395aad Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Wed, 16 Aug 2023 20:05:03 -0700 Subject: [PATCH 3/5] Switch to using primitives in macro-generated code through std::primitive --- src/export.rs | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/export.rs b/src/export.rs index 5c06ebdd26..e6d3ffd07c 100644 --- a/src/export.rs +++ b/src/export.rs @@ -6,6 +6,7 @@ pub use std::fmt::{self, Debug, Formatter}; pub use std::hash::{Hash, Hasher}; pub use std::marker::Copy; pub use std::option::Option::{None, Some}; +pub use std::primitive::{bool, str}; pub use std::result::Result::{Err, Ok}; pub use std::stringify; @@ -34,14 +35,4 @@ pub use proc_macro::TokenStream; #[cfg(feature = "printing")] pub use quote::{ToTokens, TokenStreamExt}; -#[allow(non_camel_case_types)] -pub type bool = help::Bool; -#[allow(non_camel_case_types)] -pub type str = help::Str; - -mod help { - pub type Bool = bool; - pub type Str = str; -} - pub struct private(pub(crate) ()); From 1faea079ed6271f806617a624f6b2ad15d838cd2 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Wed, 16 Aug 2023 20:10:47 -0700 Subject: [PATCH 4/5] Partially work around ridiculous rust-analyzer behavior --- src/custom_keyword.rs | 2 +- src/custom_punctuation.rs | 2 +- src/export.rs | 39 +++++++++++++++++++++++++++++++++++---- src/group.rs | 8 ++++++++ src/parse_quote.rs | 1 + src/span.rs | 1 + src/token.rs | 3 +++ 7 files changed, 50 insertions(+), 6 deletions(-) diff --git a/src/custom_keyword.rs b/src/custom_keyword.rs index 379d159e74..9f3ad87029 100644 --- a/src/custom_keyword.rs +++ b/src/custom_keyword.rs @@ -224,7 +224,7 @@ macro_rules! impl_clone_for_custom_keyword { macro_rules! impl_extra_traits_for_custom_keyword { ($ident:ident) => { impl $crate::__private::Debug for $ident { - fn fmt(&self, f: &mut $crate::__private::Formatter) -> $crate::__private::fmt::Result { + fn fmt(&self, f: &mut $crate::__private::Formatter) -> $crate::__private::FmtResult { $crate::__private::Formatter::write_str( f, $crate::__private::concat!( diff --git a/src/custom_punctuation.rs b/src/custom_punctuation.rs index e8cbcd2feb..dba91c17f9 100644 --- a/src/custom_punctuation.rs +++ b/src/custom_punctuation.rs @@ -195,7 +195,7 @@ macro_rules! impl_clone_for_custom_punctuation { macro_rules! impl_extra_traits_for_custom_punctuation { ($ident:ident, $($tt:tt)+) => { impl $crate::__private::Debug for $ident { - fn fmt(&self, f: &mut $crate::__private::Formatter) -> $crate::__private::fmt::Result { + fn fmt(&self, f: &mut $crate::__private::Formatter) -> $crate::__private::FmtResult { $crate::__private::Formatter::write_str(f, $crate::__private::stringify!($ident)) } } diff --git a/src/export.rs b/src/export.rs index e6d3ffd07c..febd322e11 100644 --- a/src/export.rs +++ b/src/export.rs @@ -1,38 +1,69 @@ +#[doc(hidden)] pub use std::clone::Clone; +#[doc(hidden)] pub use std::cmp::{Eq, PartialEq}; +#[doc(hidden)] pub use std::concat; +#[doc(hidden)] pub use std::default::Default; -pub use std::fmt::{self, Debug, Formatter}; +#[doc(hidden)] +pub use std::fmt::Debug; +#[doc(hidden)] pub use std::hash::{Hash, Hasher}; +#[doc(hidden)] pub use std::marker::Copy; +#[doc(hidden)] pub use std::option::Option::{None, Some}; -pub use std::primitive::{bool, str}; +#[doc(hidden)] pub use std::result::Result::{Err, Ok}; +#[doc(hidden)] pub use std::stringify; +#[doc(hidden)] +pub type Formatter<'a> = std::fmt::Formatter<'a>; +#[doc(hidden)] +pub type FmtResult = std::fmt::Result; + +#[doc(hidden)] +pub type bool = std::primitive::bool; +#[doc(hidden)] +pub type str = std::primitive::str; + #[cfg(feature = "printing")] +#[doc(hidden)] pub use quote; -pub use proc_macro2::{Span, TokenStream as TokenStream2}; +#[doc(hidden)] +pub type Span = proc_macro2::Span; +#[doc(hidden)] +pub type TokenStream2 = proc_macro2::TokenStream; #[cfg(feature = "parsing")] +#[doc(hidden)] pub use crate::group::{parse_braces, parse_brackets, parse_parens}; +#[doc(hidden)] pub use crate::span::IntoSpans; #[cfg(all(feature = "parsing", feature = "printing"))] +#[doc(hidden)] pub use crate::parse_quote::parse as parse_quote; #[cfg(feature = "parsing")] +#[doc(hidden)] pub use crate::token::parsing::{peek_punct, punct as parse_punct}; #[cfg(feature = "printing")] +#[doc(hidden)] pub use crate::token::printing::punct as print_punct; #[cfg(feature = "proc-macro")] -pub use proc_macro::TokenStream; +#[doc(hidden)] +pub type TokenStream = proc_macro::TokenStream; #[cfg(feature = "printing")] +#[doc(hidden)] pub use quote::{ToTokens, TokenStreamExt}; +#[doc(hidden)] pub struct private(pub(crate) ()); diff --git a/src/group.rs b/src/group.rs index cccbc467d0..2730233163 100644 --- a/src/group.rs +++ b/src/group.rs @@ -7,21 +7,27 @@ use proc_macro2::Delimiter; // Not public API. #[doc(hidden)] pub struct Parens<'a> { + #[doc(hidden)] pub token: token::Paren, + #[doc(hidden)] pub content: ParseBuffer<'a>, } // Not public API. #[doc(hidden)] pub struct Braces<'a> { + #[doc(hidden)] pub token: token::Brace, + #[doc(hidden)] pub content: ParseBuffer<'a>, } // Not public API. #[doc(hidden)] pub struct Brackets<'a> { + #[doc(hidden)] pub token: token::Bracket, + #[doc(hidden)] pub content: ParseBuffer<'a>, } @@ -29,7 +35,9 @@ pub struct Brackets<'a> { #[cfg(any(feature = "full", feature = "derive"))] #[doc(hidden)] pub struct Group<'a> { + #[doc(hidden)] pub token: token::Group, + #[doc(hidden)] pub content: ParseBuffer<'a>, } diff --git a/src/parse_quote.rs b/src/parse_quote.rs index f5129439c7..59e51b41ea 100644 --- a/src/parse_quote.rs +++ b/src/parse_quote.rs @@ -120,6 +120,7 @@ pub fn parse(token_stream: TokenStream) -> T { } } +#[doc(hidden)] pub trait ParseQuote: Sized { fn parse(input: ParseStream) -> Result; } diff --git a/src/span.rs b/src/span.rs index 50a26b8337..eb2779479a 100644 --- a/src/span.rs +++ b/src/span.rs @@ -1,6 +1,7 @@ use proc_macro2::extra::DelimSpan; use proc_macro2::{Delimiter, Group, Span, TokenStream}; +#[doc(hidden)] pub trait IntoSpans { fn into_spans(self) -> S; } diff --git a/src/token.rs b/src/token.rs index c140571a95..c7e0e1f1a6 100644 --- a/src/token.rs +++ b/src/token.rs @@ -974,6 +974,7 @@ pub(crate) mod parsing { } } + #[doc(hidden)] pub fn punct(input: ParseStream, token: &str) -> Result<[Span; N]> { let mut spans = [input.span(); N]; punct_helper(input, token, &mut spans)?; @@ -1006,6 +1007,7 @@ pub(crate) mod parsing { }) } + #[doc(hidden)] pub fn peek_punct(mut cursor: Cursor, token: &str) -> bool { for (i, ch) in token.chars().enumerate() { match cursor.punct() { @@ -1033,6 +1035,7 @@ pub(crate) mod printing { use proc_macro2::{Delimiter, Group, Ident, Punct, Spacing, Span, TokenStream}; use quote::TokenStreamExt; + #[doc(hidden)] pub fn punct(s: &str, spans: &[Span], tokens: &mut TokenStream) { assert_eq!(s.len(), spans.len()); From b387b13f48e76468a3fc58e55559d2f41fa28a71 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Wed, 16 Aug 2023 20:22:30 -0700 Subject: [PATCH 5/5] Release 2.0.29 --- Cargo.toml | 2 +- src/lib.rs | 2 +- syn.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index cdf3d9a3e5..9394660098 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "syn" -version = "2.0.28" # don't forget to update html_root_url and syn.json +version = "2.0.29" # don't forget to update html_root_url and syn.json authors = ["David Tolnay "] categories = ["development-tools::procedural-macro-helpers", "parser-implementations"] description = "Parser for Rust source code" diff --git a/src/lib.rs b/src/lib.rs index b9fd8073ff..4adaa85873 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -249,7 +249,7 @@ //! dynamic library libproc_macro from rustc toolchain. // Syn types in rustdoc of other crates get linked to here. -#![doc(html_root_url = "https://docs.rs/syn/2.0.28")] +#![doc(html_root_url = "https://docs.rs/syn/2.0.29")] #![cfg_attr(doc_cfg, feature(doc_cfg))] #![allow(non_camel_case_types)] #![allow( diff --git a/syn.json b/syn.json index d7714aac60..aa6b203762 100644 --- a/syn.json +++ b/syn.json @@ -1,5 +1,5 @@ { - "version": "2.0.28", + "version": "2.0.29", "types": [ { "ident": "Abi",