Skip to content

Commit

Permalink
returns (#1283)
Browse files Browse the repository at this point in the history
  • Loading branch information
tjhance authored Oct 12, 2024
1 parent 1971abb commit 5a1545e
Show file tree
Hide file tree
Showing 28 changed files with 1,078 additions and 15 deletions.
10 changes: 10 additions & 0 deletions dependencies/syn/src/gen/clone.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions dependencies/syn/src/gen/debug.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 10 additions & 2 deletions dependencies/syn/src/gen/eq.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions dependencies/syn/src/gen/fold.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions dependencies/syn/src/gen/hash.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions dependencies/syn/src/gen/visit.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions dependencies/syn/src/gen/visit_mut.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions dependencies/syn/src/item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -947,6 +947,7 @@ ast_struct! {
pub requires: Option<Requires>,
pub recommends: Option<Recommends>,
pub ensures: Option<Ensures>,
pub returns: Option<Returns>,
pub decreases: Option<SignatureDecreases>,
pub invariants: Option<SignatureInvariants>,
pub unwind: Option<SignatureUnwind>,
Expand Down Expand Up @@ -976,6 +977,7 @@ impl Signature {
self.requires = None;
self.recommends = None;
self.ensures = None;
self.returns = None;
self.decreases = None;
self.invariants = None;
self.unwind = None;
Expand Down Expand Up @@ -1725,6 +1727,7 @@ pub mod parsing {
let requires: Option<Requires> = input.parse()?;
let recommends: Option<Recommends> = input.parse()?;
let ensures: Option<Ensures> = input.parse()?;
let returns: Option<Returns> = input.parse()?;
let decreases: Option<SignatureDecreases> = input.parse()?;
let invariants: Option<SignatureInvariants> = input.parse()?;
let unwind: Option<SignatureUnwind> = input.parse()?;
Expand All @@ -1748,6 +1751,7 @@ pub mod parsing {
requires,
recommends,
ensures,
returns,
decreases,
invariants,
unwind,
Expand Down Expand Up @@ -3591,6 +3595,7 @@ mod printing {
self.requires.to_tokens(tokens);
self.recommends.to_tokens(tokens);
self.ensures.to_tokens(tokens);
self.returns.to_tokens(tokens);
self.decreases.to_tokens(tokens);
}
}
Expand Down
2 changes: 1 addition & 1 deletion dependencies/syn/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,7 @@ pub use crate::verus::{
GlobalSizeOf, Invariant, InvariantEnsures, InvariantExceptBreak, InvariantNameSet,
InvariantNameSetAny, InvariantNameSetList, InvariantNameSetNone, ItemBroadcastGroup,
MatchesOpExpr, MatchesOpToken, Mode, ModeExec, ModeGhost, ModeProof, ModeSpec, ModeSpecChecked,
ModeTracked, Open, OpenRestricted, Publish, Recommends, Requires, RevealHide,
ModeTracked, Open, OpenRestricted, Publish, Recommends, Requires, Returns, RevealHide,
SignatureDecreases, SignatureInvariants, SignatureUnwind, Specification, TypeFnSpec, View,
};

Expand Down
2 changes: 2 additions & 0 deletions dependencies/syn/src/token.rs
Original file line number Diff line number Diff line change
Expand Up @@ -714,6 +714,7 @@ define_keywords! {
"requires" pub struct Requires /// `requires`
"recommends" pub struct Recommends /// `recommends`
"ensures" pub struct Ensures /// `ensures`
"returns" pub struct Returns /// `returns`
"decreases" pub struct Decreases /// `decreases`
"opens_invariants" pub struct OpensInvariants /// `opens_invariants`
"invariant_except_break" pub struct InvariantExceptBreak /// `invariant_except_break`
Expand Down Expand Up @@ -938,6 +939,7 @@ macro_rules! export_token_macro {
[requires] => { $crate::token::Requires };
[recommends] => { $crate::token::Recommends };
[ensures] => { $crate::token::Ensures };
[returns] => { $crate::token::Returns };
[decreases] => { $crate::token::Decreases };
[opens_invariants] => { $crate::token::OpensInvariants };
[invariant_except_break] => { $crate::token::InvariantExceptBreak };
Expand Down
38 changes: 38 additions & 0 deletions dependencies/syn/src/verus.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,13 @@ ast_struct! {
}
}

ast_struct! {
pub struct Returns {
pub token: Token![returns],
pub exprs: Specification,
}
}

ast_struct! {
pub struct InvariantExceptBreak {
pub token: Token![invariant_except_break],
Expand Down Expand Up @@ -505,6 +512,7 @@ pub mod parsing {
|| input.peek(Token![invariant])
|| input.peek(Token![invariant_ensures])
|| input.peek(Token![ensures])
|| input.peek(Token![returns])
|| input.peek(Token![decreases])
|| input.peek(Token![via])
|| input.peek(Token![when])
Expand Down Expand Up @@ -586,6 +594,17 @@ pub mod parsing {
}
}

#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
impl Parse for Returns {
fn parse(input: ParseStream) -> Result<Self> {
let token = input.parse()?;
Ok(Returns {
token,
exprs: input.parse()?,
})
}
}

#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
impl Parse for InvariantExceptBreak {
fn parse(input: ParseStream) -> Result<Self> {
Expand Down Expand Up @@ -772,6 +791,17 @@ pub mod parsing {
}
}

#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
impl Parse for Option<Returns> {
fn parse(input: ParseStream) -> Result<Self> {
if input.peek(Token![returns]) {
input.parse().map(Some)
} else {
Ok(None)
}
}
}

#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
impl Parse for Option<InvariantExceptBreak> {
fn parse(input: ParseStream) -> Result<Self> {
Expand Down Expand Up @@ -1262,6 +1292,14 @@ mod printing {
}
}

#[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
impl ToTokens for Returns {
fn to_tokens(&self, tokens: &mut TokenStream) {
self.token.to_tokens(tokens);
self.exprs.to_tokens(tokens);
}
}

#[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
impl ToTokens for InvariantExceptBreak {
fn to_tokens(&self, tokens: &mut TokenStream) {
Expand Down
20 changes: 20 additions & 0 deletions dependencies/syn/syn.json
Original file line number Diff line number Diff line change
Expand Up @@ -5611,6 +5611,20 @@
]
}
},
{
"ident": "Returns",
"features": {
"any": []
},
"fields": {
"token": {
"token": "Returns"
},
"exprs": {
"syn": "Specification"
}
}
},
{
"ident": "RevealHide",
"features": {
Expand Down Expand Up @@ -5758,6 +5772,11 @@
"syn": "Ensures"
}
},
"returns": {
"option": {
"syn": "Returns"
}
},
"decreases": {
"option": {
"syn": "SignatureDecreases"
Expand Down Expand Up @@ -7116,6 +7135,7 @@
"RemEq": "%=",
"Requires": "requires",
"Return": "return",
"Returns": "returns",
"Reveal": "reveal",
"RevealWithFuel": "reveal_with_fuel",
"SelfType": "Self",
Expand Down
Loading

0 comments on commit 5a1545e

Please sign in to comment.